如何阻止人们绕过我的JavaScript验证?

时间:2012-08-08 08:20:19

标签: javascript validation

我的网站上有一个注册表格,我有3个输入框用于出生日期,其编码如下...

<input name="dd" id="dd" type="text" value="DD" size="2" />
<input name="mm" id="mm" type="text" value="MM" size="2" />
<input name="yyyy" id="yyyy" type="text" value="YYYY" size="4" />

然后我有一个在提交时运行的JavaScript验证页面。该页面检查字段是否为空并且它们在某个数字之间,例如第1天至第31天 这是'dd'字段的JavaScript ......

var nulld=document.forms["create"]["dd"].value;
if (nulld==null || nulld=="")
  {
  alert("Please enter a day between 1 and 31");
  return false;
  }
var dd=document.forms["create"]["dd"].value;
if (dd >= 1 && dd <= 31)
  {}else{
  alert("Please enter a day between 1 and 31");
  return false;
  }

所以我有这个代码,但是我注意到有人在这台计算机上禁用了JavaScript,并且正在创建大量帐户并且数据不正确。 我如何阻止这种情况发生?或者是唯一的方法来添加检查JavaScript是否被禁用的代码,并将它们转移到像这样的错误页面...

<noscript><meta http-equiv="refresh" content="1;url=nojavascript.html"></noscript>

还有另一种方法可以让用户在没有JavaScript的情况下创建帐户但仍然可以进行验证吗?

3 个答案:

答案 0 :(得分:9)

JavaScript验证仅适用于一件事:快速让用户知道他们要提交给服务器的数据将被拒绝。

无法控制系统中的内容。在开始处理数据之前,必须检查数据是否适合服务器。

答案 1 :(得分:7)

不要担心让你的javascript比现在更“强大”,他们可以发送该表单,甚至不使用浏览器,更不用说javascript了。您必须在服务器端验证数据,如果错误则拒绝它。

javascript验证对于那些启用了javascript的用户来说非常方便,因此无需向服务器发出请求即可获得快速反馈。

实施服务器端验证时,请考虑使其尽可能强大。例如,您的javascript验证通过了无效日期。

答案 2 :(得分:2)

您必须在服务器上进行重复验证。

服务器端验证必须坚如磐石 - 并防止任何未经授权的活动,因为您可以假设用户可能是恶意的,并且完全控制客户端。

客户端验证仅用于方便用户,并且不对系统的安全性提供任何帮助。它可以阻止浏览器浪费时间从服务器获取验证。