常见的web攻击以及防御方式

前言

俗话说:“”有制造者“,“必然有破坏者”。 前端web应用上线之后,不免有不怀好意的破坏者通过各种漏洞攻击你的应用,所以无论前端后端都不是一堵密不透风的墙,当然咱只了解前端哈。下面我们就来了解一下前端存在的安全问题XSS攻击。

一、XSS (跨站脚本攻击)

1.简介

XSS 是跨站脚本攻击,是一种代码注入的攻击。攻击者通过向网站注入恶意代码,当用户登录网站时就会执行这些代码,以此来获取网站的cookie,token等网站敏感信息,对用户进行钓鱼欺诈等

2.分类

存储型XSS :将恶意代码提交到目标网站的数据库中永久存储,当用户访问网站时,从数据库取出恶意代码与HTML 拼接在一起返回给浏览器,浏览器在收到响应后解析执行,混在其中的恶意代码也同时被执行,从而达到攻击目的。

反射型XSS :攻击者构造出带有恶意代码的URL,当用户点击带有恶意代码的URL时,服务端将恶意代码取出后,与HTML拼接在一起返回给浏览器,浏览器在收到响应后解析执行,混在其中的恶意代码也同时被执行,从而达到攻击目的。(与存储型XSS的区别就是恶意代码存放在URL上,而存储型CSS恶意代码存放在数据库中)

DOM型XSS:这种攻击与反射型XSS、存储型XSS在原理上有本质区别,它的攻击代码不需要服务器解析响应,触发XSS靠的是浏览器的DOM解析。客户端上的JS可以访问浏览器的DOM并修改页面的内容,直接从浏览器获取数据并执行。在客户端直接输出DOM内容的时候极易触发DOM型XSS攻击。例如:document.getElementByld(“x’).innerHTML、document.write)等。

3.防御方式

  • 一切用户的输入皆不可信,在输出时进行验证

  • 将HTML 元素内容、属性以及 URL 请求参数、 CSS值进行编码

  • 设置 Cookie 的 HttpOnly 属性

  • 数据存储数据库前,展示到页面前均进行转义过滤

二、CSRF (跨站请求伪造)

1.简介

CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求,利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的

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

  • 受害者登录a.com,并保留了登录凭证(Cookie)
  • 攻击者引诱受害者访问了b.com
  • b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie
  • a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求
  • a.com以受害者的名义执行了act=xx
  • 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作

2.CSRF的特点

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

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

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

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

3.防御方式

  • 阻止不明外域的访问:同源策略 和 Samesite Cookie

  • 提交时要求附加文本域才能获取的信息: CSRF Token 和 双重Cookie验证

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值