我正在尝试保护用户的密码,但我注意到提交表单时发送的标题信息对所有人都可见。它是安全的还是有办法保证它的安全?我知道如何在JS中添加md5到密码,但MD5不再安全,我不能在JS中添加一个盐,因为每个人都可以找到盐是什么。那么你有什么建议呢?我想我很快就会在我的网站(https://)上使用SSL,但我不确定,所以我需要另一种方法来保证通信安全。即使我有一个SSL,所以它来自HostGator的商业计划,如果我没有弄错, SSL不能在移动设备上运行。 (使用AJAX通过邮寄发送的表格)。
答案 0 :(得分:6)
AJAX无关紧要。
保护登录页面的唯一方法是使用SSL或TLS,它们可以在现代移动浏览器上正常使用。
答案 1 :(得分:0)
我还认为大多数移动浏览器都可以使用HTTPS。但是,如果您确定它不在您的情况下,您可以考虑使用公钥加密js库。我想起了pidCrypt。但是只有如果真的有必要的话,在我认为的大多数情况下都相当矫枉过正。
答案 2 :(得分:0)
你可以从这里下载http://pajhome.org.uk/crypt/md5/sha512.html sha512.js,然后声明一个这样的函数:
function formhash(form, password)
{
$(form).append('<input name="p" type="hidden" >');
var p = $('input[name="p"]');
p.val(hex_sha512(password.val()));
password.val('');
return p.val();
}
所以之后您可以使用ajax将数据发送到您的服务器:
var dataObj = {
'username': $('input[name="username"]').val(),
'password': formhash($('.form-signin'), $('input[name="password"]'))
};
,您的密码将被加密发送。当然,您也应该使用https登录表单页面。
答案 3 :(得分:0)
移动应用程序和浏览器支持SSL - 这不是您的问题。如果您的主机不支持SSL,则需要关闭它。
客户端加密将不会为您提供额外的安全性。它可能会为您提供额外的安全性。
可以用来从客户端获取密码的所有攻击也可用于从客户端获取散列或加密的密码 - 您的系统除了该值之外,不知道它不是用户的浏览器生成它。因此,客户端加密不会为您的网站提供任何额外的安全性。
如果您尝试保护用户,则视角不同。通过使用客户端加密,您可以提出您永远不知道用户密码的论点,以便在系统遭到破坏时保护用户。您的系统仍然会受到损害,但使用该密码的所有其他系统都不会受到影响。
对于身份验证机制,您需要传输层安全性,几乎没有办法解决它。