SQL注入是什么?
SQL注入攻击是黑客对数据库进行攻击常用手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection即SQL注入。SQL注入攻击属于数据库安全攻击手段之一,可以通过数据库安全防护技术实现有效防护,数据库安全防护技术包括:数据库漏扫、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统。另外SQL注入攻击会导致的数据库安全风险包括:刷库、拖库、撞库。
作用原理
- SQL命令可查询、插入、更新、删除等,命令的串接,而以分号字元为不同命令的区别。 (原本作用是用于SubQuery或作为查询、插入、更新、删除等的条件式)
- SQL命令对于传入的字串参数是用单引号字元所包起来。 (但连续2个单引号字元,在SQL资料库中则视为字串中的一个单引号字元)
- SQL命令中,可以夹带注解(连续2个减号字元 — 后的文字为注解,或“/*”与“*/”所包起来的文字为注解)
- 因此,如果在组合SQL的命令字串时,未针对单引号字元作取代处理的话将导致该字元变数,在填入命令字串时,被恶意窜改原本的SQL语法的作用。