什么是SQL注入攻击?关于如何使用基本实例预防它们的一些提示

时间:2012-11-20 18:13:11

标签: php mysql phpmyadmin sql-injection

  

可能重复:
  Best way to prevent SQL injection?

我在一个带有MYSQL数据库的PHP项目中工作。 我读过有关SQL注入的内容,但我想有一些基本的例子。 如果发生攻击会发生什么??

我是这个话题的新手。 感谢

3 个答案:

答案 0 :(得分:4)

有很多要说的,但我会说:

总结:

enter image description here

答案 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