0

我仍在争论是否要这样做,但我正在考虑的是阻止用户在我的应用程序中将超链接输入到 HTML 表单中。这是为了避免显示垃圾链接以供该应用程序的其他用途使用,因为该应用程序基于用户生成的内容。

这是一个 Rails 应用程序,因此我可以在用户提交表单后对模型进行一些后端验证。

但我想知道在任何提交发生之前在 jQuery/JavaScript 中执行检查是否更可取。这样用户就可以立即得到通知,而无需任何后端处理。

这里哪个更可取 - 客户端或服务器端验证?

4

7 回答 7

6

您只有在数据到达您的服务器时才能控制它。如果您使用 JavaScript 尝试清除垃圾邮件,那么垃圾邮件发送者只会关闭 JavaScript。

构建服务器端解决方案。

一旦你有了它,考虑复制工作客户端,为用户提供更好的服务。

于 2009-08-14T18:33:18.843 回答
2

两者都用。

当客户端打开 JavaScript 时,客户端验证降低了服务器的压力。

服务器端是你的最后一道防线,如果用户关闭了 JavaScript,它应该在那里。

于 2009-08-14T18:33:58.780 回答
2

你说 :

所以我可以在用户提交表单后对模型进行一些后端验证。

不 !您必须在后端进行验证!

可以禁用Javascript,可以伪造表单发布;所以你总是需要在后端/服务器上开发验证/过滤/任何你想要的安全措施。

只有这样,你最终才能添加一些 JS 的东西,让你的应用程序更加人性化。

于 2009-08-14T18:34:40.307 回答
1

您应该同时使用两者,在客户端使用jQuery 验证插件,以及在后端使用任何合适的方法(我不知道 ROR)。

ajaxy 验证解决方案可以在客户端输入信息时执行服务器端验证,并相应地提供反馈/阻止提交。

希望有帮助。

于 2009-08-14T18:32:39.327 回答
1

两个都............

于 2009-08-14T18:33:03.680 回答
0

垃圾邮件发送者经常使用某种脚本来分析表单并自行构建表单数据和帖子,因此客户端脚本对大多数垃圾邮件完全无用。

于 2009-08-14T18:39:14.947 回答
0

JavaScript 验证非常适合作为控制非恶意用户的一种方式。“您输入的密码不匹配”、“看起来像一个无效的电子邮件地址,请仔细检查”等。

JavaScript 的缺点是无法验证它是否运行,也无法验证它是否按预期运行。恶意用户、浏览器插件故障、防火墙/内容拦截器过分使用、没有 JavaScript 的垃圾邮件机器人、启用 NoScript 的用户或任何数量的其他情况都可能导致您的验证永远不会被触发。

因此,如果需要验证,您的服务器应始终验证数据。JavaScript 可以是第一道防线,但绝不可能是最后一道防线。

于 2009-08-14T18:39:36.897 回答