我读过有关数据验证应该发生的冲突的哲学,只是让我感到困惑.有人说这只应该在
数据库中.其他人则认为验证规则应该像其他层次镜像,如bll或ui.
数据验证应该在哪里生效?应该将规则分割成多层?关于在数据库上运行的应用程序中何时和何地验证数据的一些实际最佳实践(相对于理论,云端类型的东西).
我的2美分:
数据验证应在两个位置进行:
>数据的作用点,例如验证SQL查询的输入参数.
>在提交数据时的一般验证,例如在Web应用程序中,客户端上应发生一些验证.优点是您可以快速通知用户输入问题,即不正确的电话号码,字符串太长等.但是,不应该依赖于权威性验证检查,就Web应用而言,恶意用户可能绕过客户端验证.
在我看来,数据库不应该执行一般验证,数据应该在进入数据库之前进行验证/转义/清理.那就是说,你的数据库模式可以通过列数据类型,约束等给你一个抽象的验证级别.也就是说,任何可能触发这些问题的数据在被传递到数据库之前都应该被清理.
这说,有很多错误的方法,但没有正确的方法.验证取决于应用程序的体系结构,数据的性质以及数据的使用方式.