WEB开发安全(攻击篇) | 青训营笔记

144 阅读5分钟

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

WEB开发安全

攻击篇

XSS

XSS全称Cross-Site Scripting,跨站脚本攻击,攻击者通过在目标网站上注入恶意脚本,当用户访问目标网站时,这些恶意脚本会获取用户的敏感信息如Cookie、SessionID等,造成用户隐私数据泄露,导致数据安全问题。

微信图片_20220807111904.jpg

分类
存储型XSS
  • 原理
    • 存在于Form表单提交等交互功能,攻击者利用的XSS漏洞,通过恶意脚本将其内容伴随用户数据提交进入数据库并保存,当前端页面获得后端从数据库中读出的数据时,会将其渲染执行。存储型XSS攻击不需要诱骗点击,攻击者只需要在提交表单的地方完成注入。
  • 特征
    • 植入到后台数据库中,留存时间长。
    • 盗取用户敏感私密信息。
    • 危害范围大。
反射型XSS
  • 原理
    通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。
  • 特征
    • 即时性,不经过服务器存储,直接通过HTTP的GET和POST请求就能完成一次攻击,拿到用户隐私数据。
    • 攻击者需要诱骗点击,必须要通过用户点击链接才能发起。
    • 反馈率低,所以较难发现和响应修复。
    • 盗取用户敏感保密信息。
DOM型XSS
  • 原理
    DOM型XSS攻击,实际上利用前端JS代码的漏洞,把无关的内容插入到了页面。在使用.innerHTML、.outerHTML、document.write()等API时要注意,不要把无关的数据作为HTML插到页面上,尽量使用.innerText、.setAttribute()等。

CSRF

CSRF全称Cross-site request forgery,跨站请求伪造,攻击者诱导用户进入攻击者的第三方网站,向被攻击网站发送跨站请求。利用用户在目标网站的凭证,绕过后台的用户验证,达到冒充用户对目标网站进行访问的操作。

微信图片_20220807111913.jpg

分类
GET类型
  • 原理
    用户在访问攻击者的第三方网站时,可能会向目标网站的后台发送一次GET请求,此时目标网站的后台会收到一次带用户信息的跨域请求。
POST类型
  • 原理
    用户在访问攻击者的第三方网站时,会向目标网站的后台发送一次POST请求,通常以自动提交表单的方式,此时目标网站的后台会收到一次带用户信息的跨域请求。
链接类型
  • 原理
    比起以上两种用户打开页面就中招的情况,这种需要用户点击链接才会触发。攻击者通过诱骗用户点击链接,从而对目标网站进行攻击。由于之前用户登录了信任的网站,并且保存登录状态,只要用户主动访问上面的这个链接,就表示攻击成功。

SQL注入

SQL注入是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,利用潜在的数据库漏洞进行攻击。

  • 原理
    SQL注入流程中与正常请求服务器类似,攻击者通过控制数据,构造SQL语句,拦截用户的SQL语句,通过改变SQL语句的方法对后台数据库进行访问。

SSRF

SSRF,服务端请求伪造,不同于CSRF利用客户端请求,SSRF使用的是服务器端请求。SSRF相比于CSRF而言,都是由攻击者构造了请求,但是CSRF是用户浏览器端执行,SSRF是服务器端执行。

DoS

DoS全称Denial of Service,拒绝服务,目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。

784717a5f4f5a3bde2a67918ff166ec.jpg

  • 攻击方式
    • 利用软件实现
    • 利用协议漏洞
    • 利用资源

这种攻击方式属于无赖打法,攻击者凭借着手中的大量资源,发送大量的垃圾数据侵占完你的资源,导致计算机或网络不能正常提供服务。

中间人攻击

中间人攻击是一种"间接"的入侵攻击,这种攻击模式是通过各种技术手段将受攻击者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为"中间人"。

f93403613b6fd65e7d19d2a5373d073.jpg

  • 原理
    • 中间人攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。
  • 攻击方式
    • 信息篡改
      攻击者将自己控制的计算机B置于俩台通信的计算机A和计算机C中,计算机A和计算机C并没有真正的通信,而是通过计算机B来进行,所以,当计算机A向计算机C通信时,会先向计算机B通信,此时,攻击者控制的计算机B接收到来自计算机A的通信,对该次通信进行篡改,再将篡改的通信发给计算机C,但计算机A和计算机C并不知道信息已经被篡改。
    • 信息窃取
      信息窃取与信息篡改大致相同,唯一不同的是信息窃取并没有对信息进行篡改,而是将信息备份,从而获取用户的隐私数据等。