-2

可能重复:
防止 SQL 注入的最佳方法?

我正在一个使用 MYSQL 数据库的 PHP 项目中工作。我阅读了有关 SQL 注入的信息,但希望有一些基本示例。如果攻击会发生什么。?

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

4

3 回答 3

4

有很多话要说,但我只想说:

作为总结:

在此处输入图像描述

于 2012-11-20T18:17:11.610 回答
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() 函数。

于 2012-11-20T18:17:21.520 回答
2

假设我有一个“用户”表,并且有人正在我的网站上注册一个帐户。他们输入他们的用户名,'); 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
于 2012-11-20T18:19:14.927 回答