以 XSS 安全方式替换 AJAX 响应中的选项

2024-01-25

从内部succcess我的 AJAX 响应的方法,我的目标是以 XSS 安全的方式执行以下操作:

  • 删除所有现有的options在选择框中。
  • 替换同一选择框中的选项。

这是删除和替换选项的一种方法,但我对这种策略完全安全的 XSS 没有很高的信心:

success: function (data) {
    $('#mySelBox').children().remove();
    $.each(data, function (index, value) {
        $('#mySelBox').append('<option value="' + value.id + '">' + value.description + '</option>');
    });
}

具体来说:

  • 我不确定是否value.id在这种情况下 XSS 安全吗?
  • 我不确定是否value.description在这种情况下是安全的。

参考OWASP XSS 备忘单) https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html:

[确保]所有变量都经过验证,然后进行转义或清理,这被称为完美的注入阻力。

为此,我的问题如下:

  • 逃生和消毒的可靠方法是什么value.id在上述情况下?
  • 逃生和消毒的可靠方法是什么value.description在上述情况下?

我还发现这篇 XSS 预防文章 https://excess-xss.com/#xss-prevention。它让我意识到 XSS 预防是多么复杂,因为这个问题没有单一的解决方案:解决方案完全取决于上下文。


使用 DOM API 来创建<option>元素:

$.each(data, function (index, value) {
  var opt = document.createElement("option");
  opt.setAttribute("value", value.id);
  opt.textContent = value.description;
  MY-SELECT-BOX.append(opt);
});

参考:

setAttribute更新时被认为是安全的value: 基于 DOM 的 XSS 预防 - 指南 #3 https://cheatsheetseries.owasp.org/cheatsheets/DOM_based_XSS_Prevention_Cheat_Sheet.html#guideline-3-use-documentcreateelement-elementsetattributevalue-elementappendchild-and-similar-to-build-dynamic-interfaces

textContent使用不受信任的数据填充 DOM 被认为是安全的:基于 DOM 的 XSS 预防 - 规则 #6 https://cheatsheetseries.owasp.org/cheatsheets/DOM_based_XSS_Prevention_Cheat_Sheet.html#rule-6-populate-the-dom-using-safe-javascript-functions-or-properties

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

以 XSS 安全方式替换 AJAX 响应中的选项 的相关文章

  • React/Redux bundle.js 太大

    我有一个小型的 React 项目 Webpack生成的bundle js大小为6 3Mb 如何将大小减小到 github webpack config js module exports devtool inline source map
  • 如何在提交表单之前删除自动数字格式?

    我正在使用 jQuery 插件自动数字 http www decorplanit com plugin 但是当我提交表单时 我无法删除之前字段上的格式POST 我尝试使用 input autonumeric destroy 和其他方法 但它
  • 卸载/销毁 Angular 延迟加载组件

    我的设置与此处找到的帖子类似http ify io lazy loading in angularjs http ify io lazy loading in angularjs 处理 Angular 中我的应用程序的各种组件的延迟加载 我
  • jQuery 检查复选框并触发 javascript onclick 事件

    我正在尝试使用 jQuery 检查复选框并在此过程中触发 onclick 事件 假设我在 html 中定义了一个复选框
  • Jquery UI 日期选择器 设置默认日期

    我使用 jQuery UI 作为日期选择器 我想在字段中显示当前日期作为默认值 以下是我的代码 请帮助 From Date
  • canvas.getContext('2D') 返回空值

    我创建了一个画布并将其命名为getContext 方法 但它返回null为上下文 这是我使用的代码 我在控制台中得到了这个
  • EJS在JS onload函数中访问express变量

    我知道你可以像这样获取 ejs 文件中变量的值 h1 h1 如果我要在同一个 ejs 页面的 onload javascript 函数中使用相同的标题变量 我将如何使用它 例如 这个函数产生一个控制台错误说 未捕获的语法错误 意外的标识符
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • 哪些网络浏览器不支持 Javascript?以及如何识别客户端使用的是哪个浏览器?

    是否有不支持 javascript 的网络浏览器 以及如何确定客户端是否正在使用这些浏览器之一 或者客户端禁用了javascript 是否有不支持 javascript 的网络浏览器 当然 Lynx http en wikipedia or
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • 删除 Laravel Mix 中的临时文件

    我想在 laravel mix 构建期间或之后删除临时构建文件 这是我目前拥有的一些代码 但是del不工作 const mix require laravel mix const del require del compile sass i
  • jQuery:如何在显示元素的同时使用高亮效果?

    我在一个页面上有两个元素 div content div div style display none different content div 当我点击当前显示的div 我想隐藏它并显示另一个 这很容易做到 a hide b show
  • PhantomJS 网页内存消耗?

    是否有一种编程方式 因为我想在运行时自动执行 方式来查看网页在通过 PhantomJs 运行时使用了多少内存 我也在使用 casperjs 如果这有帮助的话 我已经搜索了很多但没有找到任何方法 PhantomJs 使用 QtWebKit 因
  • 如何模板化 Select2 的预选值

    我预先选择的值Select2 https select2 org如下所示 function formatState state console log state text2 I found undefined here console l
  • 数字和小数的输入掩码

    在测试我的程序后 我发现了以下错误 我在 sqlserver 中的表包含 价格数字 6 2 我的程序的用户输入价格 555 00 就很好了 但是当他输入 555555 时 这是错误的 所以我需要指定掩码 其中尾数是可选的 0 到 999 小
  • Angular 2访问组件内的ng-内容

    我怎样才能访问 content 来自组件类本身的组件 我想做这样的事情
  • 如何修复nodejs Express服务器中的“MulterError:意外字段”?

    我正在设置一个服务器来从客户端上传 zip 文件 服务器运行express和multer来执行此操作 上传文件时 服务器抛出 MulterError 意外字段 错误 我无法弄清楚是什么导致了它 我尝试过使用 png 图像 效果很好 但对于
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • jquery:选择xpath或将xpath转换为css?

    我需要基于 xpath 选择 或者将 xpath 转换为 css 有插件或者内置功能吗 ex html body div a 4 each 并非所有 xpath 表达式都可以转换为类似 CSS 的选择器 或者不能有效地工作 您可以使用 eq
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de

随机推荐

  • beginAt、endAt 使用索引而不是优先级

    有没有办法将 beginAt 和 endAt 与索引而不是优先级一起使用 以便我可以用它进行客户端分页 我将 priority 分配给非空值进行排序 您可以使用 startAt endAt 的第二个参数来执行此操作 请注意 在对消息进行排序
  • 无法使用 robo3T 和 C# 从其他服务器连接到 MongoDB 副本集

    我已经安装了mongodb副本集 在文件中mongod conf已添加 BIND IP 如下 net port 27017 bindIp 127 0 0 1 100 0 192 68 当我使用robo3t连接 副本集 时键入错误 但是当连接
  • Oracle ODP.NET 连接字符串:数据源中有什么?

    这是 ODP NET 的 ConnectionStrings com 字符串 很棒 但是什么是数据源 数据源 TORCL 用户ID someUser 密码 son28dnn 是控制面板中的DSN吗 服务器名称 TNS 命名服务名称 Than
  • 如何从 OpenXML 中的名称或工作表 ID 获取 Worksheetpart?

    下面创建一个 XLSX 添加两个包含一些数据的工作表 然后 我希望能够稍后根据名称 或者最好是 ID 获取电子表格 以便我可以在稍后的时间点添加 修改工作表 我不知道如何再次获取下面代码不完整的工作表 Sub Main Using doc
  • 如何使用 Node.JS 进行请求 HTTP 摘要身份验证?

    我必须使用 Node JS 为 API 文档编写一些代码 但我在过去几天尝试了在网络上找到的所有解决方案 当然包括 Stack 但没有成功 我的 API 使用 HTTP Digest Auth 这就是问题所在 我能够连接 这不是什么大问题
  • 按 Cassandra 中的任何字段排序

    我正在研究 cassandra 作为我即将进行的项目的可能解决方案 我研究得越多 我就越常听到这样的说法 对创建表时未设置排序的字段进行排序是一个坏主意 是否可以对任何字段进行排序 如果对不在集群中的字段进行排序会对性能产生影响 那么性能影
  • 配置温莎城堡和通用

    这是我在 Global asax 中的代码 WindsorContainer container new WindsorContainer container Register Component For typeof IRepositor
  • Scrapy中不同start_url的不同解析函数

    Scrapy可以为每个start url设置不同的解析函数吗 这是一段伪代码 start urls http 111sssssssss com http 222sssssssssssss com http 333sssssssssss co
  • 如何计算 git 树哈希?

    对于 Nodejs 项目 我需要确定文件夹的哈希值来检查版本 实际上 我制作了一个脚本来测试我的代码 没有文件系统 直接使用 git api 进行测试 但它有一半的时间有效 A1 https api github com repos zes
  • MySQL 按特定 24 小时间隔进行分组

    我有一个 MySQL 表 每行都有时间戳值 我的目标是对金额列的值求和 并按自定义 24 小时间隔 每天 05 30 00 开始 进行分组 input timestamp amount 2015 01 19 08 30 12 4 2015
  • 如何在数学图中画三角形?

    如何在显示 X 轴和 Y 轴的数学图表中绘制三角形 要使用 ActionScript2 绘制形状 您可以使用moveTo and lineTo MovieClip 对象的方法 您可以指定线条颜色和粗细线条样式 或者使用以下方法制作实体形状开
  • 如何从 CMake 中隐藏 Visual Studio 中的目标

    我正在使用 CMake 生成 sln 我想使用 Google Test 并使用此类代码来添加新测试 add executable my test test my test cpp target link libraries my test
  • 在数组中查找本地分钟

    有没有一种简单的方法来确定值数组的局部最小值和最大值 例如 Element Value Note 1 1 2 3 3 5 4 6 5 7 max 5 5 6 4 min 7 6 8 9 9 10 max 10 8 11 7 12 5 min
  • 动态获取 Android 设备的供应商 ID

    我想要得到Vendor ID通过我的代码访问我的 Android 设备 我读过这个 http developer android com tools device html http developer android com tools
  • 为什么在 hashcode() 实现中选择 31 来进行乘法? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么Java的String中的hashCode 使用31作为乘数 https stackoverflow com questions 299304 why does javas hashcode i
  • 使用一对多 JOIN 进行更新(多列)

    我遇到了一个问题 我不确定这是否是预期的行为 我在网上搜索了答案 但我所能找到的只是关于最后更新的行以及查询后的值是多少 我知道在这种情况下不存在订单之类的东西 并且您无法提前确定其价值是多少 但就我而言 我正在更新不同的列 因此覆盖以前的
  • Java 服务器的语言支持在过去 3 分钟内崩溃了 5 次。服务器不会重新启动

    添加 gitlab 后 我的 flutter 项目无法运行 代码无法运行 Android 应用程序 所以 我重新启动我的 Linux 电脑并再次尝试 现在它显示了此错误消息 Java 服务器的语言支持在过去 3 年内崩溃了 5 次 分钟 服
  • 是否可以为特定目标指定`panic = "abort"`?

    如果我指定panic像这样 它适用于所有目标 profile release panic abort 我想指定panic abort 仅适用于target arm linux androideabi 您需要添加一个 cargo config
  • 使用外部链接的CSS将边框应用于html元素[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 为什么我在通过外部链接的 CSS 文件设置 HTML 元素边框时遇到困难 帮助 我的 HTML 中的代码 section clas
  • 以 XSS 安全方式替换 AJAX 响应中的选项

    从内部succcess我的 AJAX 响应的方法 我的目标是以 XSS 安全的方式执行以下操作 删除所有现有的options在选择框中 替换同一选择框中的选项 这是删除和替换选项的一种方法 但我对这种策略完全安全的 XSS 没有很高的信心