使用其他用户在受信任站点中种植的javascript函数很容易窃取会话ID cookie。这种攻击有哪些可能的对策?
拒绝客户端的所有javascript脚本可能很困难,因为几乎所有站点都使用js。服务器端有哪些可能的对策?是否可以在会话ID值中包含客户端ip-address的哈希值,以防止从其他主机使用有效的会话ID?这种方法有意义吗?
在您的宝贵答案中提到的其中一个资源中,提出了一种解决方案,其中会话ID在每次请求后更改。 app服务器/框架是否已经支持这样的功能?特别是Django / python怎么样?
答案 0 :(得分:4)
将IP映射到会话映射真的很尴尬,因为您没有保证人们不使用代理,这些代理可以轻松更改IP。
您可以做的最好的事情是使用SSL,并制作您的Cookie HTTP-only。
答案 1 :(得分:2)
您需要指定某些Cookie适用于某些主机,域,子域或其他任何内容。 Cookies支持。
我认为您无法访问其他域名的Cookie。
答案 2 :(得分:1)
是否可以包含哈希值 会话中的客户端ip-address id值可以防止有效 会话ID是否可以从其他主机使用? 这种方法有意义吗?
这可以在某些情况下阻止会话劫持,但是在攻击者计算机和受害者计算机位于同一网络的情况下,由于连接来自同一IP地址,因此不会执行任何操作。
服务器端有哪些可能的对策?
如果某人连接到公共网络,使用SSL将有助于防止会话劫持。
您可以查看代码并确保代码中没有XSS缺陷。
您还可以确保用于存储会话的Cookie具有HTTP Only标记。
答案 3 :(得分:1)
使用例如这个简单的javascript代码段来过滤您的javascript(来自输入):
功能清理(html){
`return String(html)
.replace(/&(?!\ w +;)/ g,'&')
。更换(/
.replace(/> / g,'>')
.replace(/“/ g,'”');
}
你必须也有很好的过滤(输入)服务器端。例如,PHP有filter extension。
答案 4 :(得分:1)
这称为XSS。最好的解决方案是防止首先在客户端上种植JavaScript代码。
一个有趣的解决方案是为每个用户操作提供基于令牌的身份验证。查看OWASP CSRF page了解更多信息。
编辑:正如评论所说,令牌无助于缓解会话劫持问题。正如维基百科关于Session Hijacking的文章所述,the best solution是每次页面重新加载时都可以旋转会话ID。