在jQuery ajax请求中保护和/或加密(隐藏)POST变量

时间:2011-03-16 14:53:49

标签: php javascript jquery security

我正在处理的Web应用程序上有一个邀请表单。此邀请表单要求用户选择电子邮件帐户,然后输入用户名和密码。这些细节通过使用jQuery的ajax请求作为POST变量发送。问题是我可以使用mozilla插件FireBug以纯文本形式查看输入的密码(以及其他POST变量)。

我相信能够以纯文本(在Firebug中)看到密码并不理想。反正我可以阻止这个吗?我尝试从通过HTTPS提供的页面进行ajax调用,并通过HTTPS发出请求,但我仍然可以在Firebug中以纯文本形式查看所有POST变量。

有没有办法在客户端加密这些变量然后在服务器端解密它们?还是有其他解决方案吗?

6 个答案:

答案 0 :(得分:15)

如果您使用的是HTTPS,则无需担心(只要HTTPS设置正确,但这与此问题无关)。

您可以在Firebug中看到这些值,因为Firebug可以看到浏览器发送的标题,但除了浏览器之外没有人可以读取这些数据。

实际上,您无法隐藏Firebug的价值,因为浏览器必须知道要发送的内容, Firebug可以访问您的浏览器可以的所有内容。

答案 1 :(得分:3)

您将始终能够在Firebug中查看所有变量。这只意味着任何人只有在使用Firebug时才会看到他自己的密码,因此它不是漏洞。

不要重新发明TLS / SSL。只需使用HTTPS,它就可以做到:在客户端加密这些变量,然后在服务器端解密它们。

答案 2 :(得分:1)

您正在客户端使用Firebug进行测试,如果您使用HTTPS发送帖子数据,那么在发送到服务器时将采用加密形式,因此您不必担心中间不可能如果你使用HTTPS,那就嗅探攻击以纯文本方式检索密码。

您可以在firebug中看到密码字段,因为它在客户端浏览器上,并且您作为开发人员可以看到所有数据。

答案 3 :(得分:1)

可能此页面有用:http://www.jcryption.org

该库允许加密数据和数据。使用ajax get / post发送,因为变量是加密的,很难猜测数据。

图书馆使用openssl的公钥/私钥概念。

我希望这会对某人有所帮助

答案 4 :(得分:0)

您的变量是针对工具或软件加密的,其行为类似于中间人。您的浏览器或浏览器插件(如firebug或google chromes网络请求和响应监控面板)并不像中间人那样行事。相反,它们是有效的客户端,具有解密服务器响应或在发送到服务器之前加密数据的密钥。

如果您希望测试数据是否加密,可以使用fiddler或charles等工具作为Web调试代理。通过这些工具,您可以轻松查看进入https服务器的数据,并且服务器的响应已加密。

答案 5 :(得分:0)

我更喜欢使用jsencrypt

您可以之前使用公共密钥加密所有输入字段并发布数据。 然后使用私钥在服务器端对其进行解密。

注意:为了提高安全性,最好使用jsencrypt签名Hashed内容(使用ex:cryptojs)以获得更好的安全性。

希望能有所帮助,