清理json输入到java服务器

时间:2010-04-02 16:46:29

标签: java security json

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

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

我想在从json转换为java时从用户输入中删除可疑的东西(即“doSomethingNasty()。)。

我可以想象我能做到的几点:

  • 我可以检查原始的json字符串并删除看起来很滑稽的东西
  • 我可以找到一种方法来拦截进入java对象的每个json值,并在那里寻找有趣的东西。
  • 我可以在从json重构之后立即遍历我的新java对象,查找字符串的任何字段,并在那里删除东西。

最好的方法是什么?是否有为这项任务而构建的技术,我将其应用于已有的技术?

2 个答案:

答案 0 :(得分:1)

我建议方法3:在到达时立即遍历重建的Java对象,并且在任何其他逻辑可以对其进行操作之前。构建您可以逃避的最严格的验证(即,进行白名单)。

您可以在从Json-lib检索的对象层次结构的单个深度优先遍历中执行此操作。通常,您不希望接受对象中的任何JSON函数,并且您需要确保所有值(数字,字符串,对象树的深度......)都在预期范围内。是的,这样做很麻烦,但相信我,良好的用户输入验证的替代方案要糟糕得多。无论什么时候删除,都可以添加日志记录,以诊断验证代码中的任何可能的错误。

答案 1 :(得分:0)

据我了解,您需要验证进入应用程序的JSON数据。 如果你想做白名单(“你知道你期望的数据,没有别的东西是有效的”),那么在创建java对象之后验证它们是有意义的(“确保不将java对象发送到DB或返回在验证完成之前以某种方式访问​​UI)。 如果你想要黑名单的字符(你知道一些你想要避免的威胁字符“),那么你可以直接查看json字符串,因为这个验证在一段时间内不会有太大变化,即使它是的,你只需要增强一个共同的位置。虽然列出iot将取决于你的业务逻辑。