一、SQL注入攻击的原理
攻击者在HTTP请求中,注入恶意的SQL代码,并在服务端执行。
比如用户登录,输入用户名camille,密码 ' or '1'='1 ,如果此时使用参数构造的方式,就会出现

select * from user where name = 'camille' and password = '' or ''=''

不管用户名和密码是什么,查询出来的用户列表都不为空,这样可以随意看其他用户的信息。

二、SQL注入攻击的出现场景

1、url参数提交
2、表单提交
3、cookie参数提交
4、http请求头部可修改的值比如referer,userAgent

三、SQL注入攻击的防御

1、客户端

  • 限制字符串输入的长度;
  • 有效性检验。
//过滤URL非法SQL字符,或者过滤文本框非法字符。
var sUrl = location.search.toLowerCase();
var sQuery = sUrl.substring(sUrl.indexOf("=")+1);
reg=/select|update|delete|truncate|join|union|exec|insert|drop|count|'|"|;|>|<|%/i;
if(reg.test(sQuery))
{
alert("请勿输入非法字符");
location.href = sUrl.replace(sQuery,"");
}

2、服务端

  • 使用预编译语句,绑定变量;
  • 严格检查用户数据,有效性检验,防止攻击者绕过客户端请求;
  • 永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取;
  • 过滤SQL需要的参数中的特殊字符,比如单引号、双引号。

最新文章

  1. java 初始化顺序
  2. Shell 脚本实现随机抽取班级学生
  3. 使用File类列出指定位置下的文件及目录信息
  4. Ninject之旅之三:Ninject对象生命周期
  5. apache 一域名下多个二级域名如何做设置?
  6. 如何用ZBrush雕刻出栩栩如生的头发(一)
  7. 【初识】KMP算法入门(转)
  8. (转)ASP.NET并发处理
  9. 转:二十七、Java图形化界面设计——容器(JFrame)
  10. C#中&amp;与&amp;&amp;的区别
  11. NSOJ Minimum Transport Cost
  12. callback in C
  13. 用户输入与while循环
  14. 【vuejs深入三】vue源码解析之二 htmlParse解析器的实现
  15. 学习java的阶段性理解(其它语言也一样)
  16. oracle 删除用户
  17. JQ版本对比
  18. adb命令大全
  19. Instruments学习之Allocations
  20. Web前端基础——HTML

热门文章

  1. 【leetcode 简单】 第五十九题 同构字符串
  2. HDU 4370 0 or 1 (最短路)
  3. js鼠标自定移入输入框文本框光标自动定位到文本框
  4. 【杂谈】需要mark的一些东西
  5. iptables详细设置
  6. python小工具之读取host文件
  7. word文档下划线无法显示的解决方法
  8. Scrapy官网程序执行示例
  9. 【Android开发日记】之入门篇(九)——Android四大组件之ContentProvider
  10. CSS--盒子模型详解