首页 > 其他分享 >innerHTML插入script代码为什么不会被XSS

innerHTML插入script代码为什么不会被XSS

时间:2024-11-26 20:57:07浏览次数:5  
标签:XSS script innerHTML 插入 getElementById div document

  1. HTML5不会执行由innerHTML插入的<script>标签内的代码。
  • 测试代码
window.onload = function () {
    let str = "<script>alert(1)</script>"
    document.getElementById('div').innerHTML = str
}

image

  1. innerHTML插入内容不确定的字符串时仍然存在安全风险。
  • 测试代码
<!DOCTYPE html>
<meta charset="utf-8">
<head>
    <title>
        innerHTML测试
    </title>
    <script>
        window.onload = function () {
            document.cookie = 'sessionid=5f74be5f82044e6a8d06b415bf96fdb4;path=/'
        }
        function test() {
            // 弹出消息
            document.getElementById('div').innerHTML = `<img src='x' one rror='alert(1)'>`;
            // 读取cookie
            // document.getElementById('div').innerHTML = `<img src='x' one rror='alert(document.cookie)'>`;
            // 跳转
            // document.getElementById('div').innerHTML = `<img src='x' one rror='document.location.href = "http://www.baidu.com"'>`;
        }
    </script>
</head>
<body>
    <button onclick="test()">点我购买</button>
    <div id='div'>hello</div>
</body>
</html>
  • XSS效果

a. 弹出消息
image

b. 跳转
image

c. 读取cookie
image

  1. 插入纯文本时建议不要使用innerHTML,用textContent取而代之。
document.getElementById('div').textContent = `<img src='x' one rror='document.location.href = "http://www.baidu.com"'>`;

可以看到,textContent是将代码原样显示出来而不是当作脚本执行
image

扫描关注公众号
image

标签:XSS,script,innerHTML,插入,getElementById,div,document
From: https://www.cnblogs.com/cy2011/p/18569981

相关文章

  • 前端技术中对JavaScript对象的学习
    对象目录对象创建对象使用循环遍历对象属性对象中的方法创建对象创建新对象有两种不同的方法:使用Object定义并创建对象的实例。使用函数来定义对象,然后创建新的对象实例。newObject在JavaScript中,几乎所有的对象都是Object类型的实例,它们都会从Object.prototype......
  • 你不知道的javascript-4
    this的指向,绑定规则,作用域1.什么是this?this是在函数执行时用来指代那个当前执行上下文的对象也就能说明this的值是在函数被调用时确定的,而不是在函数被定义时确定的因为只有当函数执行的时候,才会创建对应的FEC(函数执行上下文)2.为啥需要this?在常见的编程语言中,几乎......
  • JavaScript 类型转换
    基础概念什么是类型转换JavaScript是一种动态弱类型语言,其类型转换机制允许开发者灵活地处理不同数据类型之间的交互。类型转换是指将一个值从一种数据类型转换为另一种数据类型的过程,在JavaScript中主要分为两种方式:隐式类型转换:由JavaScript引擎自动执行,例如在算术运......
  • JavaScript 条件语句详解
    JavaScript条件语句概述条件语句的作用在JavaScript编程中,条件语句是控制程序流程的核心机制。它们使程序能够根据特定条件执行不同代码块,从而实现灵活的决策逻辑。通过使用if、if-else和switch等语句,开发者可以根据变量值或表达式结果动态地改变代码执行路径,使得程序能够......
  • JavaScript 中的“造物”艺术:对象、构造函数与原型
    走进JS,走近讶语在JavaScript的世界里,对象和面向对象编程(OOP)是不可或缺的一部分。本文将带你深入了解JavaScript中对象的创建方式,特别是ES6中引入的class语法,以及传统的构造函数和原型的概念。希望通过这篇文章,你能对JavaScript的面向对象编程有一个更深入的理解。1.造对象......
  • 第十章JavaScript的应用
    10.1JavaScript概述10.1.1JavaScript简介JavaScript是一种基于对象(0bject)和事件驱动(EventDriven)并具有安全性能的脚本语言,能够与HTML(超文本标记语言)、Java语言一起在Web页面中与Web客户交互它无须经过先将数据传给服务器端(Server)、再传回来的过程,而直接可以由客......
  • JavaScript 编程精解(Eloquent)第四版·翻译完成
    JavaScript编程精解(Eloquent)第四版第一章:引言第一部分:语言第二章:值、类型和运算符第三章:程序结构第四章:函数第五章:数据结构:对象和数组第六章:高阶函数第七章:对象的秘密生活第八章:项目:一个机器人第九章:漏洞和错误第十章:正则表达式第十一章:模......
  • WEB攻防-XSS跨站&CSP策略&HttpOnly属性&Filter过滤器&标签闭合&事件触发
    1.CSP(ContentSecurityPolicy内容安全策略)内容安全策略是一种可信白名单机制,来限制网站中是否可以包含某来源内容。该制度明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单,它的实现和执行全部由浏览器完成,开发者只需提供配置。禁止加载外域代码,防止复杂的攻击......
  • [Typescript] Deal with types of function overloads
    /***Utilityforextractingtheparametersfromafunctionoverload(fortypedemits)*https://github.com/microsoft/TypeScript/issues/32164#issuecomment-1146737709*/exporttypeOverloadParameters<Textends(...args:any[])=>any>=Parame......
  • [Javascript] About private access (Object.getOwnPropertySymbols)
    Wehaveamodule:constkey=Symbol('key')exportclassA{[key]=1value(){console.log(this[key])}}Itseemsthat keyisnotexposetooutsideofmodule,butstillweareabletogetit.import{A}from'./mod......