【问题标题】:JSoup vs OWSAP AntiSamy for JSON Sanitization用于 JSON 清理的 JSoup 与 OWSAP AntiSamy
【发布时间】:2015-06-30 06:04:30
【问题描述】:

我正在寻找一个库来执行 JSON Santization,并遇到了 JSoup 和 OWSAP AntiSamy。看起来 AntiSamy 只做 HTML Sanitization,并且有一个单独的 JSON Sanitization 项目。 JSoup 似乎也没有提到 JSON 清理。

JSoup 和 OWSAP AntiSamy 是否执行 JSON 清理?

【问题讨论】:

  • 我投票结束这个问题,因为它太宽泛了
  • @HashMap 我已将问题更新为具体。我的问题是找出 JSON 清理功能,如果它存在于 2 个库中。希望这个问题现在可以保持开放。
  • 据我所知,Jsoup 不能做与 JSON 相关的任何事情

标签: jsoup xss owasp html-sanitizing


【解决方案1】:

OWASP 有一个JSON sanitizer project,与 AntiSamy 分开,可将类似 JSON 的内容转换为语法正确且可嵌入的 JSON。

输出是 RFC 4627 定义的格式良好的 JSON。输出满足三个附加属性:

  • 输出将不包含子字符串(不区分大小写)“</script”,因此可以嵌入到 HTML 脚本元素中而无需进一步编码。
  • 输出将不包含子字符串“]]>”,因此无需进一步编码即可嵌入到 XML CDATA 部分中。
  • 输出是一个有效的 Javascript 表达式,因此可以由 Javascript 的 eval 内置函数(括在括号中)或 JSON.parse 解析。具体来说,输出不会包含任何带有嵌入 JS 换行符(U+2028 段落分隔符或 U+2029 行分隔符)的字符串文字。
  • 输出仅包含未转义的 XML 中允许的有效 Unicode 标量值(没有独立的 UTF-16 代理)。

【讨论】:

    【解决方案2】:

    如果您有预定义的数据结构,我建议您考虑使用Sandhands 进行卫生处理。 Sandhands 确保您的数据遵循特定格式。

    文档中的片段:

    基本导出

    import {sanitize, valid, details} from 'sandhands'
    
    valid(12, String) // returns false
    sanitize(12, String) // throws error with message "Invalid Type"
    details(12, String) // returns "Invalid Type"
    

    更高级的用法

    我们还可以为更高级的数据结构(如对象)提供环境

    import {sanitize} from 'sandhands'
    
    sanitize({name: "Timmy", age: 25, favoriteColor: 'yellow'}, {name: String, age: Number, favoriteColor: String}) // Doesn't throw any errors
    sanitize({name: "jake", age: 23, favoriteColor: true}, {name: String, age: Number, favoriteColor: String}) // Throws the error "Error: Expected String"
    

    编辑:我开发了 Sandhands 公平警告

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 2014-01-28
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 2016-09-29
      • 2012-10-28
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多