Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS应用程序中基于DOM的XSS保护_Javascript_Html_Dom_Xss - Fatal编程技术网

Javascript JS应用程序中基于DOM的XSS保护

Javascript JS应用程序中基于DOM的XSS保护,javascript,html,dom,xss,Javascript,Html,Dom,Xss,我对基于dom的XSS攻击感到非常困惑。我只想保护在我的JS应用程序中输出到dom(使用innerHTML)的任何服务器检索到的数据。转义HTML实体或转义安全属性的引号等。然后我阅读了关于基于dom的XSS的文章,我真的不知道它和转义HTMl有什么不同。 在此表中,您可以看到一个基于dom的XSS示例: <script>document.write("UNTRUSTED INPUT: " + document.location.hash);<script/> doc

我对基于dom的XSS攻击感到非常困惑。我只想保护在我的JS应用程序中输出到dom(使用innerHTML)的任何服务器检索到的数据。转义HTML实体或转义安全属性的引号等。然后我阅读了关于基于dom的XSS的文章,我真的不知道它和转义HTMl有什么不同。

在此表中,您可以看到一个基于dom的XSS示例:

<script>document.write("UNTRUSTED INPUT: " + document.location.hash);<script/>
document.write(“不可信输入:”+document.location.hash);
本文建议您必须应用本文中描述的技术:

如果我错了,请纠正我,但是这个示例应该使用简单的html实体来完全保护

<script>document.write("UNTRUSTED INPUT: " + escapeHTML(document.location.hash));<script/>
document.write(“不可信输入:”+escapeHTML(document.location.hash));
其中escapeHTML编码html实体

我不知道第二篇文章是关于什么的,什么是符号?(用谷歌搜索是不可能的)它是某种服务器端语言吗?逃离JS服务器端是有意义的,那么本文中的内容是什么呢?对于生成javascript服务器端的人来说,有哪些提示?因为这篇文章对我来说毫无意义,如果它只是针对静态文件中的普通JS


更新:我只想知道使用innerHTML方法动态插入DOM时是否只需要转义HTML。当然,我知道URL和样式需要特别注意,正如我链接的第一篇文章中所述。

攻击可能来自服务器或DOM。存储的XSS攻击和反射的XSS攻击都来自服务器,当有人将其错误代码输入到您的数据库或服务器上后执行时就会发生。简而言之,防止坏代码进入服务器的方法是保护数据传输方法(输入、按钮、表单、URL、查询字符串)。

攻击范围更广。DOM内置的唯一安全性是同源策略。它说,如果代码是从同一个域触发的,那么“它必须是安全的”。问题是HTML限制非常宽松,一个页面上接受的上下文太多,可能相互交叉并影响。您可以在脚本标记中编写JavaScript,并在随后触发的输入字段中调整它们的速度。JavaScript可以访问页面URL上下文,该上下文可用于重定向单击事件。那只是几个

如果你真的想保护你的站点服务器端和DOM,如果可能的话,我会调查一下。这是额外的工作,但如果你真的想把事情锁起来,那是值得的


最后,您询问的
是用于的。

我不确定整个问题的答案,但看起来像是ASPIt,听起来您应该对HTML的服务方式很好。基于DOM的攻击与核心的DOM攻击向量有关。因此,您只需在发送数据备份时担心它们。
不仅是.NET,而且在许多不同的语言中都很常见。另一个例子是下划线.js,我认为甚至一些java框架也使用这种语法。