【问题标题】:Validations in ASP.NET and C#ASP.NET 和 C# 中的验证
【发布时间】:2010-09-02 11:30:33
【问题描述】:

哪个最好——客户端验证还是服务器端验证?

【问题讨论】:

  • 这需要保持打开状态,因此服务器端验证不是可选的明确答案。这值得重复多次才能让信息通过。
  • 虽然它可能是有争议的,但我需要正确的答案。这样我就可以在我的应用程序中使用。请投票重新开放
  • @bzlm、@Alex Reitbort、@serg10、@Arcturus、@Joel Etherton:这个问题没有任何主观或争论性。这是安全性和可用性的问题。请投票重新开放。
  • 哇,关闭并在 42 分钟内重新打开!

标签: c# asp.net


【解决方案1】:

服务器端验证是必须的,因为客户端验证可以被篡改。但是,客户端验证通常会提供更好的用户体验,因为它需要更少的回发。所以我建议同时使用。

【讨论】:

    【解决方案2】:

    必须进行服务器端验证。否则任何人都可以发送他们喜欢的任何内容(考虑禁用 JavaScript 的浏览器,或自定义的假浏览器)。

    客户端站点验证可用于提供更好的用户体验,但如果它不可用,您应该正确操作。

    【讨论】:

      【解决方案3】:

      为了安全:

      服务器端验证。

      精明的客户可以删除验证。

      为了获得最佳 GUI 体验:

      客户端验证。

      【讨论】:

        【解决方案4】:

        对于 ASP.NET 中的验证目的,两者都很好,但这取决于应用程序。出于安全考虑,服务器端验证是最好的,但它会增加服务器的开销,所以我们通常避免在不必要的时候使用服务器端验证。

        客户端验证通常最适合检查输入类型参数,它在客户端的检查意味着在您的浏览器上,因此它不会给服务器带来负载,并且花费的时间更少且不安全。

        在我看来,客户端验证是最好的。

        【讨论】:

          【解决方案5】:

          我建议仅使用 AJAX 进行服务器端验证。

          正如其他人所指出的,服务器端验证是必须的,因为客户端验证可以被篡改。

          除了服务器端验证之外,我曾参与过使用客户端验证的项目,我相信这在服务器上会更容易并提供更好的用户体验。虽然它工作得很好,但它的代价是违反了 DRY(不要重复自己)原则并冒着不一致的服务器/客户端验证实现的风险(注意:我很久以前就放弃了内置的 ASP.NET 验证器)。

          从那时起,我发现在实践中,您可以通过使用 Ajax 执行所有 POSTS 来获得几乎一样好的用户体验:如果服务器上的验证成功,则继续执行 POST 的主要目的(保存数据或其他内容) ,并返回成功的 JSON 响应并调用成功回调以导航到另一个页面或其他内容。如果验证失败,则返回包含失败字段和消息的 JSON 响应,并调用失败回调以显示它们。

          假设您注意精简您的 POST(我知道这是 ASP.NET 中的一种刻意练习),那么这个策略通常对您的服务器来说已经足够友好了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多