我正在使用json在浏览器和java服务器之间传递数据。
我正在使用Json-lib在java对象和json之间进行转换。
我想在从json转换为java时从用户输入中删除可疑的东西(即“doSomethingNasty()。)。
我可以想象我能做到的几点:
最好的方法是什么?是否有为这项任务而构建的技术,我将其应用于已有的技术?
答案 0 :(得分:1)
我建议方法3:在到达时立即遍历重建的Java对象,并且在任何其他逻辑可以对其进行操作之前。构建您可以逃避的最严格的验证(即,进行白名单)。
您可以在从Json-lib检索的对象层次结构的单个深度优先遍历中执行此操作。通常,您不希望接受对象中的任何JSON函数,并且您需要确保所有值(数字,字符串,对象树的深度......)都在预期范围内。是的,这样做很麻烦,但相信我,良好的用户输入验证的替代方案要糟糕得多。无论什么时候删除,都可以添加日志记录,以诊断验证代码中的任何可能的错误。
答案 1 :(得分:0)
据我了解,您需要验证进入应用程序的JSON数据。 如果你想做白名单(“你知道你期望的数据,没有别的东西是有效的”),那么在创建java对象之后验证它们是有意义的(“确保不将java对象发送到DB或返回在验证完成之前以某种方式访问UI)。 如果你想要黑名单的字符(你知道一些你想要避免的威胁字符“),那么你可以直接查看json字符串,因为这个验证在一段时间内不会有太大变化,即使它是的,你只需要增强一个共同的位置。虽然列出iot将取决于你的业务逻辑。