本人新手,在《PHP安全编码》中提到“不要直接使用$_GET”,同时又提到“可以尝试在php.ini中开启magic_quotes_gpc,这样对于所有由用户GET、POST、COOKIE中传入的特殊字符都会转义”,我很纠结,是否开启magic_quotes_gpc就可以直接使用$_GET?
如下面例子中的代码本人感觉很不安全,因为没有做验证,但又不知道如何改进,希望大神能帮忙,谢谢。
<?php
$name = $_GET["name"];
$user = $_GET["user"];
mysql_query("SELECT $name FROM $user");
我一般都对$_POST $_GET都使用zaddslashes,然后整数的参数值进行取整,防止XSS和SQL注入
HTTP头信息:IP、浏览器信息、等也进行转义过滤防止HTTP头注入
magic_quotes_gpc开启后会影响图片上传等,自动将内容引号转义
注意PHP5.5包括之后已经将magic_quotes_gpc配置废弃
除此之外,最好在服务器方面也做关键词过滤,Mysql为业务使用到的库创建用户和赋权
可以把自己应用放服务器上,装个sqlmap注入下自己试试,以上几点做到一般情况下不会被搞,至少不会被getshell
乌云白帽子路过...