原理:

所谓SQL注入,就是通过SQL命令伪装成正常的HTTP请求参数传递到服务端,款骗服务器最终执行恶意的SQL命令,达到入侵目的。攻击者可以利用SQL注入漏洞,查询非授权信息,修改数据库服务器的数据,改变表结构,甚至是获取服务器root权限。总而言之,SQL注入漏洞的危害极大,攻击者采用的SQL指令决定了攻击的威力。目前涉及的大批量数据泄露的攻击事件,大部分都是通过SQL注入来实施的。

示例:

假设某个存在漏洞的网站登录页需要输入用户名和密码,后台接收到参数后是直接拼接SQL查数据库,如:

String sql = “select * from t_user where username = ‘” + name + ”’ and password = ‘” + pwd + ”’”;

正常情况下,如果密码不正确是查询不到数据的,现在某恶意用户输入的密码为:’ or ‘1’ = ’1

此时拼接的语句就成了:

String sql = “select * from t_user where username = ‘test’ and password = ‘’ or ‘1’ = ‘1’ ”;

显然此时可以查到数据,因为直接可以无需密码这个条件。

这只是最简单的示例,真实情况中黑客会想尽一切办法钻SQL的漏洞。一旦被攻击者找到漏洞,轻则盗取数据、欺骗网站进行登录,重则直接加入drop/delete等语句删库跑。

防御措施:

1. 使用预编译语句或ORM框架:

感谢现在很多实用的持久层框架,不仅提高编码效率,而且很多问题在框架层面解决了。比如框架一般会使用占位符/变量的方式代替拼接SQL,这样的话引号这种敏感字符会被转义,不会当成SQL来执行。在开发过程中尽量不要随意拼接原生SQL语句。

2. 避免密码明文存放:

对存储的密码进行单向Hash,如使用MD5对密码进行摘要。不过近年来MD5也可能被彩虹表法进行破解,因此安全起见还可以使用哈希加盐法(Hash + Salt),即给密码末尾加点料(一串私有key)然后再进行Hash,这样就很难破解了。

3. 处理好异常:
许多老旧网站,一遇到500异常就直接把错误信息、数据库字段、甚至代码堆栈信息都打印在页面上了,这是非常危险的,一眼就能看出后台使用什么语言、技术、数据库等,所以我们一定要在代码中定义好全局性异常捕捉,不要把服务端信息暴露到前端页面。

参考书籍:

《大型分布式网站架构设计与实践》陈康贤著

SQL注入攻击原理与防御措施相关推荐

  1. 什么是SQL注入攻击?SQL注入攻击原理是什么?

    SQL注入攻击是网络安全中非常常见的攻击方式之一,该攻击隐蔽性好.危害大.操作方便,也是各大企业及站长最容易遇到的攻击方式.那么SQL注入攻击原理是什么?如何防范?接下来跟着小编来看看吧. SQL注入 ...

  2. SQL注入攻击原理及防护方案

    SQL注入攻击是对web应用程序最常见的攻击之一.它是一种恶意攻击,攻击者在向数据库服务器发送查询请求时,会在查询语句中添加恶意代码,从而对服务器造成损害.SQL注入攻击的目的是破坏服务器的安全性,通 ...

  3. CSRF攻击原理及防御措施

    CSRF,即跨站请求伪造(Cross-site request forgery) 攻击原理 用户登录受信任网站A,产生cookie 用户访问攻击网站B,网站B返回攻击代码并发出要登录网站A的请求 网站 ...

  4. SQL注入攻击的原理、分类和防御方法

    一.SQL注入攻击原理 恶意用户在提交查询请求的过程中将SQL语句插入到请求内容中,同时程序本身对用户输入内容过分信任而未对恶意用户插入的SQL语句进行过滤,导致SQL语句直接被服务端执行. 二.SQ ...

  5. 防止SQL注入攻击的一些方法小结

    SQL注入攻击的危害性很大.在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理.这有利于管理员采取有针对性的防治措施.一. SQL注入攻击的简单示例.statement := " ...

  6. SQL 注入攻击介绍

    目录 1.什么是 SQL 注入攻击? 2.如何防止 SQL 注入攻击? 3.使用参数化 SQL 语句防止 SQL 注入攻击的原理是什么? 4.什么是 SQL 预编译? 1.什么是 SQL 注入攻击? ...

  7. SQL注入攻击及其防范检测技术研究

    2008-12-18  来自:51CTO  作者:陈小兵 本文简要介绍了SQL注入攻击的原理,SQL注入攻击实现过程,并在此基础上给出了一种SQL注入攻击的自动防范模型. 1  SQL注入攻击概述 1 ...

  8. 服务器安全:浏览器同源策略与跨域请求、XSS攻击原理及防御策略、如何防御CSRF攻击

    主要包括 浏览器同源策略与跨域请求 XSS攻击原理及防御策略 如何使用SpringSecurity防御CSRF攻击 CC/DDOS攻击与流量攻击 什么是SSL TLS HTTPS? 一.浏览器的同源策 ...

  9. SQL注入攻击是什么?如何有效应对?

    SQL注入攻击是网络安全中非常常见的攻击方式之一,该攻击隐蔽性好.危害大.操作方便,也是各大企业及站长最容易遇到的攻击方式.那么SQL注入攻击原理是什么?如何防范?接下来跟着小编来看看吧. SQL注入 ...

  10. 什么是sql注入攻击,它的原理及防御方法有哪些?

    SQL注入攻击是一种利用Web应用程序对SQL语句的输入验证不严格的漏洞,将恶意代码插入到SQL语句中的攻击行为.通过这种攻击,攻击者可以绕过应用程序的认证和授权机制,直接访问数据库中的敏感信息,或者 ...

最新文章

  1. php批量修改文件名
  2. 访问进程环境变量environ时的一个坑
  3. no java virtual machine was found after searching Failed to load the JNI shared library
  4. 关于Unity中NGUI的背包实现之Scrollview(基于Camera)
  5. Android高性能ORM数据库DBFlow入门
  6. ubuntu下docker简单安装mysql
  7. atomic原子类实现机制_JDK中Atomic开头的原子类实现原子性的原理是什么?
  8. java objective-c,Objective-C基础教程学习笔记(附录)从Java转向Objective-C
  9. 第6章:可维护性软件构建方法 6.1可维护性的度量和构造原则
  10. mysql 判断指定条件数据存不存在,不存在则插入
  11. sysmain服务怎么启动 Win7 SuperFetch无法启动
  12. pandas计算相关系数
  13. 自动打卡python脚本_Centos7从零开始配置py每日自动打卡脚本
  14. 彼时彼刻恰似此时此刻
  15. LaTex特殊字符和符号
  16. 学习C语言基本思路与参考书籍
  17. 挺带劲!这款免费开源的监控系统真强大~
  18. 华为云服务器上安装jdk和部署tomcat
  19. 换工作记(二)----- 2008个人简历
  20. IOS8,9 TouchID开发(两行代码实现)Swiftor,OCer都能看懂(献给初学者)

热门文章

  1. 什么是推荐系统以及应用场景
  2. Ant Design暗黑模式设计解析
  3. 颠覆三观,内存真能当SSD用了!!!
  4. fmea第五版pfmea表格_FMEA第五版中文版.pdf
  5. Linux下安装gcc5.5
  6. Python帮助文档的设置
  7. java 8下载_java8下载-java8 64位官方版下载最新免费版-乡巴佬
  8. 数据结构与算法(java)
  9. [PHP] 解决:hex2bin(): Hexadecimal input string must have an even length
  10. python处理地震sac数据_Fortran批量读取SAC地震数据文件,写SAC文件,并转换成SEGY...