我正在执行以下操作来保护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);
有更简单的方法吗?这是一个注册表格,我有许多要保护的领域。
答案 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
的不安全变体,因为您没有提供数据库链接。
答案 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,让您的生活更轻松。