【问题标题】:asp.net mvc 5 should server side validation run if client side runs first如果客户端首先运行,asp.net mvc 5 应该运行服务器端验证
【发布时间】:2015-02-24 20:04:39
【问题描述】:

我有一个运行服务器端的验证属性类来检查表单文本框。我还在 javascript 调用中实现了它的客户端。我的问题是,如果客户端被调用并返回 true,那么服务器端是否也应该被调用?客户端和服务器端都应该调用吗?似乎如果客户端验证通过,则无需在服务器端再次调用任何类型的验证。检查两次似乎有点多余。

【问题讨论】:

    标签: javascript jquery asp.net-mvc unobtrusive-validation


    【解决方案1】:

    客户端验证是为了方便。服务器端验证是真正的验证。无论如何,您永远不应该信任客户端,因此无论如何您都应该运行服务器端验证。

    【讨论】:

      【解决方案2】:

      是的,绝对应该。

      原因是如果有人绕过您的网站并直接向您的服务器拨打电话怎么办?如果他们试图放入不良数据来破坏您的网站怎么办?如果没有服务器端验证,您也将失去保护。

      客户端验证的原因是您可以快速向用户提供反馈以修复错误,甚至可能在他们无需回发的情况下键入。

      服务器端验证的原因是提供更复杂的验证,其中可能涉及数据库查找,最重要的是保护您的服务器免受恶意用户的攻击。

      【讨论】:

      • 似乎应该有一种方法来检查是否调用了客户端验证,如果通过了则不要运行服务器端验证。
      • @user1186050 服务器怎么知道?客户必须告诉它,对吧?而且由于客户端不受服务器控制,服务器很容易被骗。
      • @user1186050:请注意,如果其中一个答案对您有所帮助,那么您应该接受它作为答案。如果没有,请随时通过 cmets of 编辑您的问题来询问更多详细信息。
      【解决方案3】:

      客户端验证只是减少服务器端工作量的一种方式,因为一旦客户端验证为真,它在服务器端应用程序中也将为真。有时,人们可能会绕过客户端验证,您的服务器端验证将帮助您。最好始终进行服务器端验证,但只是为了减少对服务器的请求进行验证,客户端服务器可以帮助您在请求转到服务器之前先确认,如果它为假,则没有请求转到服务器端。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-26
        • 2022-10-17
        • 1970-01-01
        相关资源
        最近更新 更多