PHP如何防止SQL注入式攻击

      由于程序开发人员对程序中的一些数据类型没有经过检查、向 MYSQL 提交正确的数据类型以及特殊数据的转义,导致程序容易受SQL注入式攻击。就此,PHP对此已提供了安全的设置及内置函数来防止此问题的发生。以下就个人在开发应用中写点........

1、magic_quotes_runtime 设置
当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。如果设定了 magic_quotes_runtime为 on 那么提交的数值就会自动将 ' 变成 /' 。为了使自己的程序不管服务器是什么设置都能正常执行,在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉。当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用 set_magic_quotes_runtime()与 get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。

2、magic_quotes_gpc 设置
magic_quotes_gpc 设置是否自动为GPC(get,post,cookie)传来的数据中的' " / 加上反斜线。可以用 get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查 询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(/)与 NUL(NULL 字符)。即 ' 变成 /', "变成 /"。

3、一些常用的内置函数(addslashes , stripslashes ,htmlspecialchars,trim......)

define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
function strAddslashes($string, $force = 0, $strip = FALSE) {
    if(!MAGIC_QUOTES_GPC || $force) {
        if(is_array($string)) {
            foreach($string as $key => $val) {
                $string[$key] = strAddslashes($val, $force);
            }
        } else {
            $string = addslashes($strip ? stripslashes($string) : $string);
            //stripslashes -- 去掉反斜线字符
        }
    }
    return $string;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值