java - 清理 java 服务器的 json 输入

标签 java security json

我使用 json 在浏览器和 java 服务器之间传递数据。

我正在使用Json-lib在java对象和json之间进行转换。

我想在从 json 转换为 java 时从用户输入中删除看起来可疑的内容(即“doSomethingNasty().”)。

我可以想象我可以在几个点上做到这一点:

  • 我可以检查原始 json 字符串并去掉看起来有趣的东西
  • 我可以寻找一种方法来拦截进入 java 对象的每个 json 值,并在那里寻找有趣的东西。
  • 我可以在从 json 重构后立即遍历我的新 java 对象,查找任何字符串字段,然后剥离其中的内容。

最好的方法是什么?是否有为此任务构建的任何技术,我可以在已有技术的基础上添加这些技术?

最佳答案

我建议采用方法 3:在重构的 Java 对象到达后立即遍历它们,然后再对它们进行任何其他逻辑操作。构建您可以摆脱的最严格的验证(即进行白名单)。

您可以通过对从 Json-lib 检索的对象层次结构进行一次深度优先遍历来完成此操作。一般来说,您不想在对象中接受任何 JSON 函数,并且您需要确保所有值(数字、字符串、对象树的深度等)都在预期范围内。是的,要做好这一点是一个巨大的麻烦,但相信我,良好的用户输入验证的替代方案要糟糕得多。每当您删除内容时添加日志记录可能是一个好主意,以诊断验证代码中任何可能的错误。

关于java - 清理 java 服务器的 json 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2567890/

相关文章:

java - 用于自定义超时设置的 java.net.URL 的替代方案

java - 日期增量问题

java - 如何使我的交换机保护套在JFrame上起作用?

ios - iOS 安全代码设计框架,缺少 Asn1 文件?

javascript - 无法从 jquery 'this' 对象中找到 .attr

javascript - 如何访问这些对象?

java - 打印枚举菜单

python - 在 django 中设置限制(防止 View 上出现过多点击)

security - 在 IIS 中需要客户端证书而不需要 SSL

json - 如何从CouchDB中的巨大JSON文件(460 MB)批量插入