一般,对于传进来的字符,php可以用addslashes函数处理一遍(要get_magic_quotes_gpc()为假才处理,不然就重复转义了!),这样就能达到一定程度的安全要求
比如这样
代码如下 | 复制代码 |
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; } |
但是还可以更进一步进行重新编码,解码,如下:
代码如下 | 复制代码 |
//编码 function htmlencode($str) { |
这样就能更放心的对外来数据进行入库处理了, 但是从数据库取出来,在前台显示的时候,必须重新解码一下:
代码如下 | 复制代码 |
//解码 function htmldecode($str) { |
虽然多了一步编码,解码的过程,但是安全方面,会更进一步,要如何做,自己取舍吧。
再附一些
代码如下 | 复制代码 |
function safe_replace($string) { $string = str_replace(' ','',$string); $string = str_replace(''','',$string); $string = str_replace(''','',$string); $string = str_replace('*','',$string); $string = str_replace('"','"',$string); $string = str_replace("'",'',$string); $string = str_replace('"','',$string); $string = str_replace(';','',$string); $string = str_replace('<','<',$string); $string = str_replace('>','>',$string); $string = str_replace("{",'',$string); $string = str_replace('}','',$string); return $string; } |
更全面的
代码如下 | 复制代码 |
//处理提交的数据 function htmldecode($str) { if (empty ( $str ) || "" == $str) { return ""; } $str = strip_tags ( $str ); $str = htmlspecialchars ( $str ); $str = nl2br ( $str ); $str = str_replace ( "?", "", $str ); $str = str_replace ( "*", "", $str ); $str = str_replace ( "!", "", $str ); $str = str_replace ( "~", "", $str ); $str = str_replace ( "$", "", $str ); $str = str_replace ( "%", "", $str ); $str = str_replace ( "^", "", $str ); $str = str_replace ( "^", "", $str ); $str = str_replace ( "select", "", $str ); $str = str_replace ( "join", "", $str ); $str = str_replace ( "union", "", $str ); $str = str_replace ( "where", "", $str ); $str = str_replace ( "insert", "", $str ); $str = str_replace ( "delete", "", $str ); $str = str_replace ( "update", "", $str ); $str = str_replace ( "like", "", $str ); $str = str_replace ( "drop", "", $str ); $str = str_replace ( "create", "", $str ); $str = str_replace ( "modify", "", $str ); $str = str_replace ( "rename", "", $str ); $str = str_replace ( "alter", "", $str ); $str = str_replace ( "cast", "", $str ); $farr = array ("//s+/", //过滤多余的空白 "/<(//?)(img|script|i?frame|style|html|body|title|link|meta|/?|/%)([^>]*?)>/isU", //过滤 <script 防止引入恶意内容或恶意代码,如果不需要插入flash等,还可以加入<object的过滤 "/(<[^>]*)on[a-zA-Z]+/s*=([^>]*>)/isU" )//过滤javascript的on事件 ; $tarr = array (" ", "", //如果要直接清除不安全的标签,这里可以留空 "" ); return $str; } |