是否可以不使用任何形式通过SQL Injection发送POST请求?假设应用程序使用具有id参数的GET方法来检查数据库中是否存在该id,如果我们改为使用POST方法可以做到吗?
答案 0 :(得分:2)
SQL注入可以通过 any 机制进行,其中用户数据直接出现在查询中。它不依赖于GET与POST,甚至不依赖于HTTP。
您可以SQL注入with OCR。您可以SQL注入with barcodes。您可以在有人不小心并且无法正确转义数据的任何时间进行SQL注入。
这就是为什么对所有查询使用带占位符值的准备好的语句很重要的原因。
答案 1 :(得分:1)
为什么GET和POST数据的安全性会有区别?
$sql = "SELECT * FROM products WHERE id = {$_GET['id']}";
vs。
$sql = "SELECT * FROM products WHERE id = {$_POST['id']}";
在两种情况下,它都是不可信的内容,因此插值到SQL查询中并不安全。
使用查询参数。然后,您不必担心数据来自何处。
$sql = "SELECT * FROM products WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute( [ $_POST['id'] ] );
使用查询参数既简单又安全!