在发送它们之前将我的POSTvariablesencryption到md5是否安全?

我有一个简单的login表单,用户input用户名和密码。 当php通过POST接收到variables时,它将密码encryption为md5,然后将其与数据库logging进行比较。

我的问题是:在发送variables之前,在浏览器中用javascriptencryption密码会更安全吗? 我知道这不是一个万无一失的方法,但会阻止人们networking嗅探我的密码? 或者这是否会以任何方式使密码更脆弱?

谢谢。

顺便说一句,我将用于encryption到MD5的脚本在这里: http : //www.webtoolkit.info/javascript-md5.html

在通过电线发送之前使用JavaScript来散列密码是我期望的最less的。 如果你使用CRAM-MD5 , HTTP Digest或者SSL (专家花费数千小时的时间来倾听这些协议的安全意义),情况会更好。

你绝对要用盐 。 如果你不使用彩虹桌很容易扭转密码。 一个非常简单的盐,运行相当好,让服务器发送一个随机盐与页面。 MD5的密码,然后把MD5的第一个哈希和盐一起。 在服务器端,您可以存储MD5密码,然后在存储的哈希和页面上运行一个快速的MD5; 比较和authentication适当。 这种盐被称为nonce 。 你还应该在原始密码和存储在服务器上的密码中添加一长串盐。

所以一个“好”的path(缺lessSSL和上面提到的其他)是:

A = MD5 ( Password + Realm) B = MD5 ( A + Nonce) 

通过电线发送B. 保持A存储在服务器上。 当首先设置A时,使用简单的可逆encryption,如ROT或XOR。 就我个人而言,我会考虑一些不负责任的事情,因为如此多的用户愚蠢地使用完全相同的密码在一切附近( 甚至杰夫 – 网站的创始人 – 已经这样做 )。

不,不要这样做。 强制在login屏幕中使用SSL,然后您将知道发送时用户名/密码是encryption的。

然后,当您的PHP应用程序收到密码时,它可以MD5或SHA1散列密码并存储。

要login,散列收到的密码,并与散列存储的密码进行比较。 如果它们匹配,则允许用户通过。

顺便说一下,为了防止你的密码数据库的字典攻击,你会希望在哈希之前“密码”的密码。 参见: http : //en.wikipedia.org/wiki/Salt_(cryptography)

如果你在你的哈希上使用盐,嗅探器可以很容易地访问你的页面,并从你的JavaScript获得你的哈希值。 而且, md5并不是完全安全的 ,因为它不是防撞的。 所以不要这样做,只要使用SSL,如果它真的很敏感。

人们嗅探networking并不安全。

只要想想,当用户需要连接在那里JavaScript密码并将其发送到服务器。 服务器将其与数据库进行比较。

嗅探器只需要嗅探密码并将其发送到服务器,这样就像明文密码一样安全。

正如其他人所说,我build议SSL / TLS隧道build立连接到您的服务器。