SQL注入好奇心
SQL injection curiosity
同学,
刚刚了解到,为了避免 SQL 注入,最好使用 prepare/execute 二重奏:
$pdo = new PDO ('mysql:host=something;port=something dbname=something','name','pswd');
$sql = "SELECT name FROM users WHERE email = :em AND password = :pw";
$stmt = $pdo -> prepare($sql);
$stmt -> execute (array());
而不是使用:
$stmt = $pdo -> query($sql);
问题是:
在什么情况下有人使用 query 代替,因为我们有一个非常快速的方法来保护自己免受 SQL 注入,有人使用查询方法吗?如果是,为什么?
几乎从不;你会知道你是否处于无法使用它的情况。
请注意,即使您正在即时生成查询,您仍应生成包含占位符的字符串和彼此独立的参数集。
我会在可以安全使用查询时使用query
方法(它不是sql注入攻击的目标),例如:SELECT name FROM users
同学,
刚刚了解到,为了避免 SQL 注入,最好使用 prepare/execute 二重奏:
$pdo = new PDO ('mysql:host=something;port=something dbname=something','name','pswd');
$sql = "SELECT name FROM users WHERE email = :em AND password = :pw";
$stmt = $pdo -> prepare($sql);
$stmt -> execute (array());
而不是使用:
$stmt = $pdo -> query($sql);
问题是:
在什么情况下有人使用 query 代替,因为我们有一个非常快速的方法来保护自己免受 SQL 注入,有人使用查询方法吗?如果是,为什么?
几乎从不;你会知道你是否处于无法使用它的情况。
请注意,即使您正在即时生成查询,您仍应生成包含占位符的字符串和彼此独立的参数集。
我会在可以安全使用查询时使用query
方法(它不是sql注入攻击的目标),例如:SELECT name FROM users