【发布时间】:2015-07-21 07:01:24
【问题描述】:
在服务器端处理 POST、PUT 和 PATCH 请求时,我们经常需要处理一些 JSON 来执行请求。
很明显,我们需要以某种方式验证这些 JSON(例如结构、允许/预期的键和值类型),我可以看到至少两种方式:
收到 JSON 后,预先验证 JSON 的原样,在对其执行任何操作以完成请求。
按原样获取 JSON,开始处理它(例如访问它的各种键值)并尝试在执行业务逻辑时随时验证它,并可能使用一些异常处理来处理时尚数据。
与第二种方法相比,第一种方法似乎更健壮,但可能更昂贵(时间成本),因为每个请求都会被验证(希望它们中的大多数都是有效的,所以验证有点多余)。
第二种方法可以省去对有效请求的强制验证,但是在业务逻辑中混合检查可能有问题甚至有风险。
以上两个哪个更好?或者,还有更好的方法吗?
【问题讨论】:
-
第一种方法对于未来的重构也更加健壮。
-
我建议分开你的验证。在预先验证时,仅验证基本(数据类型、空值、大小)标准。在业务层,随时随地验证业务的正确性(例如,提供的代码是否正确)。将业务层的验证代码模块化,我认为这不会有问题/风险。
-
你使用的是什么网络框架?
-
@Sdra,龙卷风 (python)
-
感谢您的回答。我对每个人都投了赞成票,因为我非常感谢您的意见。
标签: json web-services validation api security