我应该像客户端验证一样复制服务器端客户端的表单验证



一个人可以来创建一个帐户。我已经在客户端实施了一个很好的验证,例如,如果他不提供有效的电子邮件地址,我会立即通知他,这是无效的电子邮件(带有客户端JavaScript(。

但是,攻击者可以轻松绕过客户端验证。因此,我也在服务器端也使用了相同的验证。但是区别在于用户体验。例如,如果禁用了客户端上的JavaScript,并且用户提供了无效的电子邮件,则应用程序只会告诉他错误(在提交表单并刷新页面后(。没有更多信息。(因为我认为他是攻击者,所以我的网站应该为攻击者拥有糟糕的用户体验(。

现在我的问题是:如果我这样做的话,我的网站的用户体验会好吗?(向客户端向用户报告的很大错误,但在服务器端可怕,服务器端将在提交任何失败验证的整个表单之后返回"错误"(。

更多说明:

每当用户键入无效的文本中的输入时,应用程序都会在输入的底部告诉他红色文本的底部,他尚未键入有效的文本。(这将是由于客户端JavaScript而发生的(。

但是,如果已禁用了以某种方式客户端JavaScript,并且用户类型输入中的用户类型无效,则服务器端将在Page提交后将"错误"返回给用户。

从不依靠客户端验证。它可以很容易绕过。始终在服务器端验证。客户端验证是一个很好的选择,因为它可以立即提供反馈,从而提供了更好的用户体验。但是您可以依靠的唯一验证是用户不能颠覆的验证,这意味着它必须位于服务器上(或客户端的浏览器/设备中的任何地方(。

由于您已经在进行服务器端验证,问题确实是您是否要为无法获得客户端验证的用户提供可比的用户体验原因,这取决于您。

我认为没有JavaScript禁用的每个人都不是100%安全,但没有JavaScript的合法用户的百分比可能很小,以至于您不需要投资为他们提供相同水平的用户体验。ux.stackexchange.com上的Q& a可能会对这一点提供一些见解。(这有点旧,但我认为它的观点仍然有效。(

合理的妥协可能是在您的通用错误中添加<noscript>标签,并通知他们,他们不会在禁用JS中看到详细的错误。

最新更新