我知道这是一个坏主意,但我需要这样做。我距离获得一台新的服务器还有8周的时间,我可以使用SSL的应用程序。因此,在接下来的8周内,我需要让某人难以窃听我的应用程序。
我的一个想法是,当用户输入他们的电子邮件地址和密码并点击登录时,我在数据库中写了一个非常独特的随机密码(可能是时间戳+ ipaddress)到列'latestAttempt',在他们的登录名旁边细节。当请求到达登录脚本页面时,它会检查该IP地址是否在最近1分钟内尝试登录。这至少应该证明登录详细信息来自登录页面。
我知道我无法阻止它,但我想让它变得困难。有没有其他方法可以暂时推迟窃听者,而我等待我的新服务器使用SSL?
更新
我理解为什么这个提议不起作用,我不确定为什么它甚至在我的脑海中说实话,这是一堆垃圾!
答案 0 :(得分:6)
您提出的解决方案无济于事。 SSL的目的是防止密码被窃听,因为密码是通过网络从浏览器发送到您的服务器的,并且没有任何时间戳/检查重复登录将有助于阻止密码。
在缺乏SSL的情况下,从最真实的意义上来说,你所能做的并不是很多,这是非常安全的。至少在很小的方面可能有用的是在将密码发布到服务器之前使用javascript来加密密码。如果你能找到一个实现真正加密算法的javascript库,最好更好地使用公钥/私钥,因为加密方法是公开的。
答案 1 :(得分:2)
目前尚不清楚是什么让您认为确保用户来自特定的上一页会阻止攻击。攻击者为什么不能这样做?
如果您想要更安全的东西(尽管不完美),请从基于表单的身份验证切换到HTTP摘要身份验证。这将打破您的用户界面,因为它依赖于浏览器中实现的弹出窗口(并且不会轻易地允许您在不关闭浏览器的情况下注销),但至少,用户名和密码不会明确传达。
答案 2 :(得分:1)
您建议的解决方案不会阻止攻击。用于获取身份验证令牌的用户名和密码,我们通常在Web应用程序的上下文中将其称为cookie值。如果此身份验证令牌以纯文本格式传输,则表示您违反了owasp a9。简而言之,这个提议的安全系统绝对毫无价值。