您好,欢迎访问一九零五行业门户网

php过滤特殊字符sql防注入代码

/isu, /(]*)on[a-za-z]+s*=([^>]*>)/isu, ); $tarr = array( , <>, //如果要直接清除不安全的标签,这里可以留空 , );$str = preg_replace( $farr,$tarr,$str); return $str; }//php sql防注入代码class sqlin{//dowith_sql($value)function dowith_sql($str){ $str = str_replace(and,,$str); $str = str_replace(execute,,$str); $str = str_replace(update,,$str); $str = str_replace(count,,$str); $str = str_replace(chr,,$str); $str = str_replace(mid,,$str); $str = str_replace(master,,$str); $str = str_replace(truncate,,$str); $str = str_replace(char,,$str); $str = str_replace(declare,,$str); $str = str_replace(select,,$str); $str = str_replace(create,,$str); $str = str_replace(delete,,$str); $str = str_replace(insert,,$str); $str = str_replace(',,$str); $str = str_replace(,,$str); $str = str_replace( ,,$str); $str = str_replace(or,,$str); $str = str_replace(=,,$str); $str = str_replace(%20,,$str); //echo $str; return $str;}//aticle()防sql注入函数//php教程function sqlin(){ foreach ($_get as $key=>$value) { $_get[$key]=$this->dowith_sql($value); } foreach ($_post as $key=>$value) { $_post[$key]=$this->dowith_sql($value); }}}$dbsql=new sqlin();?>
复制代码
使用方式:将以上代码复制新建一个sqlin.php的文件,然后包含在有get或者post数据接收的页面
原理分析:将所有的sql关键字替换为空本代码在留言本中不能使用,若要在留言本中使用请替换其中的.......$str = str_replace(and,,$str);到$str = str_replace(%20,,$str);...的代码为:
$str = str_replace(and,and,$str);$str = str_replace(execute,execute,$str);$str = str_replace(update,update,$str);$str = str_replace(count,count,$str);$str = str_replace(chr,chr,$str);$str = str_replace(mid,mid,$str);$str = str_replace(master,master,$str);$str = str_replace(truncate,truncate,$str);$str = str_replace(char,char,$str);$str = str_replace(declare,declare,$str);$str = str_replace(select,select,$str);$str = str_replace(create,create,$str);$str = str_replace(delete,delete,$str);$str = str_replace(insert,insert,$str);$str = str_replace(',',$str);$str = str_replace(,,$str);?>
复制代码
-------------------------------------------------------addslashes -- 使用反斜线引用字符串
string addslashes ( string str )
返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号()、反斜线(\)与 nul(null 字符)。
一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 o'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:o\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 php 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。
默认情况下,php 指令 magic_quotes_gpc 为 on,它主要是对所有的 get、post 和 cookie 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。get_magic_quotes_gpc()本函数取得 php 环境配置的变量 magic_quotes_gpc (gpc, get/post/cookie) 值。返回 0 表示关闭本功能;返回 1 表示本功能打开。当 magic_quotes_gpc 打开时,所有的 ' (单引号), (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的溢出字符。addslashes与stripslashes是php中对数据库的字符进行操作时.乍一看好像很难记,但是只要分析一下,add是增加,strip是忽略.slash是斜线,slash就是斜线的复数.那么addslashes就是增加斜线的意思,因为有些特殊的字符写入数据库后会出现问题,比如 '等,所以要加\给特殊符号转义,告诉数据库那些特殊符号是字符串,同理stripslashes是从数据库取出字符串时就要减去斜线了. htmlspecialchars把某些特殊字符转换成html的编码,常用到的场合可能就是处理客户留言的留言版了。这些特殊字符仅限于以下几个:& -> &“ -> -> >htmlentities跟htmlspecialchars的功能类似,但是htmlentities是对所有html定义的entity都不放过,包括各种特殊字符和中文,这样得出来的结果是中文字符部分变为一堆乱码。htmlspecialchars_decode是htmlspecialchars的逆向过程,把html的编码转换成字符。php过滤特殊字符实用函数php表单提交特殊字符过滤方法html特殊字符过滤php类url链接中特殊字符转义方法php特殊字符转义详解php过滤参数特殊字符防注入php 过滤非法与特殊字符串的方法php特殊字符处理函数的例子
其它类似信息

推荐信息