如果这些数据不会改变数据库的状态,我是否也应该清理来自 $_GET 的数据。
改变数据库状态的例子是INSERT,
不改变状态的DELETE例子是SELECT。
我认为不消毒的问题是这个
内部代码
$word = $_GET['word'];
$query = "SELECT * FROM tbl_example WHERE name LIKE '%$word%'";
mysqli_query($query);
那么你搜索的数据是
testword%';DROP TABLE tbl_example; --
所以 $query 的最终值为
SELECT * FROM tbl_example WHERE name LIKE '%testword%';DROP TABLE tbl_example; -- %'
但我想这不会起作用,因为 mysqli_query 和 mysql_query() 只能执行单个 SQL 语句。
此外,如果您清理 $_GET 则在数据库内部有“然后您搜索”您的搜索是否会与数据库中的搜索匹配?
你能告诉我sql注入的例子吗?