php+mysql如何防止sql注入

news/2024/7/7 14:59:58

方法:

  1、预处理。(预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。)

  2、mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 !

  

$sql = "select count(*) as ctr from users where username

='".mysql_real_escape_string($username)."' and

password='". mysql_real_escape_string($pw)."' limit 1";

  3、打开magic_quotes_gpc来防止SQL注入。php.ini中有一个设置:magic_quotes_gpc = Off这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,比如把 ' 转为 \'等,对于防止sql注射有重大作用。

     如果magic_quotes_gpc=Off,则使用addslashes()函数。

  4、自定义函数:

  

/**

* 防止sql注入自定义方法一

* author: xiaochuan

* @param: mixed $value 参数值

*/ 

function check_param($value=null) { 

        #  select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile

    $str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile';

  

    if(!$value) {

  

        exit('没有参数!'); 

  

    }elseif(eregi($str, $value)) { 

  

        exit('参数非法!');

  

    }

  

    return true; 

} 

   

  

  

  

  

  

  

/**

* 防止sql注入自定义方法二

* author: xiaochuan

* @param: mixed $value 参数值

*/

function str_check( $value ) { 

  

    if(!get_magic_quotes_gpc()) { 

  

        // 进行过滤 

        $value = addslashes($value); 

  

    } 

  

    $value = str_replace("_", "\_", $value); 

  

    $value = str_replace("%", "\%", $value); 

       

   return $value; 

} 

   

  

  

  

  

  

/**

* 防止sql注入自定义方法三

* author: xiaochuan

* @param: mixed $value 参数值

*/

function post_check($value) { 

  

    if(!get_magic_quotes_gpc()) {

  

        // 进行过滤  

        $value = addslashes($value);

  

    } 

  

    $value = str_replace("_", "\_", $value); 

  

    $value = str_replace("%", "\%", $value); 

  

    $value = nl2br($value); 

  

    $value = htmlspecialchars($value); 

  

    return $value; 

}

 

转载于:https://www.cnblogs.com/573734817pc/p/11239410.html


http://www.niftyadmin.cn/n/2868278.html

相关文章

深挖大数据的大价值

作为在全国第一个举旗大数据的区域,西咸新区是陕西布局信息产业的战略重地,将成为陕西信息产业实现跨越式发展的基石。在这个全新的领域,陕西作为先行者的优势正在凸显,而作为探索者,仍有众多壁垒需要突破。 11月10日&…

10026---linux之sort用法

原文 sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:   sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序。 参  数: -b 忽略每行前面开始…

Spring Cloud 微服务架构学习笔记与示例

本文示例基于Spring Boot 1.5.x实现,如对Spring Boot不熟悉,可以先学习我的这一篇:《Spring Boot 1.5.x 基础学习示例》。关于微服务基本概念不了解的童鞋,可以先阅读下始祖Martin Fowler的《Microservice》,本文不做介…

大数据“撑起”线上消费金融

双11期间,各大线上购物商城纷纷亮出优惠绝招。与往年不同的是,竞争一路延伸到了消费金融领域,今年不只比低价,更比“赊账”。天猫分期购VS京东白条  日前,记者采访了蚂蚁微贷工作人员元秋。据他介绍,针对双11当天,天猫分期购推出了“11期0手续费”的分期服务。也就是说,当天的…

10002---二分查找

a) 前提条件:已排序的数组中查找 b) 二分查找的基本思想是:首先确定该查找区间的中间点位置: int mid (lowupper) / 2;然后将待查找的值与中间点位置的值比较:若相等,则查找成功并返回此位置。若中间点…

Spring boot传值注意事项

后台debug看到有获取到这个字段的值了,但就是传到前端后,就丢失了这个userId字段,觉得非常奇怪,想不通 后来看到 JsonIgnore 这个注解就知道原因了 共同学习,共同进步,若有补充,欢迎指出&#x…

高科技项目引领“大数据时代”

近日,青岛—惠普软件全球大数据应用研究及产业示范基地(以下简称“惠普大数据应用基地”)正式落户青岛灵山湾影视文化产业区,成为继东方影都后产业区引进的又一重点产业项目。该基地有望引领国内大数据产业发展的最新潮流。三个中心一个实验区  记者从惠普公司方面了解到,惠普…

eclipse安装axis2 教程

1.下载Axis2及Eclipse插件 下载地址:http://archive.apache.org/dist/axis/axis2/java/core/1.6.2/ 下载axis2-eclipse-codegen-plugin-1.6.2.zip axis2-eclipse-service-plugin-1.6.2.zip 2.解压文件,获取里面的jar包 3.关闭eclipse,将jar包复制到ecl…