PHP防注入求教? 本帖最后由 u010572351 于 2013-06-27 21:10:49 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 适用各个 PHP 版本的用法if (get_magic_quotes_gpc()) { $lastname = stripslashes($_POST['lastname']);}else { $lastname = $_POST['lastname'];}// 如果使用 MySQL$lastname = mysql_real_escape_string($lastname);echo $lastname; // O\'reilly$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')"; 我想问一下,你上面的写法两个问题:1.好像说的是如果magic_quotes_gpc开启了,含有 特殊字符的sql会顺利加入mysql,加入的时候不再需要addslashes(),取值的时候也不需要stripslashes(),因为系统已经处理了,你上面好像还处理了一下,是这样的么? if (get_magic_quotes_gpc()) { //如果 magic_quotes_gpc开启了,则会影响 post、get、cookie 请求的数据,单/双引号、反斜杠会在前面自动加上反斜杠,因此要先用stripslashes去掉反斜杠以免出现双重转义 $lastname = stripslashes($_POST['lastname']);}else { //否则取原数据 $lastname = $_POST['lastname'];} 先感谢,我现在意识到有两层意思:1.特殊字符能不能正常被mysql执行,和转义有关。2.能被mysql执行,但是会出现恶意特殊字符让mysql执行注入。不知道对不对,对于mysql注入,应该是利用了mysql能够识别并执行一些特殊字符,但是出现了恶意的执行结果是吧? magic_quotes_gpc 开关php 5.3 默认关闭php 5.4 已取消判断 get_magic_quotes_gpc() 的返回,已是远古的事情了 只要sql语句书写规范,就没有问题。例如不要使用字符串连接,而是使用代入。正确地使用引号。使用PDO。绝对安全是不可能的。与成本有很大关系。 关于心理测试程序该如何设计? 关于Class的get和set方法的地方 【散分】看看错误使用“引用”的恶果,你能看出是为什么吗? unlink的问题 $url PHP 中你用過這個函數嗎? 求助:php和mysql跨服务器如何提高效率? 我是一个新手,大家帮帮我吧 一个小问题,想各位前辈指点一下。 关于PHP的请求帮助! Mysql主键自增长的问题 PHP程序写大量注释好吗?
if (get_magic_quotes_gpc()) {
$lastname = stripslashes($_POST['lastname']);
}
else {
$lastname = $_POST['lastname'];
}// 如果使用 MySQL
$lastname = mysql_real_escape_string($lastname);echo $lastname; // O\'reilly
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
$lastname = stripslashes($_POST['lastname']);
}
else { //否则取原数据
$lastname = $_POST['lastname'];
}
不知道对不对,对于mysql注入,应该是利用了mysql能够识别并执行一些特殊字符,但是出现了恶意的执行结果是吧?
php 5.3 默认关闭
php 5.4 已取消判断 get_magic_quotes_gpc() 的返回,已是远古的事情了
绝对安全是不可能的。与成本有很大关系。