Web前端安全策略之XSS的攻击与防御(下)

简介: 接上文。

//防御XSS攻击 //


(1)设置HttpOnly


我们都知道,攻击者一般进行XSS攻击,大部分的目的都是为了获取用户的cookie, 那么我们就可以设置一下 cookie 的 HttpOnly 。当给 cookie 设置了 HttpOnly 时,在前端,就无法通过 js 代码获取到 cookie 的值,即 document.cookie 将得到一个空值,说明此时的 cookie 是一个不可读不可写的状态, 攻击者也就无法获取到想要的用户 cookie 信息了。


那这里呢,我就对如何设置HttpOnly进行讲解了,因为一般都是后端设置的,想要了解的小伙伴可以自行搜索一下,也非常的简单。


还有一点要说一下, 设置HttpOnly 并不是防御住了XSS攻击, 只是说不会让攻击者得到用户 cookie 信息, 所以我们还需要进行别的防御操作。


(2)转义字符串


我们在了解完三种XSS攻击方式以后发现,XSS攻击大多都是由数据的输入和输出作为攻击点进行攻击, 所以我们就需要在这几个点,对数据进行一下过滤,即前端数据输入和输出、后端数据输入和输出。


那么如何对数据进行过滤呢?我们可以来封装一个函数:


    function escapeHTML(str) {    return String(str)            .replace(/&/g, '&amp;')            .replace(/</g, '&lt;')            .replace(/>/g, '&gt;')            .replace(/"/g, '&quto;')            .replace(/'/g, '&#x27;')            .replace(/`/g, '&#96;')            .replace(/\//g, '&#x2F;')}


    这里将几个攻击者常用的输入内容都进行了转移,这样就避免了浏览器解析成了脚本代码。


    • 防御DOM型跨站攻击


    还是拿上面DOM型跨站攻击里的例子来说, 因为 js 代码是获取了文本框里的内容,然后不经过转移就进行输入, 所以才被浏览器解析成了脚本代码。我们则需要将数据输出前进行过滤一下


      <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>
      </head><body>
      <input type="text" id="content"><button id="btn">添加</button>
      <script>    window.onload = function () {        let content = document.querySelector('#content')        let btn = document.querySelector('#btn')        btn.onclick = function () {          //在输入数据前,用我们封装的escapeHTML函数过滤一下            document.write(escapeHTML(content.value))        }
          }</script></body></html>


      来看一下这时,输入一段脚本代码会发生什么


      b63e7187048db23458e00d4f5875f33a.jpg


      我们输入的文本内容经过过滤以后,并没有被浏览器解析成脚本代码,而是一串字符串的形式,这样就做到了DOM型跨站攻击的防御。


      • 防御反射型跨站攻击


      这种类型的攻击是用户先访问了服务器,然后服务器返回给客户端进行渲染的, 所以我们在将数据发送给服务器前,需要对发送的数据进行过滤,其实后端在接收这个数据前和发送数据给客户端前,也应该做一下过滤。原因呢,很简单,因为攻击者可以用伪造请求的方式,绕过前端的数据过滤,直接请求服务器,这里不懂的小伙伴也没事, 我们主要是将前端的防御,想知道更多的可以去搜索一下资料。


      这里给大家列举了,可能会被反射型跨站攻击的点, 在向这几个地方输入值的时候, 一定要进行数据的过滤


      c0e5bc965ffd430a010a7742d41d653c.png


      针对不同的值,我们要做不同的过滤处理,因为我的能力有限,所以我从网上找了一个图,以及一个成熟的转义这些数据的库给大家,感兴趣的可以去学习一下。


      48660585a99c7927df040f6ff95a8ad1.png


      js-xss库,可以用来过滤不同的数据,下面放上github地址:https://github.com/leizongmin/js-xss



      // 总结 //


      总结一下就是,不要相信任何来源的数据(包括用户输入的、服务器传过来的),无论拿到什么数据,输入输出前都必须先进行过滤转译!!!


      相关文章
      |
      1月前
      |
      并行计算 前端开发 JavaScript
      Web Worker:让前端飞起来的隐形引擎
      在现代 Web 开发中,前端性能优化是一个至关重要的课题,尤其是对于计算密集型的应用,如图像处理、视频处理、大规模数据分析等任务。单线程的 JavaScript 引擎常常成为性能瓶颈,导致应用变得迟缓。Web Worker,作为一种强大的技术,使得前端能够在后台进行并行计算,从而实现高效的任务处理,不影响主线程的运行和用户的交互体验。
      267 108
      |
      3月前
      |
      Web App开发 编解码 移动开发
      零基础音视频入门:你所不知道的Web前端音视频知识
      本文回顾了Web端音视频的发展历程,同时还介绍了视频的编码、帧率、比特率等概念,提到了Canvas作为视频播放的替代方案,以及FFmpeg在音视频处理中的重要作用等知识。
      74 1
      |
      10月前
      |
      前端开发 JavaScript
      探索现代Web应用的微前端架构
      【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
      |
      7月前
      |
      前端开发
      【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
      【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
      173 1
      【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
      |
      10月前
      |
      前端开发 JavaScript 搜索推荐
      HTML与CSS在Web组件化中的核心作用及前端技术趋势
      本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
      196 6
      |
      10月前
      |
      Web App开发 网络协议 安全
      基于Web攻击的方式发现并攻击物联网设备介绍
      基于Web攻击的方式发现并攻击物联网设备介绍
      155 4
      |
      10月前
      |
      消息中间件 前端开发 JavaScript
      探索微前端架构:构建现代Web应用的新策略
      本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
      |
      10月前
      |
      监控 前端开发 JavaScript
      探索微前端架构:构建可扩展的现代Web应用
      【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
      |
      10月前
      |
      缓存 前端开发 JavaScript
      Web应用性能优化策略
      Web应用性能优化策略
      128 2
      |
      10月前
      |
      前端开发 开发者 UED
      移动优先:响应式设计在现代Web开发中的实践策略
      【10月更文挑战第29天】在现代Web开发中,响应式设计已成为不可或缺的实践策略,使网站能适应各种设备和屏幕尺寸。本文介绍了移动优先的设计理念,对比了移动优先与桌面优先的策略,探讨了流式布局与固定布局的区别,详细讲解了CSS媒体查询的使用方法,并强调了触摸和手势支持及性能优化的重要性。
      202 1

      热门文章

      最新文章