gpt4 book ai didi

mysql - 必须清理散列密码?

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:29 26 4
gpt4 key购买 nike

这只是一种好奇。如果您在将密码插入查询之前对其进行加密(使用 sha1 或其他方法),则必须对其进行清理?或者哈希的结果总是安全的?

这个简单的代码安全吗?

$salt = "123xcv";
$password = $_POST['password'];
$password = sha1($password+$salt);

$query = "select * from user where password='$password'";

最佳答案

除非您以某种方式验证了输入,否则您不应该假设它会总是返回安全输出,因为如果给定意外输入,SHA1 等函数可能会返回错误值。例如:

echo '<?php echo sha1(''); ?>' | php 
Warning: sha1() expects at least 1 parameter, 0 given in - on line 1

而且这个输出显然违反了“它总是一个十六进制字符串”的假设。其他语言的其他散列函数可以呈现另一种行为。

除此之外,上面的密码哈希码方案 ($password = sha1($password+$salt);) 非常弱 ( see why ) 并且我强烈建议即使在示例中也不要使用它,因为最终保证有人会在 StackOverflow 上找到它并在生产中使用它。

此外,如上所述,通过连接字符串构建 SQL 查询也是一种不好的做法,并且可能在未来导致安全问题:今天查询中的唯一参数将是密码,明天有人决定添加一些其他选项我敢打赌他们不会重写查询,而只是使用已经存在的模板...

关于mysql - 必须清理散列密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31004344/

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