参数化防SQL注入
现在防止SQL注入最常用的方法基本上就是参数化条件了。
原理是因为用这种方式处理时,数据库服务器会先编译传入的SQL语句,而不把参数代入。编译完成后再把参数替换。所以你的注入是无法被执行的。
比如用PHP实现。
1.mysql_query类型函数实现
$query = sprintf('select * from book where id = "%s"', '33');
mysql_query($query, $conn);
2.mysqli实现
这种实现,PHP MYSQLi 类本身本身已经提供了预处理。
$mysqli = new MYSQLi($host, $port);
$stmt = $mysqli->prepare('select * from book where id = ?');
$stmt->bind("i", 333);