当前位置: 首页 > 知识库问答 >
问题:

DOM、XSS和Javascript转义

靳睿
2023-03-14

我正在研究基于DOM的XSS预防的所有OWASP规则,并试图充分理解每个规则。我对这条规则有点困惑:

“规则#2-JavaScript在将不可信数据插入执行上下文中的HTML属性子上下文之前转义”

也许这个问题也可以表述为“在OWASP的基于DOM的XSS备忘单的上下文中,html转义和javascript转义之间有什么区别?请给出javascript转义的示例。

共有1个答案

丁光华
2023-03-14

所需的转义取决于插入值的上下文。使用错误的转义可能会在一个上下文中允许特殊字符,而在不同的上下文中不是特殊字符,或者损坏值。

JavaScript转义用于通过服务器端模板语言直接插入到JavaScript字符串文本中的值。

所以他们的例子是:

x.setAttribute("value", '<%=Encoder.encodeForJS(companyName)%>');
var x = '<%=Encoder.encodeForJS(companyName)%>';

属性不需要进行HTML编码,因为它不在HTML上下文中。当值直接插入属性时,需要HTML编码,如:

<input value='<%=Encoder.encodeForHTML(companyName)%>'>
 类似资料:
  • JavaScript写的XSS攻击代码过滤模块 1、在Node.js中使用: 安装:  npm install xss var html = require('xss'); console.log(html); 2、在浏览器中使用: <script src="https://raw.github.com/leizongmin/js-xss/master/build/xss.js"></script

  • 简要描述 我们教程的 DOM XSS 就到这里了。最后再给大家送上一个实例。希望大家能够体会到:XSS 的上下文非常重要,如何结合上下文, 利用未过滤字符,合理的构造,才是成功的关键。 详细说明 1. 我们直接看实例点。 http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=aaaaaaaaaaa&o

  • 简要描述 我不是萝莉 con,我是路径 con。 一些程序员会动态的加载 json 数据,同域的时候,可以使用 ajax;而有时候,数据所在域和当前页面所在域又不一致。所以需要跨域 请求。跨域请求数据的手段中,有一种叫做 jsonp。 用代码表示的话,就是 somescript.src="http://otherdomain.com/xx?jsonp=callback" 某些时候,程序员会在调用外

  • 简要描述 有时候,输出还会出现在 <iframe src="[输出]"></iframe> 。 iframe 的 src 属性本来应该是一个网址,但是 iframe 之善变,使得 它同样可以执行 javascript,而且可以用不同的姿势来执行。这一类问题,我将其归为[路径可控]问题。当然上面说到的是普通的反 射型 XSS。有时候程序员会使用 javascript 来动态的改变 iframe 的

  • 简要描述 前面的教程,说到了显式输出和隐式输出。但是不论怎么样,因为最终 javascript 都会通过 document.write 或 innerHTML 将内 容输出到网页中,所以我们总是有办法看到输出到哪里。 但是有时候,我们的输出,最终并没有流向 innerHTML 或 document.write, 而是与 eval 发生了邂逅,我们该怎么挖掘并利用呢? 详细说明 1. 我们直接上例子

  • 问题内容: 有一个Node.js项目用于清理数据,还有一个用于JavaScript的OWASP库,用于处理清理过程以防止XSS。 我一直在对这些库进行基准测试,它们非常密集,也许是一个过大的杀伤力,我的应用程序不需要任何动态HTML(由用户,bbtags提交,甚至根本不需要,都不需要),所以为什么不这样做呢: 禁用“ ”和“ ”字符,不要替换它们或其他任何东西,只需禁用它们,如果用户提交了这些,则