我在一个带有MYSQL数据库的PHP项目中工作。 我读过有关SQL注入的内容,但我想有一些基本的例子。 如果发生攻击会发生什么??
我是这个话题的新手。 感谢
答案 0 :(得分:4)
答案 1 :(得分:4)
基本上,如果你有这样的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()函数。
答案 2 :(得分:2)
假设我有一个“用户”表,有人正在我的网站上注册一个帐户。他们输入的用户名为'); drop table Users
,这将提前终止我的INSERT语句并导致删除users表。
一个好的经验法则是“清理”您从用户那里收到的任何数据。为此,您需要使用PHP的mysql_real_escape_string(不建议使用)。一个更好的选择是prepared statements,虽然它们更长,但并不总是优雅。
$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