简单安全登录php / javascript

时间:2013-02-14 16:53:01

标签: php javascript security sha1

我想创建一个安全登录,所以我想在将其作为POST参数发送之前加密密码。我正在使用SHA1 javascript函数。

然后我意识到如果有人截获加密密码,他可以立即使用它。将其作为post参数发送到相同的URL。

如何确保密码来自登录输入字段?也许用PHP会话?我还不想使用安全的http。任何人都有一个简单的选择吗?

4 个答案:

答案 0 :(得分:10)

  

如何确保密码来自登录输入字段?

你不能。

最接近的是对CSRF的通常防御......但这只会阻止人们诱骗用户将数据从他们的网站提交到您的网站。它不会保护密码。

  

我还不想使用安全的http。任何人都有一个简单的选择吗?

HTTPS 这个简单的选项。

答案 1 :(得分:3)

唯一可以帮助你的是为每个会话创建临时salt,然后在客户端加密密码,然后使用在服务器端保存的相同盐解密密码,该方法就像一个唯一的令牌用于防止CRSF,因为即使是中间人也捕获了密码,他/她无法对其进行解密。

最后,您需要创建另一个(不同的算法)来保存数据库上的密码,上面的概念是在客户端和服务器之间保护密码。

说明:

客户 - >请求 - >服务器

服务器 - >响应(发送独特的盐o与JavaScript一起使用,如session_id()) - >  客户端

客户 - > JavaScript执行 - >使用唯一盐加密密码

客户 - > POST - >服务器

服务器 - >用保存的盐解密密码 - >提取密码

如果上述想法错误,我希望有人纠正我!

注意: AES可以用于JS和PHP

Salt = Key

可用工具:

AES Advanced Encryption Standard

jsaes: AES in JavaScript

PHP AES DEC/ENC

phpAES

答案 2 :(得分:2)

通过网络向服务器发送SHA1密码有效地使SHA1哈希成为真实密码。

除了没有优势之外,你实际上使你的安全更糟;如果我使用SHA1哈希窃取您的数据库,我现在可以直接使用这些哈希,而无需强制哈希来获取“真实”密码。

HTTPS是保证密码以纯文本格式发送的唯一真正方法。当您转移到HTTPS时,请确保将这些SHA1哈希值更改为bcrypt。

如果您担心额外的SSL证书费用,如果您不担心浏览器错误或愿意将证书添加到受信任列表(http://resources.arcgis.com/en/help/main/10.1/index.html#//0154000005q6000000),您还可以生成自签名证书

答案 3 :(得分:-1)

请向全世界和所有客户提供帮助并继续加密密码,然后再通过非加密HTTP发送密码。

这个问题有两个方面,在这种情况下,双方是您自己和您所服务的客户。不幸的是,大多数人在许多网站上使用相同的密码,事实是我们没有内存容量来处理我们用数百个密码登录的数百个网站,我们作为最终用户选择两个或三个并继续我们的生活。如果您通过HTTP发送客户密码而不先加密它们并且实际上有一些东西可以获得,那么您肯定会出错。与您的客户相信他们的密码(可能与他们登录银行的密码相同)不会落入黑客的手中,更重要的是与网站开发相关的任何人的手,因为恶作剧的IT员工确实存在并且在将这些密码发送到您的应用程序以便在服务器端进行处理时,很容易捕获这些密码......

我不愿意想到有多少Web开发人员阅读本文并决定在客户端加密,这应该是我们做的第一件事,它是对用户的保护,而不是你自己......保护你的数据库可以通过多种程序来完成,每个安全分析师都会对自己做什么或不做什么有自己的看法,无论是做什么,还是做了什么。客户端加密不应该辩论。

相关问题