我在ASP.NET应用程序中使用表单身份验证,我意识到我可以在我已经登录后复制身份验证cookie内容,在另一个浏览器的另一个实例中手动创建cookie,之后,应用程序从第二个浏览器自动登录。
我想知道是否有办法防止这种情况(我不知道......就像使浏览器实例更喜欢认证券一样),就像现在一样,有人可以窃取cookie并在不同的计算机上使用它来访问同一个帐户而无需登录或密码。
答案 0 :(得分:1)
你可以做的很多。 Jeff Prosise在这里有一篇有趣的文章tries creating an HttpModule。
但是你可以看到这不是那么有效:
... User-Agent标头是最后一个 防线。和用户代理 标题很容易被某人欺骗 意识到User-Agent标头是 用于验证会话ID。
我个人不会因此而失眠。
答案 1 :(得分:0)
带上用户代理并将其嵌入到您的Cookie中?显然,这只有在你的cookie被加密时才有效。
例如
string plainFormCookie=GetUsername()+etc()+Request.UserAgent;
// encrypt cookie afterwards
答案 2 :(得分:0)
不,浏览器不会发送任何可用于精确定位单个浏览器实例的唯一标识符。您可以存储UserAgent字符串并验证每次用户请求页面以降低身份盗用的风险,但这不会消除它。
要建立真正安全的连接,您必须使用SSL。