SQL保护SQL注入提交的数据

时间:2012-04-10 18:05:42

标签: php sql

我正在执行以下操作来保护subbmited数据免受sql攻击

$myusername = stripslashes($myusername);
$myusername = mysql_real_escape_string($myusername);
$mypassword = stripslashes($mypassword);
$mypassword = mysql_real_escape_string($mypassword);
$confirm_password = stripslashes($confirm_password);
$confirm_password = mysql_real_escape_string($confirm_password);
$fullname = stripslashes($fullname);
$fullname = mysql_real_escape_string($fullname);

有更简单的方法吗?这是一个注册表格,我有许多要保护的领域。

2 个答案:

答案 0 :(得分:1)

  

有更简单的方法吗?

是的,首先,disable automatic slashes,所以你不需要剥离它们。这将减少代码:

$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$confirm_password = mysql_real_escape_string($confirm_password);
$fullname = mysql_real_escape_string($fullname);

如果您使用所谓的参数化查询,您甚至不需要再调用mysql_real_escape_string,但您可以安全地使用这些变量。

请注意您使用的是mysql_real_escape_string的不安全变体,因为您没有提供数据库链接。

请参阅:Best way to stop SQL Injection in PHP

答案 1 :(得分:0)

是的,使用PHP的 PDO对象(PHP数据库对象)并创建prepared statements.

$dbh = new PDO('mysql:dbname=YOURDB;host=localhost', 'user', 'pass');
$sql = 'SELECT name FROM user WHERE id = :id';
$sth = $dbh->prepare($sql);
$sth->execute(array(':id' => 25);
$result = $sth->fetchAll();

它也可以帮助您了解您可以寻找PDO Wrapper,让您的生活更轻松。