PHP POST, GET 参数过滤,预防sql注入函数

1、 实际过滤函数 可适当修改其中的正则表示式

 1 static public function filterWords(&$str)
 2     {
 3         $farr = array(
 4             "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU",
 5             "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
 6             "/select\b|insert\b|update\b|delete\b|drop\b|;|\"|\‘|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile|dump/is"
 7         );
 8         $str = preg_replace($farr,‘‘,$str);
 9         $str = strip_tags($str);
10         return $str;
11     }

2、调用此函数 过滤参数中的value值

static function filterParams(&$params, $tmp = array())
    {
        if(is_array($params)){
            foreach($params as $k => &$v){
                if(is_array($v))
                {
                    self::filterParams($v);
                }else{
                    self::filterWords($v);

                }
            }
        }
        else
        {
            $arr[] = self::filterWords($params);
        }
        return $params;
    }

3、调用此函数,过滤参数中的key值

 1 static  function filterKeys($arr, $subKey, &$myArr)
 2     {
 3         foreach($arr as $k=>$v)
 4         {
 5             if(is_array($v))
 6             {
 7                 $filterKey = self::filterWords($k);
 8                 self::filterKeys($v, $filterKey, $myArr);
 9
10             }else{
11                 $filterKey = self::filterWords($k);
12                 if($subKey != ‘‘)
13                 {
14                     $myArr[$subKey][$filterKey] = $v;
15                 }else{
16                     $myArr[$filterKey] = $v;
17                 }
18             }
19         }
20
21     }
时间: 2024-10-10 14:10:19

PHP POST, GET 参数过滤,预防sql注入函数的相关文章

sql注入的原理是什么,怎么预防sql注入

为什么会产生sql注入: 主要原因,对用户输入的绝对信任,相信所有用户的输入都是可信的,没有对用户输入的语句进行过滤或者筛选,直接放到sql语句中进行拼接,从而导致了sql注入的产生 例如: <php? id = $_GET['id']; sql = "select * from tables where id=$id limit 0,1"; ....... ?> 如果是正常的id等于数值之类,是没有问题的,但是id如果被恶意更改或者更改,我们原本的逻辑就会出现一系列的问题

怎么预防sql注入攻击

假设sql是搜索用户A的文章,sql会是这样: select * from table where owner='A'; sql注入攻击者会修改用户名来实现攻击,例如把A 改成A' or 1='1 组合后的sql语句: select * from table where owner='A' or 1='1'; 这样就可以获取所有用户的文章 可见,sql攻击就是把部分数据内容伪造成sql语句,例如上面把 or 1=伪造成sql语句来实现攻击 而伪造的方法,就是在内容里面加入引号,所以预防sql注入

利用PreparedStatement预防SQL注入

1.什么是sql注入 SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为. 例如登录用户名采用  ' or 1=1 or username=‘,后台数据查询语句就变成 sql = select * from users where username='' or 1=1 or username='' and password='"+password+"'",由于sql中and的优先级比or高,所以整条查询语句等价于: sql = select *

9.7预防sql注入

检测实例:a' or 'a'='a [注]以下方法可以预防sql注入:其中prepareStatment.setString();其中的第一个参数为绑定sql语句中问号的位置(这里以1下标开始) 原文地址:https://www.cnblogs.com/jiafeng1996/p/12335432.html

预防SQL注入攻击

/** * 预防SQL注入攻击 * @param string $value * @return string */function check_input($value){ // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($valu

php防止sql注入函数

$magic_quotes_gpc= get_magic_quotes_gpc(); @extract(daddslashes($_COOKIE)); @extract(daddslashes($_POST)); @extract(daddslashes($_GET)); if(!$magic_quotes_gpc){ $_FILES = daddslashes($_FILES); } functiondaddslashes($string, $force = 0) { if(!$GLOBALS

自定义防SQL注入函数

/************************************************ *SQL防注入函数 *@time 2014年6月24日18:50:59 * */ public function safe_replace($string){ $string = str_replace('%20','',$string); $string = str_replace('%27','',$string); $string = str_replace('%2527','',$stri

如何对抗、预防 SQL注入 攻击

一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不通的服务器和数据库特点进行SQL注入攻击 三.SQL注入攻击实例 比如在一个登录界面,要求输入用户名和密码: 可以这样输入实现免帐号登录: 用户名: 'or 1 = 1 – 密 码: 点登陆,如若没有做特殊处理,那么这个

预防sql注入

前言: 这两天做项目的时候发现很多小地方没有注意js或者sql注入,平时登录都是md5加密,今天突然发现记录一下. 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 过程: 类似这种很简单的页面 ,可能sql语句写法都如下: select* form table where title ='活动' 但是懂点sql的人 ,可以输入' or ''=', select* form table where title ='