innerHTML与XSS攻击

2023-11-18

HTML5为所有元素提供了一个innerHTML属性,既能获取对象的内容又能向对象插入内容
属性值:HTML标签/文本
浏览器会将属性值解析为相应的DOM树
HTML解析器在浏览器中是底层代码比JavaScript方法快很多,同时意味着替换元素上的关联事件处理程序和JavaScript对象需要手动删除。

插入script和style元素的时候需要看具体的浏览器

XSS攻击

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,
请记住两条原则:过滤输入和转义输出。

前端注意
.innerHTML、.outerHTML、document.write() 时要特别小心,不要把不可信的数据作为 HTML 插到页面上,而应尽量使用 .textContent、.setAttribute() 等。
解决跨域时候的jsonp方法也存在XSS隐患,去请求别的域,得到别的域返回的数据,万一是个脚本,就注入到自己的代码里了
如果用 Vue/React 技术栈,并且不使用 v-html/dangerouslySetInnerHTML 功能,就在前端 render 阶段避免 innerHTML、outerHTML 的 XSS 隐患。

防止cookie信息被盗
cookie中可以设置HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。

response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly")

xss与csrf区别
通常来说 CSRF 是由 XSS 实现的,CSRF 时常也被称为 XSRF(CSRF 实现的方式还可以是直接通过命令行发起请求等)。
本质上讲,XSS 是代码注入问题,CSRF 是 HTTP 问题。XSS 是内容没有过滤导致浏览器将攻击者的输入当代码执行。CSRF 则是因为浏览器在发送 HTTP 请求时候自动带上 cookie,而一般网站的 session 都存在 cookie里面。

outerHTML

==innerHTML定义的DOM树+自身元素

innerText与outerHTML:
innerText:后代的所有文本
删除后代DOM树,赋值文本内容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

innerHTML与XSS攻击 的相关文章

随机推荐

  • 走进大数据,感受大数据

    摘要 大数据时代已经到来 现阶段 我国大数据产业发展如何 大数据应用领域在哪 大数据价值在哪里 带着这些疑问 走进大数据 感受大数据带来的神奇魔力 关注作者 需要大数据学习视频资料 其他文章可以找到大师组织 2017年9月8日 腾讯董事会主
  • shapley和树的shap

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 shapley and shap Shapley交互阶的计算 关于树结构Shap的计算 Shapley交互阶的计算 首先一阶的计算公式 二阶 交互值 计算 三阶计算 一般式
  • Qt-窗口消息处理机制及拦截消息的五种方法

    Qt 拦截消息的五种方法 覆写框架类QCoreApplication的notify函数 这个函数将得到整个框架中所有窗口的消息 给框架类安装一个消息过滤器 QCoreApplication gt nativeEventFilter filt
  • java中创建类的数组

    例题 定义一个People类 要求如下 1 成员变量 name height weight 分别表示姓名 身高 cm 和体重 kg 2 构造方法通过参数实现对成员变量的赋初值操作 3 成员方法int check 该方法返回0 1 1 分别表
  • qt 串口粘包_Qt开发串口

    首先 在工程文件里面 QT serialport 在头文件里面 include 1 配置打开串口 QSerialPort myserial new QSerialPort this gt myserial gt setPortName CO
  • Linux slab 分配器剖析

    http www ibm com developerworks cn linux l linux slab allocator 了解 Linux 内存管理的方式 良好的操作系统性能部分依赖于操作系统有效管理资源的能力 在过去 堆内存管理器是
  • 【C++】指针和引用的区别

    引用的主要用途 修饰函数的形参和返回值 指针和引用的区别 引用没有空引用的概念 指针有 没有引用的引用 指针有二级指针 三级指针 引用必须初始化 指针不一定 但是最好初始化 防止野指针 引用加一 是引用实体加一 而指针是向后偏移一个类型的大
  • Ubuntu14.04下配置OpenGL及测试代码

    ubuntu14 04 64位下 默认是没有安装OpenGL相关依赖库的 若安装 则依次执行如下几条命令即可 sudo apt get update sudo apt get install build essential sudo apt
  • 【小5聊】jQuery基础之获取指定时间月份的最后一天

    描述 由于每个月份的天数不一样 所以每一个月份的最后一天值就不一样 new Date new Date 2020 06 01 00 05 00 setMonth new Date 2020 06 01 00 05 00 getMonth 0
  • 基于Java+Spring boot+Mybatis Plus 实现H5在线点餐系统

    前言 商城系统就是功能完善的网上销售系统 主要包括产品发布 在线订购 在线支付 在线客服 订单管理等功能模块 商城系统的日常管理如 商品添加修改 订单管理 回复客户留言等都是在线操作的 操作简单 会上网者就可以操作 商城系统成本低 节省开发
  • verilog中wire和reg类型的区别

    module counter parameter CNT MAX 25 d24 999 999 input wire sys clk input wire sys rst n output reg led out reg 24 0 cnt
  • state和props的区别__react

    首先说明 state和props是每个组件都有的 其次 state可变 但props不可变 这是官网给出的说法 但实操过程中 state的确可变 但props也可以变 是不是fb搞错了 当然不是 这里的可变与不可变 说的是改变后 是否会重新
  • 【前端】react-markdown配置解析

    文章目录 react markdown基本配置 同步预览配置 MdEditorComponent js reducer js initBlogState js action types js sync actions js store js
  • javascript各种类型数据在表达式中转换成布尔型值的规则总结

    javascript中有5种数据类型 分别为 Undefined Boolean Object Number String 这几类型的数据 当他们处在表达式里面的时候 js解析器会自动将其转换成布尔值来决定当前的条件究竟符合哪个逻辑分支 当
  • 部分A+B C语言

    1016 部分A B 15 分 正整数 A 的 DA 为 1 位整数 部分 定义为由 A 中所有 DA 组成的新整数 PA 例如 给定 A 3862767 DA 6 则 A 的 6 部分 PA 是 66 因为 A 中有 2 个 6 现给定
  • Qt 自定义提示框 类似QMessageBox

    前言 为什么需要设计自定义提示框呢 1 Qt自带的提示框样式单一 2 提示框的太小 3 界面风格跟项目的不搭配 程序执行效果 源码下载地址 https gitee com jiang bin yu qt custom prompt box
  • 亚马逊云科技使用心得:当初我曾错过的那些宝贵经验

    在今天的文章中 我整理出了大量当初曾经错过 而至今仍将我追悔莫及的Amazon Web Services 简称AWS 使用心得 在几年来的实践当中 我通过在AWS之上新手构建及部署各类应用程序而积累到了这些经验 虽然内容有些杂乱 但相信仍然
  • windows10下安装kali子系统

    写在前面 为什么我会想到在窗下装一个卡利 作为一个小白 平时做CTF题的时候 有时会用到python2 7环境 比如一些脚本需要 还有窗户下用的SqlMap的话 好像只支持在python2 7 之前被这个坑了好久 想用它的时候突然发现我的S
  • 个人三年规划建议

    一 前言 最近在 编程导航 有位鱼友的关于职业规划的提问 对于刚进入职场的新人来说 是很常见的问题 下面我分享出来 也希望能帮助到刚进入职场的同学们 在面对未来规划的时候 也有些参考 我的建议不一定适合每一位同学 但有些共性的东西是通的 我
  • innerHTML与XSS攻击

    HTML5为所有元素提供了一个innerHTML属性 既能获取对象的内容又能向对象插入内容 属性值 HTML标签 文本 浏览器会将属性值解析为相应的DOM树 HTML解析器在浏览器中是底层代码比JavaScript方法快很多 同时意味着替换