验证用户输入的正确方法是什么?

时间:2015-07-11 22:08:53

标签: javascript c# asp.net validation

我完全理解应该使用JavaScript来增强用户体验,但我有时会使用它来验证输入,例如检查密码文本框是否超过5个字符,或者检查用户名文本框中是否输入了用户名已经存在。如您所想,如果密码少于5个字符或用户名已存在,则注册按钮将被禁用。

但是,这可以从用户浏览器改变,那么他们是否有更好的方法来验证用户的输入?

据我所知,只需点击注册按钮检查文本框,我就可以通过服务器对其进行验证,但肯定他们必须有更好的方式,以致用户无法改变?

BTW:我正在使用Visual Studio C#ASP.NET

另外,我认为正则表达式也可以在客户端进行更改

3 个答案:

答案 0 :(得分:5)

应在客户端和服务器上进行验证。如果您选择不使用内置验证的框架,您可以编写自己的正则表达式来执行此操作。

可以绕过客户端验证,其主要目的是用户体验。 See here。服务器端验证更难绕过。

答案 1 :(得分:1)

永远不要依赖客户端验证。必须始终进行双重检查,一个在客户端,另一个在服务器端。 Java脚本,J查询和正则表达式可以为您做到这一点。作为旁注,使用参数查询。

答案 2 :(得分:-3)

客户端代码的本质是可操作的。您可以通过使用函数的Private和Privileged成员来防止通过控制台更改代码。 在构造函数中,特权方法被分配this并且只调用私有变量。以crockford.com为例,

function Container(param) {

    function dec() {
        if (secret > 0) {
            secret -= 1;
            return true;
        } else {
            return false;
        }
    }

    this.member = param;
    var secret = 3;
    var that = this;

    this.service = function () {
        return dec() ? that.member : null;
    };
}

服务功能具有特权,可以调用私有dec()方法,该方法可以访问私有secret变量。 service是一种特权方法,因为如果直接调用它,它将返回null.service而不是它有权访问的变量的所需值secret

在评估密码时,您可以使用此优势,因为服务器端代码可能需要特定结构化数据,如果没有正确的javascript,将无法接受。