试图用PHP安全地发送帖子数据的缺陷

时间:2011-01-26 22:38:32

标签: php security post

这是我学习/理解安全(ish)发送帖子数据的黑客尝试。建设性的批评欢迎。

这只是理论,而不是很多代码。另外,我在示例中使用PHP的SHA1(),只是因为我花时间了解它的内部。我知道其他(更好的?)算法(例如:MD5())因此换掉你最喜欢的。

1)服务器生成随机盐rand(min,max),根据请求将页面与页面一起发送,计算并存储SHA1(un:pw:salt)以及请求的服务器时间戳(到数据库)

1a)注意:盐是可以嗅探的,所以假设黑客知道盐(你可以取消SHA1()某些东西,以获取SHA1数据吗?)

2)用户输入用户名和密码点击提交

3)提交触发一个JavaScript函数(打包用于混淆,是的,我知道,这不会增加真正的安全性)SHA1(un:pw:salt),然后只将结果发布到服务器

3a)注意:加密凭证是可以嗅探的

4)服务器检查收到的凭据是否与数据库中存储的凭据匹配,然后到达  在初始请求后的一段时间内(约5分钟左右)。允许/拒绝做出决定。

进一步的请求改变了盐,所以即使有人嗅探了加密数据,它也会变得毫无用处 a)用户发出新的页面请求 b)时间表到期

思想?

编辑:同样,假设所有的条带标签/ SQL黑客/< >等......注射处理得当。

2 个答案:

答案 0 :(得分:3)

使用https继续下一个问题!

答案 1 :(得分:1)

这就是“摘要”身份验证如何适用于HTTP。

如果您对学习感兴趣,read more about the Digest Authentication method.

摘要式身份验证确实可以防止中间人学习用户密码。但是,它很容易受到嗅探器也会改变流量的攻击。主动攻击者可以让用户提供凭证,但可以根据需要修改请求的正文。

此外,正如您所描述的那样,服务器存储用户的密码。这是不好的。基于密码的身份验证只应存储来自密码的不可逆转的内容。

我建议您使用SSL并了解如何散列服务器端存储的密码。