php – 需要帮助了解MySQL注入
从
http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php我得到:
我读了整篇文章,但我仍然有一些重大的问题,了解它是什么,如何做到这一点. 在第一个例子中,他们会看到什么? 据我所知,如果我真的回应$name,将会看到所有的名字,因为它将永远是“真的”我是正确的吗? 另一件我不明白的是MySQL的注入问题是用mysql_real_escape_string()解决的,还有更多的. 我真的没有得到的是mysql_real_escape_string()是为了解决这个问题,为什么这不是自动完成的,我的意思是有一个原因,你必须添加每次mysql_real_escape_string(),有什么情况下,你应该使用那么这就是为什么他们不自动化
MySQL不会自动转义,因为您自己构建查询字符串.例如:
$query = 'SELECT * FROM users WHERE name="' . $name . '"'; 你只需传递存储在$query中的原始字符串,这对SQL注入是开放的.例如,如果$name是[something“OR”1 = 1],则查询字符串的结尾为: $query = 'SELECT * FROM users WHERE name="something" OR "1=1" 这将从用户表返回每个用户.这就是为什么你需要逃避价值观.但是,如果使用PDO,如果使用绑定功能,则可以为您完成.这是一个2步的过程,准备查询,然后将数据/变量绑定到占位符.在PDO中,您的查询字符串将如下所示: $query = 'SELECT * FROM users WHERE name=":name"'; $bindings = array('name'=>'something'); prepare($query); execute($bindings); 然后,会为您自动转义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |