我的本地主机上有一个简单的注册表单(仍在测试),我想知道它是否会受到 SQL 注入攻击?
Code:
$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 注入(我想知道如何)?如何避免注射?
避免注射的最好方法是使用准备好的报表 https://en.wikipedia.org/wiki/Prepared_statement.
对于准备好的语句,我更喜欢使用 PDO 来处理我所有的数据库内容。这是我编写的一些 PDO 示例代码,用于检索一些基本登录信息:
$sql=new PDO("mysql:host=127.0.0.1;dbname=name","user","password");
$user=$_POST[user];
$query="select Salt,Passwd from User
where Name=:user";
$stmt=$sql->prepare($query);
$stmt->bindParam(':user',$user);
$stmt->execute();
$dr=$stmt->fetch();
$sql=null;
$password=$_POST[pass];
$salt=$dr['Salt'];
... etc
Read this http://php.net/manual/en/book.pdo.php页面以获取有关 PDO 的更多信息。如果你想知道这里的每一行代码在做什么,请阅读this https://stackoverflow.com/a/7259534/487075我给另一个帖子的答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)