-1

我想以一种安全但通用的方式在 PHP 代码中使用字符串变量,例如下面的示例。我见过 htmlspecialchars() 但我认为这不是我能得到的最好的。并且 mysql 函数绝对不是解决方案(无论如何,不​​推荐使用 mysql_real_escape_string 之类的东西)。

你们认为以下情况的最佳解决方案是什么:

$password = $_POST['password'];
$password_check = $_POST['password_check'];

//make $password and $password_check safe

if($password != $password_check)
{
    $errors[] = 'The two passwords did not match';
}

谢谢

4

2 回答 2

1

我不确定是否需要在这里进行注射,因为除了比较两个发布的值之外,您什么也不做。此时是否对字符串进行了清理并不会在比较它们的等效性时产生很大的不同。

当然,如果您随后使用这些值来查询数据库,您将需要使用准备好的语句进行转义mysqli_real_escape_string和/或利用准备好的语句来对抗 SQL 注入。

您可能在此处考虑的另一个卫生问题是,不匹配的密码将被预先填充回表单以进行更正。在这种情况下,您需要对 XSS 攻击进行清理。

于 2012-12-07T16:50:01.360 回答
0

那么如果mysql_()即将被弃用怎么办PHP 还有其他选项,例如mysqli_()PDO

$password = mysqli_real_escape_string($connect, $_POST['password']);
$password_check = mysqli_real_escape_string($connect, $_POST['password_check']);

//make $password and $password_check safe

if($password != $password_check) {
    $errors[] = 'The two passwords did not match';
}

mysqli_() 参考

于 2012-12-07T16:44:55.867 回答