Web开发的安全之旅|青训营笔记

137 阅读4分钟

1、分布式拒绝服务(DDoS)攻击

这是我参与「第四届青训营 」笔记创作活动的第3天

(1)什么是DDos

  • 分布式拒绝服务(DDoS)攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为。

  • 利用的机器:

    • 计算机
    • 其他其他联网资源(如 IoT 设备
    • DDoS攻击就像高速公路发生交通堵塞,妨碍车辆抵达预定目的地。

(2)原理

  • 攻击者通过感染恶意软件的计算机网络(由计算机和其他设备(例如 IoT 设备)组成)实现远程控制,通过僵尸网络对受害者的服务器或网络作为目的,让每个机器人发送请求导致服务器或网络不堪重负,从而造成对正常流量的拒绝服务。
  • 机器人(僵尸):被攻击者远程控制的个体设备
  • 僵尸网络:一组机器人
  • 每个机器人都是合法的互联网设备,因而可能很难区分攻击流量与正常流量。

(3)常见的DDoS攻击

  • 应用程序层攻击

    • 攻击目标:生成网页并传输网页响应 HTTP 请求的服务器层
    • HTTP洪水
  • 协议攻击

    • 攻击目标:利用协议堆栈第 3 层和第 4 层的弱点致使目标无法访问。
    • SYN 洪水
  • 容量耗尽攻击

    • 攻击目标:通过消耗目标与较大的互联网之间的所有可用带宽来造成拥塞
    • DNS放大

(4)防护DDoS攻击

  • 黑洞路由
  • 速率限制
  • Web应用程序防火墙
  • Anycast网络扩散

2、XSS攻击与防护

2.1 XSS攻击

  • XSS 跨站脚本攻击

  • 原理:用户浏览被攻击者插入恶意Script代码的Web页面时,嵌入Web里面的Script代码会被执行,从而受到恶意攻击。

  • 分类:存储型、反射型、DOM型

  • 反射型XSS攻击流程:

    • 黑客发送带有XSS恶意脚本链接给用户
    • 用户点击了恶意链接,访问了目标服务器
    • 网络将XSS同正常页面返回到用户浏览器
    • 用户浏览器解析了网页中的XSS恶意代码,向恶意服务器发起请求
    • 黑客从自己搭建的恶意服务器中获取用户提交的信息
  • 非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

  • 反射型XSS大多数是用来盗取用户的Cookie信息。

  • 存储型XSS攻击:持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。

  • 这种XSS比较危险,容易造成蠕虫,盗窃cookie

  • DOM型XSS:不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。

2.2 防御

  • 总体思路:对用户的输入(和URL参数)进行过滤,对输出进行html编码
  • 即对用户提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。

3、CSRF(跨站请求伪造)

  • CSRT通过伪装来自受信任用户的请求来利用受信任的网站。

  • XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

  • 相比XSS,不大流行,但更具危害性

  • CSRT原理:

    • 登录受信任网站A,并在本地生成Cookie。
    • 在不登出A的情况下,访问危险网站B。
  • CSRT的危害:攻击者盗用了受害者的身份,以他的名义发送恶意请求。以其名义发送邮件,发消息,盗取其的账号,甚至于购买商品,虚拟货币转账......
  • 常见的攻击类型:
  • GET类型的CSRF:

    <img src=http://xxxxx?xx=11 /> 
    

一般需要一个HTTP请求就可以实现。像这里将该网址替换为存在GET型CSRF的地址,就能完成攻击了。

  • POST类型的CSRF:

这种类型的CSRF危害没有GET型的大,利用起来通常使用的是一个自动提交的表单

<form action=http://xxx method=POST>
<input type="text" name="xx" value="xx" />
</form>
<script> document.forms[0].submit(); </script> 

总结

通过本次课程学习,我在课堂上学习Web的相关安全知识后,又通过查阅相关资料,深入了解相关安全知识后方才写下笔记,时间仓促,若有不对的地方,欢迎大家批评指正。