- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * SQL 注入攻击 朱虹 华中科技大学计算机学院 问 题 1. 什么是SQL注入攻击? 2. SQL注入攻击的分类? 3. SQL注入攻击的危害? 4. 常见的SQL 注入攻击的过程? 5. 怎样防止SQL注入攻击? 6. 我们介绍SQL注入攻击的目的 1. 什么是SQL注入攻击? 不够完整的定义: 脚本注入式攻击,恶意用户输入用来影响被执行的SQL脚本; 从一个数据库获得未经授权的访问和直接检索; 利用SQL语法,针对应用程序开发者编程中的漏洞,往应用程序中插入一些SQL语句,从而能够操作不可访问的数据的方法。 通过在应用程序中预先定义好的查询语句结尾加上额外的SQL语句元素,使得数据库服务器执行非授权的查询。 1. 什么是SQL注入攻击? —— 一个实例 例1:现有的网络应用程序大多没有充分利用DBMS的身份验证功能,而是在数据库中建立一张表(例如表名为user_table),保存访问应用系统的用户名及其密码,实际访问数据库服务器的只有一个用户。 当使用JSP(或ASP)编写一个简单的验证登录的网页程序时,该页面要求用户输入用户名(input_ username)和密码(input_password)。 提交后由后台应用程序通过拼接: select * from user_table where username = + input_ username + and password = + input_password + ;动态生成一个SQL语句。 通过验证结果是否为空来判断用户是否为合法用户。 1. 什么是SQL注入攻击? —— 一个实例 攻击方法: 在用户名框输入:zhuhong 在密码框输入:or 1 = 1 后台应用程序组装的SQL语句是: select * from user_table where username = zhuhong and password = or 1 = 1 ; ——这个语句的执行结果是什么? 2. SQL注入攻击的分类? 《Introduction to SQL Injection Attacks for Oracle Developers》将Oracle数据库中的SQL注入攻击分为4类: SQL Manipulation (SQL操纵) Code Injection (代码注入) Function Call (函数调用) Buffer Overflows (缓冲区溢出) 2. SQL注入攻击的分类? SQL Manipulation (SQL操纵) 最常见的一种SQL注入攻击方法。攻击者一般试图通过增加where子句中的条件或者用集合操作符(如UNION、INTERSECTION或MINUS)扩展SQL语句,达到修改SQL语句的目的。 例2:select product_name from all_products where product_ name like %chairs%; 攻击者可以让上面的SQL语句变成: select product_name from all_products where product_ name like ‘%chairs’ UNION select username FROM dba_users where username like ‘%’; 注意使用UNION要注意的问题 2. SQL注入攻击的分类? Code Injection(代码注入) SQL注入攻击者试图向现有的SQL语句中增加额外的SQL语句或者命令。 例3:select * from users where username=bob and password=mypassword; delete form users where username =admin; 在SQL-Server中可能注入成功,但在Oracle中会报错。原因在于SQL Server支持多句执行,而Oracle不允许。 2. SQL注入攻击的分类? Code Injection (代码注入) Oracle中一些动态执行的匿名存储过程,对于代码注入攻击十分脆弱。 例4:在一个Web应用程序中执行的存储过程: BEGIN ENCRYPT_PASSWORD (bob, mypass word); END; BEGIN ENCRYPT_PASSWORD (bob, mypass word); DELETE FROM users WHERE upper (username) = upper (admin); END 2. SQL注入攻击的分类? Function Call (函数调用) 将数据库函数或者自定义函数插入到一个脆弱的SQL语句中。这些函
原创力文档


文档评论(0)