2012-06-06 89 views
2

我对不使用SSL的PHP​​会话安全性感兴趣。通过数据包嗅探保护经过身份验证的PHP会话免受会话劫持攻击

令我惊讶的是,如果一个中间人嗅探用户和服务器之间交换的数据包,即使它被认证,也很容易窃取会话。我知道有一些策略可以限制损失,例如,登录/注销时更改sessionid,记录/检查用户系统参数(例如操作系统,浏览器)。

但是,如果在一个已经过身份验证并且没有注销的会话期间(没有超时的时间),攻击者能够获得会话ID,然后他可以轻易地劫持会话(尽可能我理解这个问题)。

我想到了一种可能的解决方案,在加密的登录验证期间,服务器可以向客户端发送随机会话密码。会话密码仅在该登录会话期间有效。因此,在该会话期间交换的每个消息都必须使用会话密码(例如MD5(会话密码+消息内容))进行签名。

问题是否修复?假设攻击者无法对最初的登录交换进行密码分析,这种方法的缺点是什么?

+2

没有违法,但考虑只使用SSL ......它可能耗资约$ 49 - 每年$ 100,但是它比不必支付开发者维护自定义'安全scheme' –

+0

+1便宜得多。此外,@JoãoSalada,随机会话密码如何在没有SSL的情况下发送? –

+0

没有冒犯! ;)我只是想从头开发我的博客,所以我可以理解这个主要问题。但是当你不需要保密(我的意见)时,使用ssl是一个巨大的矫枉过正。该方案虽然我对看起来很简单,但...这就是为什么我要问,如果它解决了问题,或者是有缺陷的..从保密 – Leaurus

回答

3

您提出的“签名”解决方案需要客户端行为 - 因此您需要一个可以执行签名的客户端应用程序。

如果您正在编写Flash/Java applet/Unity或任何这些插件,那么您可以按照您的计划进行操作,因为您可以更密切地控制客户端并添加例程来执行签名。

但我假设你不使用插件将HTML页面传递给浏览器?如果是这样,你有两个选择,真的。首先是SSL(你排除在外),因为它内置在浏览器中。第二个是Javascript。为了最大限度地提高安全性,您需要以某种方式模仿SSL,包括加密(公共)密钥/ algorythm的客户端存储(以便它们不会与消息一起旅行)。你希望尽可能接近公钥/私钥+握手SSL - 这绝对不是什么大事。正如sarnold所建议的那样,您需要一个强大的加密密钥。查看http://www.jcryption.org/作为例子 - 其他人出现与谷歌搜索。

如果这是一个有点过度的顶部,你最可行的解决方案可能会使用JS谈判简单encyption algorthym:你发送一个“关键”在浏览器中的cookie,存储的“钥匙”,通过AJAX的所有通信并根据该密钥创建一个更简单的签名机制(以及可能在初次握手期间与客户共享的另一个变量)。任何不解码或匹配的密钥,然后杀死整个会话,然后重新开始。


sarnold在他的回答中有很好的一点:md5和SHA-1是要避免的;有的甚至认为SHA256是越来越wesk今天的电脑,但考虑到你需要implment在JS的解决方案,为速度,你可以依赖的东西为“piddly”(我的比喻)为MD5。所以你最好的防御措施是准确的记录和暴力/错误检测。任何邮件到达乱码(你可以检查任何一端)应该被记录和监控。太多的故障和IP地址被禁止 - 并保持记录。

+0

我在想第二个选择,那个网站就是我想要的。 ;)作为SSL和TLS方案一部分的公钥/私钥方法存在的问题是它需要一个昂贵的签名证书。如果在另一方面,一个使用不是由那些Verisign所签发的证书,等浏览器会回报你一个大的警告,大部分的人会自行消失。这是我的博客... – Leaurus

+1

证书就可以了低至约20 $每年。例如:http://www.hostnexus.com/solutions/certificates-compare.php。价格的唯一区别是真正与他们一起出现的保险和挂锁。你会花费更多的时间去尝试让非ssl解决方案工作。但如果一个人去,很高兴我能帮上忙。 – Robbie

2

你会想要使用类似HMAC而不是简单的MD5--而且你想要使用SHA256或更高版本,因为MD5已知存在弱点,而SHA-1也开始感觉疲软。

但即使发生这些变化,您的方案仍然容易受到replay attacks的攻击,攻击者可能会一遍又一遍地重新发送请求,并且您的服务器会很乐意每次都重新执行它。如果它只是发布最新的海滩之旅的照片,但如果它发送1000美元的购买请求,这是没有什么大不了的,但有人会得到比预期更多的小马。

所以你需要添加一个nonce协议。

有可能存在其他问题 - 毕竟,在三次SSL之后,TLS现在处于1.2版本。只要坚持使用TLS并且很高兴。

+0

是,MD5是容易受到攻击的前缀。我以MD5为例。不过谢谢你。只是想知道该计划是否有一些优势。以及关于随机性,你是绝对正确的。谢谢;) – Leaurus