目录
主要的Web攻击类型有:
-
SQL注入:攻击者通过输入特殊的SQL语句,来操纵后台数据库。
-
跨站脚本攻击(XSS):攻击者注入恶意的JavaScript代码,来攻击网站用户或获取敏感信息。
-
目录遍历:攻击者访问网站的未授权目录,获取源码、文件或数据库等敏感信息。
-
文件上传漏洞:攻击者上传webshell等程序,来获取网站控制权。
-
缓冲区溢出(Buffer Overflow):攻击者通过输入过长的输入,超过程序缓存区大小,来执行任意代码。
-
本地文件包含(LFI):攻击者通过包含网站本地文件,来获取敏感信息。
-
远程文件包含(RFI):攻击者通过包含网站外部URL,来执行任意代码或获取信息。
-
身份验证/会话 attacks:如强密码、会话缓存的不足等,使攻击者伪装成合法用户。
-
DoS/DDoS 攻击:拒绝服务/分布式拒绝服务攻击,用大量请求瘫痪网站。
-
击穿(Web Hammering):大量请求同一资源,超过后台资源限制,造成效率降低或瘫痪。
以上是最常见的Web攻击类型,防范手段主要包括输入校验、过滤、授权、加固等。不过最根本的还是修补好Web应用中的漏洞。
一、SQL注入
主要的SQL注入方式有:
-
字符串注入:使用单引号'或者双引号"将SQL语句包住,形成完整的SQL语句。
-
字符注入:使用特殊字符如 ; / * 等进行注入。
-
盲注:利用布尔型SQL语句并根据返回结果来推测后台信息。
-
time盲注:利用SQL中的time相关函数来推测后台信息。
-
union查询:使用union操作符来合并查询,从而获取非法数据。
-
into outfile注入: 通过into outfile导出数据库数据。
-
load_file注入:使用load_file函数读取后台文件。
-
存储过程注入:使用存储过程来执行后台非法SQL。
简单的防御手段包括:
-
过滤特殊字符:如 ; / * 等。
-
屏蔽关键字:如 union select into outfile等。
-
参数化查询:使用参数化查询语句,而非直接拼接SQL。
-
限制查询结果:限制返回的结果长度,阻止盲注。
-
验证用户输入:检查用户输入数据类型、长度等是否合理。
最好的方法还是将SQL注入当作缺陷直接修复,避免接受不可信任的数据作为SQL条件。
二、跨站脚本漏洞XSS
主要的跨站脚本攻击(XSS)方式有:
-
反射型XSS:攻击者构造URL, victims加载该URL后执行攻击代码。
-
存储型XSS:攻击者将攻击代码存储在网站数据库中,其他用户加载该页面时执行。
-
DOM型XSS:攻击者构造URL,更改浏览器DOM树结构,攻击者利用DOM操作来执行攻击代码。
-
埋点型XSS: 在图片URL、Flash等嵌入式对象中埋入攻击代码。
防御手段主要有:
-
过滤特殊字符:如< > " ' / 等可能构成XSS代码的字符。
-
编码输出内容:对用户提交的内容使用HTML/JavaScript编码,阻止XSS代码执行。
-
CSP(Content Security Policy):通过HTTP头指定可信任的内容源,阻止非指定内容执行。
-
验证用户输入:检查用户输入是否合理,避免包含完整的HTML/JavaScript代码。
-
防火墙和WAF:网站应用程序防火墙(WAF)可以识别和过滤XSS攻击请求。
最好的方法是通过绝对过滤用户输入、编码输出,以及使用CSP等方式避免XSS。
常见的XSS Payload有:
<script>alert(document.cookie)</script> <img src="x" οnerrοr="alert(document.cookie)">
通过插入上述代码,即可弹出co