【问题标题】:JavaScript: make html text plain textJavaScript:使 html 文本成为纯文本
【发布时间】:2012-03-19 08:58:00
【问题描述】:

我有一个 js 函数,它将字符串作为参数并将其显示在 div 元素中。这样的字符串可能包含html标签。

如何强制 JS 将 div-elements 中的内部文本显示为带有 h​​tml-tags 的 html-text。而且,还有什么是过滤特定标签的适当方法,即应用某些标签进行样式设置并打印其他标签。

【问题讨论】:

标签: javascript html regex


【解决方案1】:

您只需使用String#replace (spec, MDC) 将&<(如果您愿意,也可以选择>,但您不必这样做)替换为它们各自的实体) 例如。

【讨论】:

  • 非常感谢。是的,我只是用它的代码对“
  • @user1041195 不要忘记 any 标记甚至可以嵌入带有 JavaScript 的处理程序,并且“javascript:”是 URL 的有效前缀。如果您的用户可以插入 HTML,请不要手工制作。
  • @user1041195:支持 Adriano 所说的:如果您要允许一些 HTML 标签,最好的办法是使用 XSS 库,而不是自己做。如果您自己做,请创建一个标签白名单(禁止其他任何内容),并为每个标签创建一个您在该标签上允许的属性的白名单,以及(在某些情况下)允许这些属性采用的形式。您不会希望允许 <strong onclick="doSomethingReallyEvil();">Look, bunnies!</strong> 或类似名称。
  • 是的,属性也需要考虑。阿德里亚诺,T.J.克劳德,谢谢。
  • @T.J.Crowder 是的,我认为忘记一些关于 HTML 的事情太容易了(特别是如果这是他第一次),但你已经得到了我的 +1 直截了当解释他应该做什么!
【解决方案2】:

此外,过滤特定标签的适当方法是什么,即应用某些标签进行样式设置并打印其他标签。

对于XSS,直接放置用户插入的 HTML 代码是危险的。您应该使用一些工具来清理 HTML 代码(例如,在 StackOverflow 上,您可以使用一些 HTML 标签)。

正如this question 中发布的那样,您可以使用此客户端消毒剂:http://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/plugin/html-sanitizer.js 另一方面,您可能需要在服务器端执行此操作,具体取决于您的环境(ASP.NET?PHP?)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2014-09-08
    • 2012-04-12
    • 2017-08-28
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多