此代码片段是否是创建用户的安全方法


Is this code snippet a secure way of creating a user?

如果我允许用户用任何数字(abcABC-_.,!)选择他的用户名。§%§等)

我用 POST 这样做:

$username = trim($_POST['username']);
$username = stripslashes($username);
$username = htmlentities($username);
$username = htmlspecialchars($username);

在插入数据库使用之前,我将预准备语句与 PDO 一起使用:

try
{
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $dbh->prepare("INSERT INTO user (username)
                                    VALUES (?)");
    $stmt->bindParam(1, $value1);
    $value1 = $username;
    $stmt->execute();
}
catch(PDOException $exception)
{
    // catch error-msg
}

这是 100% 安全还是我必须添加更多内容?问候和感谢!!

我认为你应该使用filter_varfilter_input,而不是在第一个块中执行所有这些函数。

filter_varfilter_input

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

消毒过滤器 — http://us2.php.net/manual/en/filter.filters.sanitize.php