青训营笔记6.2——Web 开发安全 - 防御篇

156 阅读5分钟

🎯课程表

📋前言

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天。

今天已经开始步入正轨了,重新开始了做笔记的学习节奏,年前那段时间落下了一些内容,要学习内容较多,因此分为几个部分来学习,课程的内容是学习Web 开发安全防御篇的内容,通过该篇文章记录在课程中学到的知识以及重点,对此做相对应的笔记来巩固学习。

📑课程介绍

  • 面临错综复杂的网络环境,在了解哪些手段会造成 Web 安全事故之后,本节课将通过第二种「防御者」角色的视角,剖析不同攻击手段的技术细节,帮助大家逐个击破安全漏洞,更好地维护 Web 安全。

🔥课程重点

  1. XSS 的防御
  2. 防御 CSRF 的正确姿势
  3. 防御 DoS
  4. 防御 Injection
  5. 防御中间人

📝具体笔记

关于Web安全

Web安全,计算机术语,随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显,黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。

d3ad940dbd9afe6449f4dd7f0bdf9ab.png

XSS

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

518021285d2f8d40a00fdb67870d3fa.png

26523580cdd15862fab00e0f5d3eb20.png

42cf3dd0e6fead4fc00966213105f91.png

35a1de050f9b7c9447adb05424dffda.png

133184b980ae38b8040766743c9d8aa.png

07393100811b88cd4eb2b8ccdef77af.png

13f1a65b63f868cb29259bb4fbee096.png

5aca5aad6c0a8734e5ce0490189d732.png

c8e51fec8e0cb41ac38a71689eb4d42.png

CSRF

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

ee33f9611e035ef8317fb0f4ffc1105.png

fe3abe1d58ced37192e5b26bc40fa44.png

7ad17fa53a49f55acfee8e3cea18010.png

SQL Injection(SQL攻击)

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

af0b1e92581f9a3e4d2061f15448074.png

8b4fd3eda7c09d65a0fe9a146d7b302.png

508d2aa7e76c9633ffaee0887ef9526.png

95828b932a7862ca1456111299a2895.png

baf3f59170b2b7e8ec5813c9c6d31b1.png

ce0d34916d85530fb1b115597607b2c.png

1b7b9bbb59d931f23826686d537f3f6.png

DOS

拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。

5e6aa26946b37ec0a735a7702b04c9a.png

f007a40f0b8aee3db47b6a002416977.png

e0d81c3b48a7d53f71077bb99a96980.png

DDOS

分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大型网站都出现了无法进行操作的情况,这样不仅仅会影响用户的正常使用,同时造成的经济损失也是非常巨大的。

分布式拒绝服务攻击方式在进行攻击的时候,可以对源IP地址进行伪造,这样就使得这种攻击在发生的时候隐蔽性是非常好的,同时要对攻击进行检测也是非常困难的,因此这种攻击方式也成为了非常难以防范的攻击。

f9a558dc9cab187e766b12f59e73413.png

bb250178a49c75e3fe101f45d37e016.png TCP三次握手与洪水攻击 0ae94e512a6b9cc33b9e8ce8bd00fb6.png 服务器与浏览器的中间人攻击 ce017bd7b60812501b8d3115f28f65d.png

如何防御这些攻击

防御XSS攻击

  • 永远不信任用户的提交内容
  • 不要将用户提交内容直接转换成 DOM

8003b330396db83636edb24146ef2a3.png

前端

  • 主流框架默认防御XSS
  • google-closure-library

服务端(Node)

  • DOMPurify 7e1bde329df2b6a2216559e4d9b20ff.png

94c68b8df0515f6b9172f0c54ccc2d2.png

CSP

c98802bdba348158bbd95ee70f01e7c.png

9987141f26107799a029b3f92f81ecb.png

581aadc7be647556c89abfb22e360d1.png

1272b9d25e3eac5a7fba079b2a68665.png

a7bfe9786b0bd12a01d725f85745e51.png

080334cb04f51a8015f116b5c654395.png

c6bdbf83e8c16ce5c39ab17d82f9aae.png

SameSite Cookie

f8b22e6227befbf38b389b3c0016561.png

2c035946cbe330924feff918d5538ba.png

46a4b23ba96c1c020c7fda46e38b2a5.png

a92139724d883e691eb4b6992a5eaee.png

防御CRSF的正确姿势

701fc9db3e4fa15945aabed8b399130.png

d24c11e79943e062914715d91ebc79d.png

816f03851bbce550c1f3e3ba7da5c62.png

防御中间人攻击

9efce007e233c262c7f3eeb90a00227.png

7620577b6383ce9ffc255260503f71c.png

c8b5098663a9b3dc94714f04cca781f.png

67ffecbd1cb0c3268633722af4b0a79.png

51a98e326529f29491c869eb7b8dfdb.png

9b13211617e43f1405e9b8cac4904bf.png

c4339068b61b3bfa11bd0274f8dbe37.png

e9d62de1015984dabf58a5cd88665ec.png

文章仅为个人学习笔记,如有错误,欢迎指正。

7fb9c802190ce2d7d68fa04767010c6.png