php文件安全过滤,PHP字符串安全过滤全攻略

php安全过滤是防止注入的第一道防线,不得大意。提到PHP的安全过滤,不得不提的两个东西是`set_magic_quotes_runtime` 和 `magic_quotes_gpc`。

`set_magic_quotes_runtime()` 可以让程序员在代码中动态开启或关闭 `magic_quotes_runtime`,`set_magic_quotes_runtime(1)` 表示开启,

`set_magic_quotes_runtime(0)` 则表示关闭。当`set_magic_quotes_runtime(1)`时,从数据库或通过`fread`之类的函数读取的文本,将自动对' "和\自动

加上反斜杠\进行转义,防止溢出。这在对数据库的数据进行转移的时候非常有用。但在一般情况下,应当将其关闭,否则从数据库读取出来的数据单引

号、双引号和反斜杠都会被加上\,导致显示不正常。像Discuz,PHPWind都在公共文件的头部加上一句 `set_magic_quotes_runtime(0);` 强制关闭

`magic_quotes_runtime` 。

`magic_quotes_gpc` 和 `magic_quotes_runtime` 的区别在于,`magic_quotes_gpc` 是对通过GET、POST、COOKIE传递的数据进行转义,一般在数据入库前

要先进行转义,`magic_quotes_gpc`不能在代码中动态开启或关 闭,需要到`php.ini`将`magic_quotes_gpc`设置为on或off,代码中可以用`get_magic_quotes_gpc`

获取 `magic_quotes_gpc`的状态。当`magic_quotes_gpc`为off时,需要手工对数据进行addslashes,代码如下:

if (!get_magic_quotes_gpc()) {add_slashes($_GET);add_slashes($_POST);add_slashes($_COOKIE);}function add_slashes($string) {if (is_array($string)) {foreach ($string as $key => $value) {$string[$key] = add_slashes($value);}} else {$string = addslashes($string);}return $string;}

php防注入函数,字符过滤函数

//解码function htmldecode($str){if(empty($str)) return;if($str=="") return $str;$str=str_replace("select","select",$str);$str=str_replace("join","join",$str);$str=str_replace("union","union",$str);$str=str_replace("where","where",$str);$str=str_replace("insert","insert",$str);$str=str_replace("delete","delete",$str);$str=str_replace("update","update",$str);$str=str_replace("like","like",$str);$str=str_replace("drop","drop",$str);$str=str_replace("create","create",$str);$str=str_replace("modify","modify",$str);$str=str_replace("rename","rename",$str);$str=str_replace("alter","alter",$str);$str=str_replace("cas","cast",$str);$str=str_replace("&","&",$str);$str=str_replace(">",">",$str);$str=str_replace("<","",chr(13),$str);$str=str_replace("''","'",$str);return $str;}//编码function htmlencode($str){if(empty($str)) return;if($str=="") return $str;$str=trim($str);$str=str_replace("&","&",$str);$str=str_replace(">",">",$str);$str=str_replace("",$str);$str=str_replace("'","''",$str);$str=str_replace("select","select",$str);$str=str_replace("join","join",$str);$str=str_replace("union","union",$str);$str=str_replace("where","where",$str);$str=str_replace("insert","insert",$str);$str=str_replace("delete","delete",$str);$str=str_replace("update","update",$str);$str=str_replace("like","like",$str);$str=str_replace("drop","drop",$str);$str=str_replace("create","create",$str);$str=str_replace("modify","modify",$str);$str=str_replace("rename","rename",$str);$str=str_replace("alter","alter",$str);$str=str_replace("cast","cas",$str);return $str;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值