用于“if”的PHP转义字符串

时间:2012-12-07 16:40:56

标签: php string variables if-statement escaping

我想在安全但通用的方式上使用字符串变量,以便在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';
}

感谢

2 个答案:

答案 0 :(得分:1)

我不确定是否需要在此处进行注射,因为除了比较两个已发布的值之外,您什么都不做。此时字符串是否被消毒并不会在比较它们的等效性方面产生很大的不同。

当然,如果您随后使用值来查询数据库,则需要使用mysqli_real_escape_string进行转义和/或使用预准备语句来针对SQL注入进行投影。

您可能遇到的另一个卫生设施考虑因素是,不匹配的密码会预先填入表格进行更正。在这种情况下,您需要清除XSS攻击。

答案 1 :(得分: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_() Reference