第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是有可能的。
代码注入:
js:eval()
jsp:include
CRLF注入:
就是回车(CR, ASCII13, \r) 换行(LF, ASCII10, \n)。
换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lf是line feed的概念,意思是一样的。
这两个ACSII字符不会在屏幕有任何输出,但在Windows中广泛使用来标识一行的结束。而在Linux/UNIX系统中只有换行符。
CR和LF组合在一起即。
这中“CRLF”攻击可以在东方红项目中测试一下。
对于防御这种注入攻击,最好的办法就是“数据与代码分离”
时间: 2024-10-17 07:25:24