这是我学习/理解安全(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黑客/< >等......注射处理得当。
答案 0 :(得分:3)
使用https继续下一个问题!
答案 1 :(得分:1)
这就是“摘要”身份验证如何适用于HTTP。
如果您对学习感兴趣,read more about the Digest Authentication method.
摘要式身份验证确实可以防止中间人学习用户密码。但是,它很容易受到嗅探器也会改变流量的攻击。主动攻击者可以让用户提供凭证,但可以根据需要修改请求的正文。
此外,正如您所描述的那样,服务器存储用户的密码。这是不好的。基于密码的身份验证只应存储来自密码的不可逆转的内容。
我建议您使用SSL并了解如何散列服务器端存储的密码。