当通过UTF-8编码的套接字传输发送密码时,如果我在发送数据之前使用MD5或SHA-1哈希密码,是否被认为是安全的?请注意,我计划在SQL数据库中比较哈希密码。我担心有人能够嗅探UTF-8中的哈希密码,然后解密UTF-8编码,并可能获得我的哈希密码,从而匹配我的数据库中的密码。
https://
URL)所提供的内容。如果有人能嗅探哈希值,他就可以伪造授权请求并发送他已知的哈希值。
建立安全系统并不容易,您需要使用正确签名的非对称加密进行授权才能使其变得安全。
至少要添加100字节的随机盐,并使用SHA1 - 这样会更难破解。
如何在数据库端检查密码?
如果您存储的是未加盐哈希密码,并将其与输入进行比较,则可以嗅探并重复使用哈希密码。
这就像您在数据库中以明文形式存储密码本身一样。
如果您担心嗅探攻击,请使用挑战-响应协议进行身份验证,但在这种情况下,密钥将存储在数据库中(并且任何有权访问数据库的人都将知道该密钥)。
或者,您可以通过受保护的通道(SSL
)以明文形式发送密码,但您必须安装证书,这很可能会花费一些金钱(如果您使用供应商提供的列表中的授权机构,即您的客户浏览器不会抱怨的授权机构)。