gpt4 book ai didi

mysql - 为什么你会选择在应用层散列密码,而不是使用 mysql SHA2()?

转载 作者:可可西里 更新时间:2023-11-01 07:31:28 25 4
gpt4 key购买 nike

在将密码插入数据库之前,我总是在 php(或其他)中散列密码。今天我发现 mysql 5.5 内置了哈希,所以我可以这样做:

+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| user_id | int(11) | NO | PRI | NULL | auto_increment |
| user_uname | varchar(63) | YES | UNI | NULL | |
| user_password | binary(32) | YES | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+

--set password
UPDATE users SET user_password=UNHEX(SHA2(CONCAT('username','salt'), 256))\
WHERE user_id = 1;

-- validate password
SELECT (SELECT user_password FROM users WHERE user_id=1) = \
SHA2(CONCAT('username','salt'), 256);

这可能是个坏主意,有什么理由吗? (无论如何我都不是 mysql 专家)

最佳答案

那不是散列密码;但如果它是(如果你在那里传递明文密码)......

数据库连接协议(protocol)一般是不加密的。不使用此功能的一个原因是您通过网络以明文形式发送密码。如果有人控制了您的网络服务器和数据库之间路径上的路由器,他们就可以拦截这些数据。

因此,您会在系统安全性方面引入弱点。

关于mysql - 为什么你会选择在应用层散列密码,而不是使用 mysql SHA2()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7184524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com