javascript - 为什么我们需要客户端和服务器端验证?

标签 javascript validation web-applications client-side-validation server-side-validation

<分区>

同时使用客户端验证 (JavaScript) 和使用验证器的服务器端验证的一个论据是,如果客户端浏览器不支持 JavaScript 或 JavaScript 已被故意关闭,则客户端验证将变得无用。

我的问题是这个论点在实践中有多好?理论上这是有道理的,但实际上,如果浏览器中禁用了 JavaScript,那么大多数网站功能甚至都无法使用。如果没有 JavaScript,用户可能甚至无法加载页面,更不用说提交表单了。

最佳答案

客户端验证只是避免了客户端出现“但我填写了所有内容,但它什么也没告诉我!”。它实际上 不是强制性的,实际上,客户端验证是一个非常新的事物(阅读:5 岁或更短)。实际上,它所做的只是阻止您的客户端(启用 JS)在重新加载页面之前知道表单是否正确。 如果 AJAX 在游戏中,那就不同了——它可以让您节省带宽并在提交前向用户提供反馈。 最后,如果您正在构建严格的客户端、点对点交换应用程序(想想游戏),您将需要客户端验证以防止客户端作弊。

服务器端验证也很重要,因为可以通过关闭 JavaScript 完全绕过客户端验证。在某种程度上,JS 驱动的验证是一种便利和美学/美容改进,不应该被依赖。此外,在本地编辑页面源代码以禁用或绕过最复杂的 JS 验证也很简单。

如果您不进行服务器端验证,用户可以做什么?任何东西,取决于你如何使用他们的数据。您可能允许用户删除整个数据库(或者更糟,泄露它们),修改他们喜欢的任何东西(或者更糟,阅读他们喜欢的任何东西。目录遍历缺陷是顽皮的人极其常见的入口点),并随意提升他们的特权。你想冒这个风险吗?不验证用户输入就像信任别人而不在你的房子上安装锁。

关于javascript - 为什么我们需要客户端和服务器端验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15855770/

相关文章:

javascript - 使用 DOM 的 Angular Controller 中的测试函数

ruby-on-rails - 如何检查字符串是否包含有效哈希

validation - 将焦点设置在 AngularJs 表单中的第一个无效输入上

java - Eclipse:是否可以将 Javascript 编辑发布到外部 Tomcat 实例

javascript - 如何在 Vue 指令中定义一个方法?

javascript - 悬停时图像下方的艺术文字

forms - 如何在 Angular 2 final 中的异步表单验证方法中进行 http 调用?

web-services - 我们都应该知道的鲜为人知或有用的 Web 服务

java - 用于提供动态文本替换文件的 Web 应用程序

javascript - Plotly Js Choropleth Iso2 而不是 Iso3