【发布时间】:2013-09-25 16:20:40
【问题描述】:
我有一个网页,它在页面加载时检查加密的 cookie 以确定用户身份。但是,当我在我的开发机器上本地测试页面时,我无法访问该 cookie。
之前我使用了一个 appsetting 来告诉页面它是否处于开发模式,当处于开发模式时它会加载一个固定的用户身份。然后我发现了 Request.IsLocal
我可以像这样简单地检查:
if(Request.IsLocal){
FormsAuthentication.SetAuthCookie("testUser", false);
}else{
FormsAuthentication.SetAuthCookie(/*EncryptedCookieValue*/, false);
}
这安全吗?恶意用户有没有办法欺骗 IsLocal?
【问题讨论】:
-
Request.IsLocal当“请求发起者的 IP 地址是 127.0.0.1 或 [...] 与服务器的 IP 地址相同时返回true”。所以它可以被欺骗,因为IP地址可以被欺骗,当有某种代理或负载平衡服务器在同一台服务器上工作时,它就会完全撒谎。