软 件 安 全
北京邮电大学计算机学院
信息安全系
张淼
zhangmiao@bupt.edu.cn
第四讲 SQL注入
1 SQL注入的概念与原理
2 如何实现SQL注入
3 几种攻击实例
4 防范措施
SQL注入攻击的背景
在计算机技术高速发展的今天,越来越让人们头疼的是面临越来越“变态”
和复杂的威胁网站技术,他们利用Internet 执行各种恶意活动,如身份窃取、
私密信息窃取、带宽资源占用等。这些活动可能仅仅是出于好奇,而有的可能针
对敏感信息,危害十分严重。
网站威胁的目标定位有多个维度,是个人还是公司,还是某种行业,都有
其考虑,甚至国家、地区、性别、种族、宗教等也成为发动攻击的原因或动机。
攻击还会采用多种形态,甚至是复合形态,比如病毒、蠕虫、特洛伊、间谍软
件、僵尸、网络钓鱼电子邮件、漏洞利用、下载程序、社会工程、rootkit、黑
客,结果都可以导致用户信息受到危害,或者导致用户所需的服务被拒绝和劫
持。
在这种环境下,认识学习并学会预防各种WEB攻击方式是十分必要的。
什么是SQL?
• SQL = Structured Query Language 结构化查询语言
• SQL语言使我们能够访问数据库
• 当前的主流SQL语言是 SQL99
• SQL能够:
- 执行对数据库的查询
- 获取数据库的信息
- 向数据库中插入新的记录
- 删除数据库中的记录
- 更新数据库中的记录
什么是SQL?
SQL语言有很多不同的版本,他们对相同的关键字有相似的
使用方式:
例如: SELECT, UPDATE, DELETE, INSERT, WHERE
但是,大多数SQL数据库程序都在SQL标准之上有自己独特
的特性!
SQL数据库
• 一个相关数据库包含一个或多个由表名确定的表格.
• 例如,下面是一个名字为”user”的表格,它包含由行和列确定的
数据:
userID
1
2
3
Name
John
Adam
Daniel
LastName
Smith
Taylor
Login
jsmith
adamt
Password
hello
qwerty
Thompson dthompson dthompson
SQL查询
• 利用SQL,我们能够查询数据库并且获得一个返回的结果
• 对于一个存在的表格,我们可以这样进行查询:
SELECT LastName
SELECT LastName
FROM users
FROM users
WHERE UserID = 1;
WHERE UserID = 1;
•返回如下结果:
LastName
LastName
--------------
--------------
Smith
Smith
SQL Data Manipulation Language (DML) 数据操纵语言
• SQL的更新,插入,删除记录语法:
• SELECT – 获取数据
• UPDATA – 更新数据
• INSERT INTO – 插入新数据
• DELETE – 删除数据