2

这会保护我的 INSERT 免受 SQL 注入吗?我可以以某种方式缩短此代码以使其看起来更整洁吗?

$db = new PDO('mysql:host=XXXXXXXXXX;dbname=XXXXXXXXX', 'XXXXXXXXX', 'XXXXXXXXXX');

// query MySQL to verify login
$query = $db->prepare("INSERT INTO login (username,password,name,email_add,age,country) VALUES (:username,:password,:name,:email_add,:age,:country)");
$query->execute(array(
':username' => $username, 
':password' => $password,
':name' => $name,
':email_add' => $email,
':age' => $age,
':country' => $country));
4

1 回答 1

0

是的, PDO 扩展已经消除了所有类似的注入漏洞。由于您在病房后绑定参数,因此您也做得正确。

但是,为了使查询处于最安全的状态,请在绑定变量时指定变量的数据类型。

$query = $db->prepare('INSERT INTO login (username,password,name,email_add,age,country) VALUES (:username,:password,:name,:email_add,:age,:country)');

$query->bindParam(':username', $username, PDO::PARAM_STR, 20);
// and so on
$query -> execute();

更多细节

于 2013-06-17T07:20:51.313 回答