Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 什么时候应该进行数据验证?_Validation_Business Logic - Fatal编程技术网

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

Validation 什么时候应该进行数据验证?,validation,business-logic,Validation,Business Logic,例如,如果我想检查输入是否只有字母数字字符,并且长度超过10个字符。我应该在服务器端检查一下吗?还是服务器端和数据库(查询)本身?或者只是兴致勃勃地检查一下客户端、服务器端和数据库端 只是试图找到正确的检查平衡。始终验证服务器端。如果您希望执行动态jQuery ish表单处理错误弹出窗口等操作,那么另外执行客户端操作会很有帮助。不确定“在查询中”是什么意思——你是指在模式中吗?老实说,这是首选,但也有好处。如果您处于高流量环境中,您可能不希望在服务器端执行所有验证操作,因为进入服务器的流量越少越

例如,如果我想检查输入是否只有字母数字字符,并且长度超过10个字符。我应该在服务器端检查一下吗?还是服务器端和数据库(查询)本身?或者只是兴致勃勃地检查一下客户端、服务器端和数据库端


只是试图找到正确的检查平衡。

始终验证服务器端。如果您希望执行动态jQuery ish表单处理错误弹出窗口等操作,那么另外执行客户端操作会很有帮助。不确定“在查询中”是什么意思——你是指在模式中吗?

老实说,这是首选,但也有好处。如果您处于高流量环境中,您可能不希望在服务器端执行所有验证操作,因为进入服务器的流量越少越好

部分it客户端和部分it服务器端也是如此

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

  • 输入长度
  • 输入类型(字符串、int、日期、bool)
  • 场驱动的选择限制

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

永远不需要在服务器端和数据库中进行验证。是否在客户端进行检查取决于您的环境和应用程序的工作方式。在web应用程序中,如果有大量客户端脚本运行以执行各种其他操作,那么客户端验证是理想的,如果没有必要的话。重要的一点是,您需要在服务器端执行所有验证,即使您在客户端执行了部分验证,因为如果您愿意,可以很容易地绕过客户端验证

即使您没有做太多的客户端怪事,客户端验证也是非常有益的,因为它减少了对服务器的请求,这可以极大地提高性能(无论是感知的还是实际的)

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

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


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

您还需要在服务器端进行客户端验证。您知道绕过客户端验证有多容易吗?客户端验证纯粹是为了方便用户,而不是一种真正的验证方法。在数据库中设置一些验证规则可能是有意义的——这完全取决于您如何使用数据库。如果多个客户端使用数据库进行集成,那么在数据库中进行一些数据验证可能是有意义的。这不是很有效,因为您必须在错误发生之前将调用一直传播到数据库,因此您可能也希望检查链中的更高位置。我的意思是在查询中,例如(在t-sql中):
if LEN(@trackerid)>10开始--一些东西结束
如果您已经在验证服务器端的所有内容(您应该这样做),那么我认为这是浪费。要完成你已经完成的事情需要做很多工作。此外,如果您更改数据库,它将变得毫无用处。