当前位置: 首页 > news >正文

XSS攻击防范:从入门到精通

XSS攻击

  • 什么是XSS攻击
  • 演示xss攻击
  • 防范xss攻击
    • HTML转义
    • 使用textContent
    • 加入正则进行输入验证

  • 其实波煮之前是没有听过xss攻击这个事情的,或者听过也不知道它对于前端的意义是什么,直到被字节面试官拷打之后才明白防范XSS攻击的重要性,接下来就是我的一些学习心得

什么是XSS攻击

  • XSS(Cross-Site Scripting,跨站脚本攻击)是攻击者向 Web 页面注入恶意脚本、并在用户浏览器内执行的一类代码注入攻击。利用 XSS,攻击者可窃取会话 Cookie、篡改页面内容、记录键盘输入、执行钓鱼或进一步传播恶意代码,从而破坏数据机密性、完整性与用户可用性。根据攻击脚本注入与触发方式的不同,XSS 通常分为反射型、存储型与 DOM 型三类。

演示xss攻击

  • 这里我实现了一个评论区功能,但存在严重的安全漏洞。它使用innerHTML直接渲染用户输入的评论内容,这会导致XSS(跨站脚本)攻击风险,恶意用户可以通过输入包含JavaScript代码的评论来执行任意脚本。

  • 这里我在输入框中输入这段代码 <img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtJrdwkh3yaJAb9YKi9T5BoxOYmUltcldfKQ&s" alt="" style=" position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 1000; object-fit: cover; " />

  • 这段代码作用是插入一张小丑图片然后显示在页面最上层。然后只要进入这个页面的用户都只能看到一张小丑图片,这就是所谓的xss攻击
    在这里插入图片描述

防范xss攻击

HTML转义

  • HTML 转义是防范 XSS 最基础最有效的输出侧防御手段:
    把用户数据当作普通文本而非可执行代码来展示,从而阻断恶意脚本的解析与执行。
  • 这个escapeHtml函数是一个HTML转义函数,它的主要功能是防止XSS攻击,它将HTML中的特殊字符转换为对应的HTML实体,这样浏览器就不会将这些字符解析为HTML标签或属性,而是作为普通文本显示。
   function escapeHtml(unsafe) {return unsafe.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");}

使用textContent

  • 使用textContent代替innerHTML,避免直接执行HTML代码
  • innerHTML代码:会造成xss攻击,如下:
 comments.forEach((comment) => {const commentElement = document.createElement("div");commentElement.innerHTML = `<strong>${comment.user}</strong>: ${comment.content}`;commentContainer.appendChild(commentElement);});
  • 使用textContent可以防止xss攻击,如下:
 comments.forEach((comment) => {const commentElement = document.createElement("div");commentElement.className = "comment-item";// 创建用户名字元素const userNameElement = document.createElement("div");userNameElement.className = "user-name";userNameElement.textContent = comment.user; // 使用textContent而不是innerHTML// 创建评论内容元素const contentElement = document.createElement("div");contentElement.className = "comment-content";contentElement.textContent = comment.content; // 使用textContent而不是innerHTMLcommentElement.appendChild(userNameElement);commentElement.appendChild(contentElement);commentContainer.appendChild(commentElement);});

加入正则进行输入验证

  • 在用户输入时就进行处理,如果时不安全内容就禁止用户提交即可
    在这里插入图片描述
http://www.dtcms.com/a/504506.html

相关文章:

  • 做云购网站网站框架怎么做
  • 建中英文网站网络优化公司有哪些
  • 详细讲解java中的方法(适合新手小白)
  • vip解析网站怎么做网络搜索词排名
  • 最新网站域名如何寻找网站建设需求客户
  • 河北网站建设推广如何制作活动宣传网页
  • Linux memfree 的计算逻辑
  • 宁波网站建设软件开发医药公司网站建设备案
  • 一 网站建设的目的和目标辽宁网站建站优化公司
  • 网站开发本地环境seo排名怎么做
  • 网站首页置顶是怎么做单页展示网站
  • 微信网页上的网站怎么做的网站响应时间方案
  • ScheduledExecutorService
  • 网站首页新世纪建设集团有限公司长沙网站seo收费
  • 网站优化的论文pc网站建设企业
  • 各个视频网站怎么做原创作者南宁市建筑规划设计集团有限公司
  • 探索Word2Vec:从文本向量化到中文语料处理
  • 性能测试 | 认识性能测试的概念以及应用
  • 小企业网站建设论文东莞网站建设设计
  • 第23讲:文件操作
  • 网站如何不需要备案免费发广告的软件有哪些
  • 网站制作 需要什么网络技术唯品会网站建设特色
  • 如何提高网站点击率dns网站建设
  • 响应式布局的原理网站meta 优化建议
  • 网站建设设计收费网络销售面试问题有哪些
  • mysql8支持远程访问 -mysql5.7支持远程访问
  • DeepSeek+FastGPT+Xinferenc打造企业级知识库
  • 营销型网站费用软件工程35岁就失业吗
  • 开发个网站开票名称是什么意思项目网上备案
  • 2025年-集合类面试题