1. 什么是 Web
攻击
Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为
如植入恶意代码,修改网站权限,获取网站用户隐私信息等等
Web应用程序的安全性是任何基于Web业务的重要组成部分
确保Web应用程序安全十分重要,即使是代码中很小的 bug 也有可能导致隐私信息被泄露。
站点安全就是为保护站点不受未授权的访问、使用、修改和破坏而采取的行为或实践。
我们常见的Web攻击方式有:
-
XSS (Coss Site Scripting)
跨站脚本攻击 -
CSRF(Cross-site request forgery)
跨站请求伪造 -
SQL
注入攻击
2. XSS
XSS
利用的是 script
脚本不受同源策略的影响 进行跨站脚本攻击,允许攻击者将恶意代码植入到提供给其它用户使用的页面中
XSS
涉及到三方,即攻击者、客户端与Web应用
XSS
的攻击目标是为了盗取存储在客户端的 cookie
或者其他网站用于识别客户端身份的敏感信息。一旦获取到合法用户的信息后,攻击者甚至可以假冒合法用户与网站进行交互。
举个例子:
一个搜索输入框
<input type="text" value="搜索内容文本">
<button>搜索</button>
<div>
您搜索的关键词是:<%= getParameter("keyword") %>
</div>
复制代码
看似没有问题,但是如果输入的是一段 js
的话,
<script>alert('XSS');</script>
,
由于浏览器无法分辨出这是一段恶意代码,因而将其执行,试想一下,如果是获取cookie发送对黑客服务器呢?这样子就会泄露私密的信息了。
根据攻击的来源,XSS
攻击可以分成:
-
存储型 : 简单说就是通过数据库存储恶意代码然后用户浏览进行攻击
-
反射型 : 通过
url
来存储恶意代码诱导用户点击来攻击 -
DOM型 : 通过前端
js
取出URL
中的 恶意代码来执行进行攻击
区别
DOM
型 XSS
攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS
都属于服务端的安全漏洞.
预防
XSS
攻击的两大要素:
-
攻击者提交而恶意代码
-
浏览器执行恶意代码
所以我们只要 对用户提交内容进行转义 和 防止浏览器执行恶意代码 就能尽量避免攻击。
3. CSRF
攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求
利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
一个典型的CSRF攻击有着如下的流程:
- 受害者登录a.com,并保留了登录凭证(Cookie)
- 攻击者引诱受害者访问了b.com
- b.com 向 a.com 发送了一个请求并且携带登陆凭证 (Cookie)
- a.com 收到请求进行验证,以为是受害者自己发送的请求
- a.com 处理请求
- 完成攻击
特点
-
攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生。
-
攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;而不是直接窃取数据
-
整个过程攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”
-
跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪
预防
-
防止不明外域访问
- 同源检测
-
提交时要求附加本域才能获取的信息
CSRF Token
- 双重
Cookie
验证
4. SQL
注入
Sql
注入攻击,是通过将恶意的 Sql
查询或添加语句插入到应用的输入参数中,再在后台 Sql
服务器上解析执行进行的攻击。
流程如下所示:
-
找出SQL漏洞的注入点
-
判断数据库的类型以及版本
-
猜解用户名和密码
-
利用工具查找Web后台管理入口
-
入侵和破坏
预防
-
严格检查输入变量的类型和格式
-
过滤和转义特殊字符
-
对访问数据库的Web应用程序采用Web应用防火墙