SQL注入——基础概念

目录

1.什么是sql注入?
2.为什么要了解sql注入?
3.sql注入原理
4.sql注入漏洞存在的原因
5.sql语言概述
6.学习sql语言的意义

一.什么是SQL注入?

  1. 正常的web端口访问
    正常访问是web传入程序设计者所希望的参数值,由程序查询数据库完成处理后,呈现结果页面给用户。

  2. SQL注入是如何访问?
    SQL注入也是正常的web端口访问。
    只是传入的参数值并非是程序设计者所希望的,而是传入了嵌套SQL代码的参数值。
    参数值利用程序处理注入者的逻辑,按注入者的期望执行数据库查询。
    页面甚至可以呈现按SQL注入者期望的样子显示。

  3. SQL注入:是通过应用程序把带有SQL代码的参数传递给数据库引擎。

二.为什么要了解SQL注入?

  1. SQL注入危害大
    黑客最终的目标是数据,SQL注入是直达数据库引擎,甚至提权后可以与系统层交互,敏感数据可能被泄露、破坏的风险。
  2. SQL注入隐秘性强
    SQL注入也是正常的web端口访问,系统或者数据库管理员不易发觉,可能被攻击者长期控制系统或者数据库。
  3. SQL注入具有普遍性
    SQL关系数据库行业的通用标准,SQL注入不仅是MySQL的问题,也是其它使用SQL的数据库的问题,有证据表明,60%以上有网站具有SQL注入漏洞。
  4. 知己知彼,目标为防
    深入了解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语言的意义

  1. SQL注入的本质是什么?
    SQL注入的本质实际上是SQL语言的拼图游戏或者填空游戏
  2. SQL注入的目标
    SQL注入的目标明确就是查询数据或控制系统。
    (1)查询:利用复杂的select查询获取信息,如管理员用户名和密码信息
    (2)插入:在管理员用户表中插入一条记录试图获得后台管理员权限
    (3)更新:更新用户数据,进行提取,或者修改敏感数据。
    (4)删除:删除管理员权限记录,清除脚印,破坏数据等。

因此,精通SQL语言是SQL注入的基础。

发布了23 篇原创文章 · 获赞 14 · 访问量 687

猜你喜欢

转载自blog.csdn.net/weixin_45253216/article/details/104652959