简单了解Web中的攻击方式

495 阅读4分钟

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中的 恶意代码来执行进行攻击

区别

DOMXSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞.

预防

XSS 攻击的两大要素:

  1. 攻击者提交而恶意代码

  2. 浏览器执行恶意代码

所以我们只要 对用户提交内容进行转义防止浏览器执行恶意代码 就能尽量避免攻击。

3. CSRF

攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求

利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

一个典型的CSRF攻击有着如下的流程:

  • 受害者登录a.com,并保留了登录凭证(Cookie)
  • 攻击者引诱受害者访问了b.com
  • b.com 向 a.com 发送了一个请求并且携带登陆凭证 (Cookie)
  • a.com 收到请求进行验证,以为是受害者自己发送的请求
  • a.com 处理请求
  • 完成攻击

特点

  1. 攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生。

  2. 攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;而不是直接窃取数据

  3. 整个过程攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”

  4. 跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪

预防

  1. 防止不明外域访问

    • 同源检测
  2. 提交时要求附加本域才能获取的信息

    • CSRF Token
    • 双重 Cookie 验证

4. SQL注入

Sql 注入攻击,是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击。

流程如下所示:

  1. 找出SQL漏洞的注入点

  2. 判断数据库的类型以及版本

  3. 猜解用户名和密码

  4. 利用工具查找Web后台管理入口

  5. 入侵和破坏

预防

  1. 严格检查输入变量的类型和格式

  2. 过滤和转义特殊字符

  3. 对访问数据库的Web应用程序采用Web应用防火墙