php发布密码例程?

时间:2010-02-17 13:22:22

标签: php encryption passwords

我很想知道如何保持php密码安全。

主要问题是:如何从登录表单中将密码作为安全字符串发布?

我一直在检查其他网站如何做到这一点,例如Facebook的。当我登录到facebook时,我根本没有看到我的密码,它看起来像是一个很长的加密字符串。

如何在发布前将密码字段转换为加密字符串?这是用ajax完成的吗?

干杯 柯

3 个答案:

答案 0 :(得分:4)

检查HTTPS protocol

  

安全超文本传输​​协议 HTTPS )是超文本传输​​协议与SSL / TLS协议的组合,用于提供服务器的加密和安全标识。 HTTPS连接通常用于万维网上的支付交易以及公司信息系统中的敏感交易。 HTTPS 不应与RFC 2660中指定的安全HTTP(S-HTTP)混淆。

如果您无法为您的网站启用HTTPS并且不想发布明文密码(出于明显的安全原因),请考虑使用Challenge-Response Authentication

只需google for various PHP/Javascript implementations并选择一个你喜欢的。

答案 1 :(得分:2)

如果您无法使用安全连接,可以在发送之前加密密码。

JavaScript的伪代码:

onSubmit:
  PASSWORDFIELD.value = md5(PASSWORDFIELD.value)

然后,您将在客户端获得一个MD5加密的密码,然后将其发送到您的服务器(无需使用AJAX)。在服务器端,您将其与存储在数据库中的加密密码进行比较,以检查用户是否已获得授权。

答案 2 :(得分:0)

根据Select0r我提出这不是为了在提交后改变 * -s的计数:

onSubmit='encrypt_pass(this)'

function encrypt_pass(form){
    form.pass_md5.value = md5(form.pass.value); //needs a hidden pass_md5 field
    var stars = "";
    for(i=0;i<form.pass.value.length;i++)
        stars = stars+"*";
    form.pass.value = stars;
}