SQL注入——基础概念
目录
1.什么是sql注入?
2.为什么要了解sql注入?
3.sql注入原理
4.sql注入漏洞存在的原因
5.sql语言概述
6.学习sql语言的意义
一.什么是SQL注入?
-
正常的web端口访问
正常访问是web传入程序设计者所希望的参数值,由程序查询数据库完成处理后,呈现结果页面给用户。 -
SQL注入是如何访问?
SQL注入也是正常的web端口访问。
只是传入的参数值并非是程序设计者所希望的,而是传入了嵌套SQL代码的参数值。
参数值利用程序处理注入者的逻辑,按注入者的期望执行数据库查询。
页面甚至可以呈现按SQL注入者期望的样子显示。 -
SQL注入:是通过应用程序把带有SQL代码的参数传递给数据库引擎。
二.为什么要了解SQL注入?
- SQL注入危害大
黑客最终的目标是数据,SQL注入是直达数据库引擎,甚至提权后可以与系统层交互,敏感数据可能被泄露、破坏的风险。 - SQL注入隐秘性强
SQL注入也是正常的web端口访问,系统或者数据库管理员不易发觉,可能被攻击者长期控制系统或者数据库。 - SQL注入具有普遍性
SQL关系数据库行业的通用标准,SQL注入不仅是MySQL的问题,也是其它使用SQL的数据库的问题,有证据表明,60%以上有网站具有SQL注入漏洞。 - 知己知彼,目标为防
深入了解SQL注入的终极目标是做好防范。提高数据安全意识,把数据安全提高到一定的战略高度。
三.浅谈SQL注入工作原理
1.正常的访问
$sql="SELECT * FROM users WHERE login ='$uname' AND password ='$pwd'"
PHP程序传入结果参数:$uname=‘sumoka’
$pwd=‘123456’
结果:SELECT * FROM users WHERE login = ‘sumoka’ AND password = ‘123456‘
2.SQL注入访问
$sql="SELECT * FROM users WHERE login ='$uname' AND password ='$pwd'"
PHP程序传入结果参数:$uname= ' ' or 1=1 --
$pwd=‘123456’
结果:SELECT * FROM users WHERE login = ' ' or 1=1 --AND password = '123456'
四.SQL注入漏洞存在的根本原因
SQL注入漏洞是应用程序的问题,而不是系统或者数据库的问题。
SQL注入本质的原因是人对数据安全的意识薄弱。或者即使有安全的意识,而程序员对如何防范无从下手。因此导致程序没有对用户输入数据的合法性进行检查,对传入参数的安全性没有完全的过滤。
五.什么是SQL语言?
- SQL:结构化查询语言(Structured Query Language)
- SQL的功能:查询数据库,它能插入、更新、删除和查询数据库并返回结果等。
- SQL语言分类包括:
DDL 数据定义语言(Data Definition Language )
DML 数据操作语言(Data Manipulation Language )
DCL 数据控制语言(Data Control Language)
六. 了解SQL语言的意义
- SQL注入的本质是什么?
SQL注入的本质实际上是SQL语言的拼图游戏或者填空游戏。 - SQL注入的目标
SQL注入的目标明确就是查询数据或控制系统。
(1)查询:利用复杂的select查询获取信息,如管理员用户名和密码信息
(2)插入:在管理员用户表中插入一条记录试图获得后台管理员权限
(3)更新:更新用户数据,进行提取,或者修改敏感数据。
(4)删除:删除管理员权限记录,清除脚印,破坏数据等。
因此,精通SQL语言是SQL注入的基础。
SQL注入——基础概念
目录
1.什么是sql注入?
2.为什么要了解sql注入?
3.sql注入原理
4.sql注入漏洞存在的原因
5.sql语言概述
6.学习sql语言的意义
一.什么是SQL注入?
-
正常的web端口访问
正常访问是web传入程序设计者所希望的参数值,由程序查询数据库完成处理后,呈现结果页面给用户。 -
SQL注入是如何访问?
SQL注入也是正常的web端口访问。
只是传入的参数值并非是程序设计者所希望的,而是传入了嵌套SQL代码的参数值。
参数值利用程序处理注入者的逻辑,按注入者的期望执行数据库查询。
页面甚至可以呈现按SQL注入者期望的样子显示。 -
SQL注入:是通过应用程序把带有SQL代码的参数传递给数据库引擎。
二.为什么要了解SQL注入?
- SQL注入危害大
黑客最终的目标是数据,SQL注入是直达数据库引擎,甚至提权后可以与系统层交互,敏感数据可能被泄露、破坏的风险。 - SQL注入隐秘性强
SQL注入也是正常的web端口访问,系统或者数据库管理员不易发觉,可能被攻击者长期控制系统或者数据库。 - SQL注入具有普遍性
SQL关系数据库行业的通用标准,SQL注入不仅是MySQL的问题,也是其它使用SQL的数据库的问题,有证据表明,60%以上有网站具有SQL注入漏洞。 - 知己知彼,目标为防
深入了解SQL注入的终极目标是做好防范。提高数据安全意识,把数据安全提高到一定的战略高度。
三.浅谈SQL注入工作原理
1.正常的访问
$sql="SELECT * FROM users WHERE login ='$uname' AND password ='$pwd'"
PHP程序传入结果参数:$uname=‘sumoka’
$pwd=‘123456’
结果:SELECT * FROM users WHERE login = ‘sumoka’ AND password = ‘123456‘
2.SQL注入访问
$sql="SELECT * FROM users WHERE login ='$uname' AND password ='$pwd'"
PHP程序传入结果参数:$uname= ' ' or 1=1 --
$pwd=‘123456’
结果:SELECT * FROM users WHERE login = ' ' or 1=1 --AND password = '123456'
四.SQL注入漏洞存在的根本原因
SQL注入漏洞是应用程序的问题,而不是系统或者数据库的问题。
SQL注入本质的原因是人对数据安全的意识薄弱。或者即使有安全的意识,而程序员对如何防范无从下手。因此导致程序没有对用户输入数据的合法性进行检查,对传入参数的安全性没有完全的过滤。
五.什么是SQL语言?
- SQL:结构化查询语言(Structured Query Language)
- SQL的功能:查询数据库,它能插入、更新、删除和查询数据库并返回结果等。
- SQL语言分类包括:
DDL 数据定义语言(Data Definition Language )
DML 数据操作语言(Data Manipulation Language )
DCL 数据控制语言(Data Control Language)
六. 了解SQL语言的意义
- SQL注入的本质是什么?
SQL注入的本质实际上是SQL语言的拼图游戏或者填空游戏。 - SQL注入的目标
SQL注入的目标明确就是查询数据或控制系统。
(1)查询:利用复杂的select查询获取信息,如管理员用户名和密码信息
(2)插入:在管理员用户表中插入一条记录试图获得后台管理员权限
(3)更新:更新用户数据,进行提取,或者修改敏感数据。
(4)删除:删除管理员权限记录,清除脚印,破坏数据等。
因此,精通SQL语言是SQL注入的基础。