gpt4 book ai didi

javascript - 避免 XSS 并允许一些带有 JavaScript 的 html 标签

转载 作者:数据小太阳 更新时间:2023-10-29 05:12:48 26 4
gpt4 key购买 nike

我在当前的项目中遇到了一个问题:用户可以使用文本区域发送电子邮件。我们允许用户输入他们想要的任何内容,因此可以输入一些用于格式化的 HTML。例如,应允许用户使用 <b>粗体文本标记。

完成电子邮件后,用户应该能够动态查看电子邮件的预览。

不过有一个小问题,如何在显示预览时避免 XSS 攻击?

您当然可以使用 underscore.js 去除它们,但这不会格式化他们的预览。

所以我暂时禁止了所有 HTML 标签,只允许像 <hr> 这样的标签。 , <b>

您如何看待这个解决方案?是否足够安全?

最佳答案

为了防止应用程序受到 XSS 攻击,我通常使用以下规则:

  1. 确定您的应用程序的安全级别。
    有几种工具可以保护您的应用程序,对我而言,更好的安全性由 OWASP 提供。工具:ESAPIAntySami .
    注意:使用 Sanitization 并不能保证过滤掉所有恶意代码,因此工具可能或多或少是安全的。

  2. 了解您是否需要对客户端、服务器或双方执行清理。在大多数情况下,在服务器端执行此操作就足够了。

  3. 了解您是否需要保留 html 标签(以及您需要保留哪些标签)。如前所述,不允许 html 标签是更安全的解决方案。

基于此你可以找到一个合适的决定。
1. 个人服务器代码清理我使用 jSoup .对于我来说,这是一个非常好的工具。
通常为了检查输入漏洞,我使用以下向量:

';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
  1. 如果您需要在客户端防止 XSS,您可以使用以下工具:
    一)JSSANItazer似乎有点过时了
    b) Dust - 由推特维护;

这些工具可以让您轻松地清理您的输入,主要是回答您的问题。

上面提到的服务器端工具。

关于第三点。如果您不需要处理 html 标签,您可以轻松地在服务器端使用 ESAPI 和 ESAPI4JS在客户端。据我了解,它对您不起作用。

当我阅读您的任务时,我了解到您正在存储电子邮件消息,因此在您的情况下,需要在服务器端清理输入(使用其中一种工具),并且根据您的需要在客户端添加或不添加。您只需要决定是在 UI 端添加另一个清理还是在服务器上呈现您的“预览页面”。

关于javascript - 避免 XSS 并允许一些带有 JavaScript 的 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com