1.GPC/RUNTIME魔术引号

  • magic_quotes_gpc负责对GET,POST,COOKIE的值进行过滤。
  • magic_quotes_runtime对从数据库或者文件中获取的数据进行过滤。

通常在开启这两个选项之后能防住部分SQL注入漏洞被利用,因为我们之前也介绍了,在某些环境下存在绕过,在INT型注入上是没有多大作用的。

通常数据污染有两种方式。

  • 一种是应用被动接受参数,类似于GET,POST等。
  • 还有一种是主动获取参数,类似于读取远程页面或者文件内容等。所以防止SQL注入的方法就是要守住这两条路。

2.过滤函数和类

在PHP5.4之前,可以利用魔术引号来解决部分SQL注入的问题。而GPC在面对INT型注入时,也无法进行很好的防御。所以在通常的工作场景中,用得多的还是过滤函数和类。不过如果单纯的过滤函数写得不够严谨,也会出现绕过的情况。这时候可以使用预编译语句来绑定变量,一般情况下这是防御SQL注入的最佳方式。

常用过滤函数:

  • addslashes
  • 函数
  • mysql[real]escape_string
  • 函数
  • intval
  • 等字符转换

3.设计输入验证和处理策略

输入验证是一种在保护应用程序安全方面很有用的工具。不过,他只能作为深度防御策略(包含多个防护层以保护应用程序的总体安全)的一个子部分。

  • 在应用程序输入层使用白名单输入验证以便验证所有用户输入都符合应用要接收的内容。应用只允许接收符合期望格式的输入
  • 在客户端浏览器上同样执行白名单输入验证,这样可以防止为用户输入不可接收的数据时服务器和浏览器的往返传递。不能将该操作作为安全控制手段,因为攻击者可以修改来自用户浏览器的所有数据。
  • 在Web应用防火墙(WAF)层使用黑名单和白名单输入验证(以漏洞“签名”和“有经验”行为的形式)以便提供入侵检测/阻止功能和监控应用攻击。
  • 在应用程序中自始自终地使用参数化语句以保证执行安全地SQL执行。
  • 在使用从数据库中提取数据之前恰当地对其进行编码。例如将浏览器中显示的数据针对跨站脚本进行编码。
  • 在应用程序中自始自终地使用参数化语句以保证执行安全地SQL执行

4.其他防护方案

领域驱动的安全性

  • SQL注入之所以发生,是因为我们的应用程序不正确地将数据在不同表示方式之间进行映射。
  • 通过将数据封装到有效值对象中,并限制对原始数据的访问,我们就可以控制对数据的使用。

编码输出

  • 确保对包含用户可控制输入的查询进行正确的编码以防止使用单引号或其他字符来修改查询。
  • 如果正在使用LIKE子句,请确保LIKE中的通配符恰当编码。
  • 在使用从数据库接收到的数据之前确保已经对数据中的敏感内容进行了恰当的输入验证和输出编码。

SQL注入——SQL注入具体防御方案相关推荐

  1. sql md5函数_【学习笔记】常见漏洞:SQL注入的利用与防御

    第   21 课   SQL注入的利用与防御 课程入口(付费) 个人背景 李,本科,电子信息工程专业,毕业一年半,有JavaScript的,PHP,Python的语言基础,目前自学网络安全中. SQL ...

  2. SQL注入及其危害、防御手段

    一.什么是SQL注入 SQL(Structured Query Language),即结构化查询语言,用于操作关系型数据库管理系统.目前,大多数Web编程语言提供了操作SQL的接口,以方便与数据库进行 ...

  3. sql注释符注入防御_WAF的SQL注入绕过手段和防御技术

    一.关于SQL注入 SQL注入是一种常见的入侵WEB应用的手法.SQL注入是利用应用系统的编程漏洞和SQL语言的语法特征,改变原始的SQL语句执行逻辑而产生的. 攻击者向Web应用发送精心构造的输入数 ...

  4. 安全测试-安装 sqli-labs 靶场及Sql注入原理、手动、自动注入、检测及防御

    安装 sqli-labs 靶场 sqli-labs 是一款用于学习 SQL 注入的靶场平台,覆盖了各种类型的 SQL 注入,题目共 75 道,按难度划分为 4 页.sqli-labs 靶场的项目开源地 ...

  5. SQL万能钥匙注入的终结版

    我们登录一个网站的时候会有账户名和密码都要输入进去.这样的方法禁止非法进入网站,它是这样构造SQL语句的,假设填写用户名为marcofly密码为test.因为根据我们提交的用户名和密码被合成到SQL查 ...

  6. SQL注入-SQL注入的WAF绕过(十六)

    实验目的 普及熟悉利用重写等方式绕过WAF关键字过滤.以实现SQL注入的方法.PS:面试时不要说打WAF靶场什么东西,就说重复大小写编码什么之类的 基本概念 WAF(WebApplicationFir ...

  7. sql注入pythonpoco_SQL注入原理与解决方法代码示例

    一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网 ...

  8. 注入——sql注入命令

    SQL注入漏洞防御 SQL注入-结构化查询语言,是一种特殊的编程语言,用于数据库的标准数据库查询. SQL 注入(SQL Injection)是一种常见的Web 安全漏洞.攻击者利用这个漏洞,可以增删 ...

  9. DVWA通关--SQL注入(SQL Injection)

    目录 LOW 通关步骤 一.手工注入 二.sqlmap注入 代码分析 MEDIUM 通关步骤 方法一.手工注入 方法二.sqlmap注入 代码分析 HIGH 通关步骤 方法一.手工注入 方法二.sql ...

  10. concat mysql sql注入_sql注入-mysql注入基础及常用注入语句

    最近在教学中,关于SQL注入,总发现学生理解起来有些难度,其实主要的原因是对各类数据库以及SQL语句不熟悉,今天先介绍mysql注入需要掌握的基础, Mysql内置information_schema ...

最新文章

  1. JAVA编程TXT文件_java开发之读写txt文件操作的实现
  2. mybatis配置ehcache缓存
  3. Python 深度学习目标检测评价指标 :mAP、Precision、Recall、AP、IOU等
  4. 【LuoguP33294123】[ZJOI2011]最小割[CQOI2016]不同的最小割
  5. Django(part49)--用Django自带的User模型类进行模拟登录
  6. HTTPS和TCP的关系
  7. 如何使用Kubernetes官网的免费测试集群学习Kubernetes操作
  8. 【转】C#中ToString()格式详解
  9. mpvue 微信小程序设置背景音乐
  10. 安装redis k8s_K8S 生态周报| Docker v19.03.6-rc2 发布
  11. PHP爬虫框架phpspider(二) - 分页爬取写入数据库
  12. matlab封闭曲线拟合 (针对一些列离散点)
  13. 解决SpringMVC的GET请求中文乱码
  14. python 省份排序_Python常用的排序
  15. android 外文翻译,Android外文文献翻译.doc
  16. https免费泛域名证书申请
  17. 实验二 SQL Server数据查询
  18. navicat oracle存储过程,Navicat 运行 Oracle 存储过程示例
  19. jira -workflow之父级任务关注人copy到子任务
  20. uoj #311.【UNR #2】积劳成疾 dp

热门文章

  1. 适合学计算机用的机械键盘,什么机械键盘好用2017 LOL职业玩家用什么键盘好
  2. 不知怎么选,用RFM模型看舔狗质量!
  3. Linux系统安全和应用
  4. 如何快速查询学术会议
  5. 第三次工业革命(四)
  6. M5Product: Self-harmonized Contrastive Learning for E-commercial Multi-modal Pretraining 论文解读
  7. Android百度地图短链分享的使用
  8. ddk开发基础 makefile和source文件
  9. mysql double转字符串_MySQL 字符串 转 int/double CAST与CONVERT 函数的用法
  10. 常用布局方式与常用css