此代码段是否是创建用户的安全方式?

时间:2014-04-05 14:26:44

标签: php security pdo prepare

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

我用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%安全还是我必须添加更多东西?问候和感谢!!

1 个答案:

答案 0 :(得分:1)

我认为您应该使用 filter_var filter_input ,而不是在第一个块中执行所有这些功能。

filter_var filter_input

实施例

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

清理过滤器 - http://us2.php.net/manual/en/filter.filters.sanitize.php