【问题标题】:Favorite Web Form Validation Technique最喜欢的 Web 表单验证技术
【发布时间】:2010-09-15 15:08:28
【问题描述】:

大家最喜欢清理用户数据的方式是什么?

我一直在使用 Javascript,但最近需要一些更安全的东西(毕竟人们可以关闭它),所以我在看 Flex,但我想问问社区他们的想法。

【问题讨论】:

    标签: javascript apache-flex validation sanitization


    【解决方案1】:

    建议同时使用服务器端和客户端验证。 我使用 JQuery 进行客户端验证。

    【讨论】:

      【解决方案2】:

      永远不要使用 javascript 或任何其他客户端技术进行验证。您可以使用客户端验证来节省服务器上的一些负载,或者通过在验证失败时更快地显示错误来使您的应用看起来更具响应性,但您应该始终使用服务器端代码进行验证。

      就个人而言,我喜欢 ASP.Net 验证控件,因为它为您提供了客户端验证和服务器端安全性的好处,而无需编写两次逻辑。当然,库存控件非常简单,但您可以扩展它们。

      【讨论】:

        【解决方案3】:

        根据项目的要求,您可能希望也可能不希望实施客户端验证。但是,应始终实施服务器端验证。我更喜欢将适当的输入和值列入白名单,而不是将无效数据列入黑名单,因为这样可以确保没有人会漏掉我没有考虑到的东西。

        【讨论】:

          【解决方案4】:

          验证应始终在服务器端完成。此外,在客户端执行它也很好。

          如何做到这一点取决于您的应用程序是用什么编写的。任何语言都应该能够处理验证;重要的是使用的逻辑,而不是语言。

          这还取决于您如何处理所提供的数据。将其放入 URL 或将其存储在 SQL 数据库中需要两种截然不同的清理方法。如果可能的话,将有效值列入白名单——不要将无效值列入黑名单。总会有人提出您没有考虑过的新错误输入。

          【讨论】:

            【解决方案5】:
            • 至少始终使用服务器端验证
            • 使用正则表达式

            PHP 示例:

            preg_match('/^[\w][\w\,\-\.]*\@[\w]+[\w\-\.]*$/', $_GET['email'], $matches);
            if (count($matches) > 0) {
              $_GET['email'] = $matches[0];
            } else {
              die('invalid email address');
            }
            

            【讨论】:

            • 但是 rfc 2821 表示主机服务器永远不需要其他任何人验证用户名部分中的任何内容,例如@anyhost.com 是一个有效的 smtp 地址!-)
            猜你喜欢
            • 2010-11-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-06
            • 1970-01-01
            • 2012-05-22
            • 2010-11-29
            相关资源
            最近更新 更多