数据验证应该在哪里进行?

问题描述 投票:0回答:3

我读过关于数据验证应该在哪里进行的相互矛盾的哲学,这让我更加困惑。有人说它应该只存在于数据库中。其他人说验证规则应该反映在其他层,如 bll 或 ui。

数据验证应该在哪里进行?规则应该分为多个层吗?关于何时何地验证运行在数据库之上的应用程序中的数据,有哪些实际的最佳实践(与理论相反,云里雾里的东西)

database validation n-tier-architecture
3个回答
14
投票
我的2美分:

数据验证应在两个位置进行:

  1. 对数据进行操作的点,例如验证 SQL 查询的输入参数。

  2. 提交数据时的一般验证,例如在 Web 应用程序中,应在客户端进行一些验证。优点是您可以快速通知用户输入问题,即电话号码格式不正确、字符串太长等。但是,这不应被视为权威验证检查,因为在 Web 应用程序的情况下,恶意用户可能会这样做可能会绕过客户端验证。

在我看来,数据库不应该执行一般验证,数据应该在进入数据库之前进行验证/转义/清理。也就是说,您的数据库模式可以通过列数据类型、约束等为您提供一定程度的抽象验证。也就是说,任何可能引发这些问题的数据都应该在传递到数据库之前进行“清理”。

话虽如此,错误的方法有很多,但没有正确的方法。验证取决于应用程序的架构、其中数据的性质以及数据的使用方式。


3
投票
应该这样做:

    在第一次输入时
  • 沿途任何地方它都会被改变/操纵
  • 在此过程中的任何地方都可能导致错误或不正确的数据
因此,例如,在数据库驱动的 Web 表单应用程序中,您将拥有客户端 JavaScript 验证,可能还有业务逻辑中的一些服务器端验证,然后是数据库中的进一步约束,范围从数据类型到检查约束。


0
投票
数据验证发生在整个数据处理工作流程的关键阶段:

输入验证:理想情况下,数据验证应从数据输入点开始。这确保数据在进入系统后立即得到验证和干净,其主要目标是降低数据不正确或损坏的风险。

后端处理:系统接收到数据后,必须在后端处理或数据转换阶段进行进一步的验证。这包括根据预定义的规则、法规或限制审查数据。

数据检索期间:根据用例,数据验证也可以在数据检索或查询执行期间进行。这可确保收集或提供给用户的数据符合特定的质量标准。

集成点:与分布式系统或外部服务集成时,必须在集成点进行数据验证,以保证系统的一致性和兼容性

数据验证对于准确可靠的信息至关重要。要了解数据验证应在何处进行以及有效的技术,请查看这篇富有洞察力的文章:

数据验证技术。它涵盖了确保处理每个阶段的数据质量和完整性的基本策略。

© www.soinside.com 2019 - 2024. All rights reserved.