我正在处理的Web应用程序上有一个邀请表单。此邀请表单要求用户选择电子邮件帐户,然后输入用户名和密码。这些细节通过使用jQuery的ajax请求作为POST变量发送。问题是我可以使用mozilla插件FireBug以纯文本形式查看输入的密码(以及其他POST变量)。
我相信能够以纯文本(在Firebug中)看到密码并不理想。反正我可以阻止这个吗?我尝试从通过HTTPS提供的页面进行ajax调用,并通过HTTPS发出请求,但我仍然可以在Firebug中以纯文本形式查看所有POST变量。
有没有办法在客户端加密这些变量然后在服务器端解密它们?还是有其他解决方案吗?
答案 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)