简单的安全登录php/javascript

Simple secure login php / javascript

本文关键字:javascript php 登录 安全 简单      更新时间:2023-09-26

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

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

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

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

你不能。

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

我还不想使用安全的http。有人有简单的选择吗?

HTTPS是一个简单的选项。

唯一可以帮助您的是为每个会话创建临时salt,然后在客户端加密密码,然后使用服务器端保存的salt解密密码,这种方法就像一个用于防止CRSF的唯一令牌,因为即使是中间人也无法解密密码。

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

解释:

客户端->请求->服务器

服务器->响应(发送与session_id()等JavaScript一起使用的唯一salt)->客户端

客户端->JavaScript执行->使用唯一的salt 加密密码

客户端->POST->服务器

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

若上面的想法是错误的,我希望有人能纠正我!

注意:AES可用于JS和PHP

Salt=密钥

可用工具:

AES高级加密标准

jsaes:JavaScript 中的AES

PHP AES DEC/ENC

phpAES

通过网络将SHA1密码发送到服务器可以有效地使SHA1哈希成为真正的密码。

除了没有优势之外,你实际上还在让你的安全感变差;如果我用SHA1哈希窃取了你的数据库,我现在可以直接使用这些哈希登录,甚至不必强行使用哈希来获得"真实"密码。

HTTPS是防止密码以纯文本形式发送的唯一真正方法。当您传输到HTTPS时,请确保将这些SHA1哈希更改为bcrypt。

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

在通过非加密HTTP发送密码之前,请帮全世界和您的所有客户一个忙,并继续加密密码。

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

我不愿意想到有多少网络开发人员阅读了这篇文章,并决定不在客户端加密,这应该是我们首先要做的事情之一,这是对用户的保护,而不是对你自己的保护。。。保护你的数据库可以通过多种程序来完成,每个安全分析师都有自己的意见,可以做什么,也可以不做什么。客户端加密不应该争论。