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

  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. Python:使用第三方库xlwt来写Excel

    继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...

  2. MATLAB 求一个点周围 voronoi 边的顶点的坐标

    本代码在[MATLAB 2015b] 下编写运行成功,不保证所有版本适用. x=[0 -.5 1 1 -1]; y=[0 -1 -.5 1 1]; voronoi(x,y);axis([-2 2 -2 ...

  3. 2019最新黑链代码expression:隐藏链接代码

    之前有收集了一些主流的隐藏链接代码,最近又发现一种相当牛X的代码,如下: 源代码: <div style="position:absolute;left:expression(1-90 ...

  4. Android 7.0 之后相机/文件读写等权限获取方式改变,导致开启相机闪退

    在 Android 7.0 之前 Google 提供的动态申请权限的 API,可以调用相机拍照,访问SDcard等操作都只需要申请对应的权限,如下: <uses-permission andro ...

  5. go 数据渲染到html页面 02

    渲染到浏览器页面 //把数据渲染到浏览器 package main import ( "fmt" "text/template" "net/http& ...

  6. 『Python基础』第6节:流程控制之while循环

    在生活中经常遇到循环的事情, 比如循环列表播放歌曲等. 在Python中, 也有循环, 就是其流程控制语句while. 1. 基本循环 while 条件: 循环体 # 如果条件为真, 那么就执行循环体 ...

  7. 将springboot项目移到内网出现的问题!

    报找不到Jay包错误,在pom.xml文件中加这段 <repositories> <repository> <id>central</id> <u ...

  8. linux学习之路(一)--centos7安装JDK

    一.卸载centos自带jdk 1.rpm -qa | grep java 查看包含“java”关键字的安装包. 2.然后通过    rpm -e --nodeps   后面跟系统自带的jdk名    ...

  9. ajax实现文件上传,多文件上传,追加参数

    1.html部分实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  10. 日常hive遇到的问题

    1 hive中的复杂数据类型数据如何导入(array) 创建hive表 create table temp.dws_search_by_program_set_count_his( program_s ...