【发布时间】:2015-02-24 20:04:39
【问题描述】:
我有一个运行服务器端的验证属性类来检查表单文本框。我还在 javascript 调用中实现了它的客户端。我的问题是,如果客户端被调用并返回 true,那么服务器端是否也应该被调用?客户端和服务器端都应该调用吗?似乎如果客户端验证通过,则无需在服务器端再次调用任何类型的验证。检查两次似乎有点多余。
【问题讨论】:
标签: javascript jquery asp.net-mvc unobtrusive-validation
我有一个运行服务器端的验证属性类来检查表单文本框。我还在 javascript 调用中实现了它的客户端。我的问题是,如果客户端被调用并返回 true,那么服务器端是否也应该被调用?客户端和服务器端都应该调用吗?似乎如果客户端验证通过,则无需在服务器端再次调用任何类型的验证。检查两次似乎有点多余。
【问题讨论】:
标签: javascript jquery asp.net-mvc unobtrusive-validation
客户端验证是为了方便。服务器端验证是真正的验证。无论如何,您永远不应该信任客户端,因此无论如何您都应该运行服务器端验证。
【讨论】:
是的,绝对应该。
原因是如果有人绕过您的网站并直接向您的服务器拨打电话怎么办?如果他们试图放入不良数据来破坏您的网站怎么办?如果没有服务器端验证,您也将失去保护。
客户端验证的原因是您可以快速向用户提供反馈以修复错误,甚至可能在他们无需回发的情况下键入。
服务器端验证的原因是提供更复杂的验证,其中可能涉及数据库查找,最重要的是保护您的服务器免受恶意用户的攻击。
【讨论】:
客户端验证只是减少服务器端工作量的一种方式,因为一旦客户端验证为真,它在服务器端应用程序中也将为真。有时,人们可能会绕过客户端验证,您的服务器端验证将帮助您。最好始终进行服务器端验证,但只是为了减少对服务器的请求进行验证,客户端服务器可以帮助您在请求转到服务器之前先确认,如果它为假,则没有请求转到服务器端。
【讨论】: