可能重复:
防止 SQL 注入的最佳方法?
我正在一个使用 MYSQL 数据库的 PHP 项目中工作。我阅读了有关 SQL 注入的信息,但希望有一些基本示例。如果攻击会发生什么。?
我是这个话题的新手。谢谢
可能重复:
防止 SQL 注入的最佳方法?
我正在一个使用 MYSQL 数据库的 PHP 项目中工作。我阅读了有关 SQL 注入的信息,但希望有一些基本示例。如果攻击会发生什么。?
我是这个话题的新手。谢谢
基本上,如果您有这样的 SQL 调用:
"DELETE FROM Users WHERE InputtedName = '$name'"
人们可以在表格上输入:My Name' OR InputtedName != 'My Name
当 $name 替换为表单中输入的名称时,这将导致以下 SQL 调用:
"DELETE FROM Users WHERE InputtedName = 'My Name' OR InputtedName != 'My Name'"
那将删除您表中的所有内容!不好!因此,为了防止这种情况,您应该对所有用户输入的数据使用 mysql_real_escape_string() 函数。
假设我有一个“用户”表,并且有人正在我的网站上注册一个帐户。他们输入他们的用户名,'); drop table Users
这将提前终止我的 INSERT 语句并导致用户表被删除。
一个好的经验法则是“清理”您从用户那里收到的任何数据。为此,您需要使用 PHP 的mysql_real_escape_string(已弃用)。一个更好的选择是准备好的语句,尽管它们更长并且并不总是优雅的。
$stmt = $mysqli->prepare('select name from users where id = ?');
$stmt->bind_param($id,'s');
$id = 'some_id';
$stmt->execute();
$stmt->bind_result($name);
$stmt->fetch(); //variable $name now has the value of the first result