我在本地主机上有一个简单的注册表单(仍在测试),我想知道它是否可以被SQL注入攻击?在注册表格中避免SQL注入php
代码:
$name = mysql_real_escape_string($_POST['name']);
$password = mysql_real_escape_string($_POST['password']);
$password = md5($password);
$email = mysql_real_escape_string($_POST['email']);
$refId = $_GET['refid'];
$ip = $_SERVER['REMOTE_ADDR'];
$add = mysql_query("INSERT INTO `users` (`name`, `password`, `email`, `refId`, `ip`)
VALUES('$name','$password','$email','$refId', '$ip')") or die(mysql_error());
那是安全的,也可以使用别人SQL注入(我想知道怎么样)?我怎样才能避免注射?
您是否已阅读此文件(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)?准备好的语句,并尽可能安全:使用主DB和存储过程,如果需要的话,用你自己的函数解析字符串 – 2012-07-10 17:00:55
避免使用mysql_库注入需要你为每一个单独的事情做这样的单调乏味的事情查询,即使如此,你也不能保证安全。避免注入的标准方法是使用预先准备好的查询,它告诉数据库引擎,它不必将您传递的字符串视为您指定的查询中的参数以外的任何内容。 PHP有两个库,mysqli和PDO。谷歌他们并阅读准备好的查询。它需要更多的工作来设置,但它是值得的。 – octern 2012-07-10 17:00:58
存储过程不是必需的,以避免SQL注入,虽然这将工作;准备好的语句是最简单的方法,或者像Doctrine或Propel这样的ORM。 – halfer 2012-07-10 17:03:23