asp.net – Request.IsLocal是安全还是可以欺骗?
|
我有一个网页,在页面加载时检查加密的cookie以确定用户身份.但是,当我在我的开发盒上本地测试页面时,我无法访问该cookie. 以前我使用appsetting来告诉页面它是否处于开发模式,并且在dev模式下它将加载固定的用户身份.然后我发现了Request.IsLocal 我可以这样检查一下: if(Request.IsLocal){
FormsAuthentication.SetAuthCookie("testUser",false);
}else{
FormsAuthentication.SetAuthCookie(/*EncryptedCookieValue*/,false);
}
这样安全吗?恶意用户有什么方法可以欺骗IsLocal吗? 解决方法我认为你的实际问题是,你如何才有开发功能?你可以使用:Environment.UserInteractive 在IIS或Windows服务中运行时返回false,当它们是用户界面(即开发时的Visual Studio)时返回true. 我认为这比DEBUG预处理器变量更好,因为行为更加一致,您可能会意外地将dll的DEBUG版本上传到您的实时环境,除非您的构建/发布过程非常紧密. 根据经验,从客户端信任任何东西都不是一个好主意. 以下SO帖子介绍了您不应该信任它的一些原因: 参考 public bool IsLocal {
get {
String remoteAddress = UserHostAddress;
// if unknown,assume not local
if (String.IsNullOrEmpty(remoteAddress))
return false;
// check if localhost
if (remoteAddress == "127.0.0.1" || remoteAddress == "::1")
return true;
// compare with local address
if (remoteAddress == LocalAddress)
return true;
return false;
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – ASP.NET Core App中project.json中的build
- asp.net-web-api – Web API中的OData POST的媒体资源支持
- asp.net – Mysql中int(10)的最大大小是多少?
- 使用asp.net控件创建无序列表?
- asp.net – 什么Request.Params [“key”]呢?
- asp.net-web-api – WebApi 2超出最大请求长度
- 如何衡量我在ASP.NET中的能力水平或技能?
- asp.net-mvc-3 – _AppStart正在执行时无法创建存储范围
- asp.net – 在根站点下托管的应用程序中配置子目录验证模式
- 哪些ASP.NET生命周期事件可以异步?
