Security 不使用SSL保护密码身份验证

Security 不使用SSL保护密码身份验证,security,authentication,ssl,Security,Authentication,Ssl,我知道这是个坏主意,但我必须这么做。我离得到一个新服务器还有8周的时间,在那里我可以有一个工作的SSL应用程序。所以在接下来的8周里,我需要让别人很难窃听我的应用程序 我的一个想法是,当用户输入他们的电子邮件地址和密码并单击登录时,我会向数据库中写入一个非常独特的随机密码(可能是timestamp+ipaddress)到他们登录详细信息旁边的“latestAttempt”列。当请求到达登录脚本页面时,它会检查该IP地址是否在最近1分钟内尝试登录。这至少可以证明登录详细信息来自登录页面 我知道我不

我知道这是个坏主意,但我必须这么做。我离得到一个新服务器还有8周的时间,在那里我可以有一个工作的SSL应用程序。所以在接下来的8周里,我需要让别人很难窃听我的应用程序

我的一个想法是,当用户输入他们的电子邮件地址和密码并单击登录时,我会向数据库中写入一个非常独特的随机密码(可能是timestamp+ipaddress)到他们登录详细信息旁边的“latestAttempt”列。当请求到达登录脚本页面时,它会检查该IP地址是否在最近1分钟内尝试登录。这至少可以证明登录详细信息来自登录页面

我知道我不能阻止它,但我想让它变得困难。在我等待使用SSL的新服务器时,有没有其他方法可以暂时阻止窃听者

更新


我明白为什么这个建议行不通,我不知道为什么我会想到它,老实说,这是一堆垃圾

你提出的解决方案不会有帮助。SSL的目的是防止在通过网络将密码从浏览器发送到服务器时窃听密码,并且再多的时间戳/检查重复登录也无法阻止这种情况


在缺少SSL的情况下,从最真实的意义上讲,您无法做很多真正安全的事情。在将密码发布到服务器之前,使用javascript对密码进行置乱可能至少在一个小方面有所帮助。如果你能找到一个实现真正加密算法的javascript库就更好了,因为加密方法是公开的,所以最好使用公钥/私钥。

不清楚是什么让你认为确保用户来自特定的前一页可以防止攻击。为什么攻击者不能这样做


如果您想要更安全一点(尽管不是完美的),请从基于表单的身份验证切换到HTTP摘要身份验证。这将稍微破坏您的用户界面,因为它依赖于浏览器中实现的弹出窗口(并且不容易让您在不关闭浏览器的情况下注销),但至少用户名和密码不会被清晰地传输。

您提出的解决方案将无法阻止攻击。我用来获取身份验证令牌的用户名和密码,在web应用程序上下文中,我们通常称之为cookie值。如果此身份验证令牌以纯文本传输,则您违反了。简言之,这一提议的安全系统是毫无价值的

我不确定我是否遵守你最近的计划。比如说,我坐在你的一个用户旁边的一家咖啡店里,嗅探他们的用户名和密码。那天晚些时候,我使用他们的凭据登录到您的应用程序。你的计划会如何阻止我?IP在大多数情况下都是动态的。JavaScript加密也不理想@布鲁诺-因此出现了“你能做的不多”、“小方法”的标记。我知道没有修复方法,但我只是想在接下来的几周里得到一些帮助,直到我们的SSL恢复。JS的想法虽然很弱,但可能会奏效。如果它看起来是混乱的,它可能,只是可能,让他们不再去寻找进一步的解读it@Marting也不要忽视鲁克的回答。如果您的会话令牌是纯文本的,则游戏仍然结束。扰乱会话令牌不会有帮助,因为您只将会话令牌的预期值更改为其他值;它仍然很容易被劫持。就这一点而言,同样的情况也适用于密码——我们在javascript中所做的就是更改期望值。为了成功地保护消息,您需要真正的加密(而不仅仅是模糊处理),它涉及一个只有消息双方都知道的秘密。密码的不同之处在于,SSL上线后,假设在此之前您没有被黑客攻击,现有密码将继续工作。