我完全理解应该使用JavaScript来增强用户体验,但我有时会使用它来验证输入,例如检查密码文本框是否超过5个字符,或者检查用户名文本框中是否输入了用户名已经存在。如您所想,如果密码少于5个字符或用户名已存在,则注册按钮将被禁用。
但是,这可以从用户浏览器改变,那么他们是否有更好的方法来验证用户的输入?
据我所知,只需点击注册按钮检查文本框,我就可以通过服务器对其进行验证,但肯定他们必须有更好的方式,以致用户无法改变?
BTW:我正在使用Visual Studio C#ASP.NET
另外,我认为正则表达式也可以在客户端进行更改
答案 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,将无法接受。