什么时候应该进行数据验证?

时间:2011-02-08 19:01:46

标签: validation business-logic

例如,如果我想检查输入是否只有字母数字字符且长度超过10个字符。我应该检查服务器端吗?或服务器端和数据库(查询)本身?或者只是去寻找热情并检查客户端,服务器端和数据库端?

只是想找到合适的检查平衡。

4 个答案:

答案 0 :(得分:1)

一个好主意无效,你在客户端和服务器上验证。在客户端上验证,但在后端处理数据时不要盲目信任结果。这可能使您的应用程序容易受到恶意攻击,尤其是在驱动关键业务流程的表单中。

首先通过验证数据客户端来增加用户体验,然后通过在后端验证客户端已被视为有效的内容来保护自己。

答案 1 :(得分:0)

始终验证服务器端。如果你想做动态jQuery-ish表单处理错误弹出窗口等,另外做客户端可能会有所帮助。不确定“在查询中”是什么意思 - 你的意思是在架构中吗?

答案 2 :(得分:0)

永远不需要在服务器端和数据库中都这样做。是否在客户端进行检查取决于您的环境以及应用程序的运行方式。在Web应用程序中,如果运行许多客户端脚本来执行各种其他操作,则客户端验证是理想的,如果不是必需的话。重要的是你需要在服务器端进行所有验证,即使你在客户端做了一些验证,因为如果你愿意的话,很容易绕过客户端验证。

即使你没有做很多客户端的狡猾,客户端验证也是非常有益的,因为它减少了对服务器的请求,这可以极大地帮助性能(感知和实际)。

在数据库中进行验证是错误的,因为验证通常由业务规则驱动,而您的数据层不应该是业务规则的所有者。

答案 3 :(得分:-2)

老实说,这是偏好,但有好处。如果您处于高流量环境中,您可能不希望执行所有验证服务器端,因为您可以更少地进入服务器的流量。

部分客户端和部分服务器端。

易于验证客户端的项目可能是:

  • 输入长度
  • 输入类型(字符串,整数,日期,布尔)
  • 选择的字段驱动限制

取决于您的数据层是什么......如果您的使用程序,应该内置基本数据类型验证。