《白帽子讲WEB安全》学习笔记之第7章 注入攻击-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

《白帽子讲WEB安全》学习笔记之第7章 注入攻击

简介:

第7章 注入攻击

SQL注入的两个条件:1,用户可以控制输入;2,原本执行的SQL语句并接了用户输入的数据。

7.1 sql注入

SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

盲注:

盲注是在服务器没错误回显时完成的注入攻击。服务器没有错误回显,对于攻击者而言缺少了非常重要的“调式信息”,所以攻击者需要找一个一个方法来验证注入的SQL是否已经执行。

盲注是根据多给条件进行判断,如果页面没有出错则表示存在注入点。

7.2 数据库攻击技巧

在网站中使用存储过程并不常见,虽然使用存储过程可以提高执行效率。但是会出现移植问题。

数据库字符需要统一编码,最好为UTF-8

7.3 正确地防御sql注入

防御方法:

q  使用预编译语句

q  使用存储过程

q  检查数据类型

q  使用安全函数

7.4 其他注入攻击

XML注入

Xml注入是通过改写xml的数据内容来实现。XML通常用于存储数据,如果用户提供的数据是以XML的方式进行存储,那么对攻击者来说,注入额外的、攻击者可能不能正常控制的XML是有可能的。

代码注入:

jseval()

jsp:include

CRLF注入:

就是回车(CR, ASCII13, \r) 换行(LF, ASCII10, \n)

换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lfline feed的概念,意思是一样的。

这两个ACSII字符不会在屏幕有任何输出,但在Windows中广泛使用来标识一行的结束。而在Linux/UNIX系统中只有换行符。

CRLF组合在一起即。

这中“CRLF”攻击可以在东方红项目中测试一下。

对于防御这种注入攻击,最好的办法就是“数据与代码分离”


本文转自 梦朝思夕 51CTO博客,原文链接:http://blog.51cto.com/qiangmzsx/1859551

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章