//注入的产生一般都是对用户输入的参数未做任何处理直接对条件和语句进行拼装.

  1. //不安全的写法举例1
  2. $_GET['id']=8;//希望得到的是正整数
  3. $data=M('Member')->where('id='.$_GET['id'])->find();
  4. $_GET['id']='8 or status=1';//隐患:构造畸形查询条件进行注入;
  5. //安全的替换写法
  6. $data=M('Member')->where(array('id'=>$_GET['id']))->find();//使用数组方式将自动使用框架自带的字段类型检测防止注入
  7. $data=M('Member')->where(array('id'=>(int)$_GET['id']))->find();//类型约束
  8. $data=M('Member')->where('id='.intval($_GET['id']))->find();//类型转换
  9. $data=M('Member')->where(array('id'=>I('get.id','','intval')))->find();//本人习惯写法
  10. $data=M('Member')->where(array('id'=>':id'))->bind(':id',I('get.id'))->select();//PDO驱动可以使用参数绑定
  11. $data=M('Member')->where("id=%d",array($_GET['id']))->find();//预处理机制
  12. //不安全的写法举例2
  13. $_GET['id']=8;//希望得到的是正整数
  14. $data=M()->query('SELECT * FROM `member` WHERE  id='.$_GET['id']);//执行的SQL语句
  15. $_GET['id']='8  UNION SELECT * FROM `member`';;//隐患:构造畸形语句进行注入;

防止注入的总的原则是<<根据具体业务逻辑,对来源于用户的值的范围,类型和正负等进行限制和判断>>,同时<<尽量使用THINKPHP自带的SQL函数和写法>>.

roczyl2014年04月02日
数字倒是好弄,int一下应该就行了。富文本该怎么弄?UTF8编码的是否用addslashes()函数就可以了呢?真心请教。

回复504771782014年04月02日
上面已经说过了,使用数组方式,参数绑定,预处理机制,只要是TP的写法而不是自己手动拼接,框架都会自动处理,都不会产生注入,而不用自己再使用addslashes函数.

回复roczyl2014年04月02日
回复 50477178 : 谢谢。

THINKPHP SQL注入处理方式的更多相关文章

  1. Hibernate一些防止SQL注入的方式

    Hibernate在操作数据库的时候,有以下几种方法来防止SQL注入,大家可以一起学习一下. 1.对参数名称进行绑定: Query query=session.createQuery(hql); qu ...

  2. [技巧篇]06.关于防止SQL注入的方式,不使用预处理

    在一期,二期阶段,有一些同学,对于SQL语句总是使用字符串的拼接,这是一个比较坏的毛病,这样非常影响我们的程序的安全性,所以一般情况下我们都推荐预处理模式,针对这种模式希望不了解的同学去努力学习,下面 ...

  3. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

    前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...

  4. SQL注入技术专题—由浅入深【精华聚合】

    作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23569276来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 不管用什么语言编写的Web应用 ...

  5. Go--避免SQL注入

    避免SQL注入 什么是SQL注入 SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞.可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出 ...

  6. SQL注入技术专题—由浅入深【精华聚合贴】

    SQL注入技术专题—由浅入深[精华聚合贴] 不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企 ...

  7. 数据库防火墙如何防范SQL注入行为

    SQL注入是当前针对数据库安全进行外部攻击的一种常见手段.现有主流应用大多基于B/S架构开发,SQL注入的攻击方式正是利用web层和通讯层的缺陷对数据库进行外部恶意攻击.将SQL命令巧妙的插入通讯的交 ...

  8. SpringMVC利用拦截器防止SQL注入

    引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...

  9. 实验八 Web基础 SQL注入原理

    实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...

随机推荐

  1. Clean Code 代码整洁之道

    军规:让营地比你来时更干净. 整洁代码 Leblanc : Later equals never. (勒布朗法则:稍后等于永不) 对代码的每次修改都影响到其他两三处代码. 修改无小事. 如同医生不能遵 ...

  2. mysql 严格模式 Strict Mode

    mysql 严格模式 Strict Mode 找到MySQL安装目录下的my.cnf(windows系统则是my.ini)文件 在sql_mode中加入STRICT_TRANS_TABLES则表示开启 ...

  3. Python 环境搭建(Win 安装以及Mac OS 安装)

    千里之行始于足下,今天我们先来学习 Python 环境搭建. 注意:本系列教程基于 Python 3.X Python 环境搭建 Win 安装 打开 Python 官网 https://www.pyt ...

  4. QPS、TPS、PV、UV、GMV、IP、RPS?

    QPS.TPS.PV.UV.GMV.IP.RPS QPSQueries Per Second,每秒查询数.每秒能够响应的查询次数. QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, ...

  5. [转帖]理解k8s 的 Ingress

    理解k8s 的 Ingress https://www.jianshu.com/p/189fab1845c5/ 暴露一个http服务的方式 service 是 k8s 暴露http服务的默认方式, 其 ...

  6. K number(思维和后缀以及3的特性)(2019牛客暑期多校训练营(第四场))

    示例1: 输入:600 输出:4 说明:'600', '0', '0', '00' are multiples of 300. (Note that '0' are counted twice bec ...

  7. xorm表结构操作实例

    获取数据库信息 package main import ( "fmt" _ "github.com/go-sql-driver/mysql" "git ...

  8. java 简单操作HDFS

    创建java 项目 package com.yw.hadoop273; import org.apache.hadoop.conf.Configuration; import org.apache.h ...

  9. Spring AOP日志实现(一)

    前置通知:获取访问的类,访问的方法,带参数和不带参数的 日志表信息描述字段: 获取访问时长:

  10. Arm-Linux 移植 ssh

    背景: 自己拥有一块开发板,但是苦于上面没有ssh,比较不方便.正好趁这个机会,移植ssh.我们使用的ssh是openssh. host平台 :Ubuntu 18.04 arm平台 : S5P6818 ...