function addUser($username, $first_name, $last_name, $email, $pw, $type) {
include $_SERVER['DOCUMENT_ROOT'] . '/connection_library/connection_library.php';
$insertRow = NULL;
$connection = connectUserLogfiles();
try {
$sql = "INSERT INTO user_list (username, first_name, last_name, email, password, type) "
. "VALUES (:username, :first_name, :last_name, :email, :pw, :type)";
$stmt = $connection->prepare($sql);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':first_name', $first_name, PDO::PARAM_STR);
$stmt->bindParam(':last_name', $last_name, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':pw', $pw, PDO::PARAM_STR);
$stmt->bindParam(':type', $type, PDO::PARAM_STR);
$worked = $stmt->execute();
$stmt->rowCount();
$stmt->closeCursor();
} catch (Exception $ex) {
return FALSE;
}
return $worked;
}
我听说使用bindParam会阻止SQL注入攻击。这是真的?有没有办法对此代码执行SQL注入攻击?假设我没有对参数执行过滤或清理(除了使用强大的单向加密方案加密的密码),您将如何执行SQL注入攻击?
数据库是MySQL数据库,connectionUserLogfiles()
函数中使用的用户只有SELECT,INSERT和UPDATE权限。
答案 0 :(得分:0)
我听说使用bindParam可以防止SQL注入攻击。这是真的?
Yes,前提是您disable emulated prepares(默认情况下处于启用状态)并且您的数据库驱动程序不是愚蠢的。