如何阻止禁用javascript的用户提交表单?

时间:2014-01-10 16:17:11

标签: javascript php forms

我们有一个查询表格,用户需要JS至少输入他们的姓名,地点,联系方式,评论/问题等。我们已经获得了很多完全空白和半空白的表格。我们知道,如果用户已禁用JS,他们可以单击提交按钮,但没有填写。我已经研究了禁用提交按钮的可能性,除非启用了JS,但我读过很多人都认为这个是个坏主意。建议?谢谢!

3 个答案:

答案 0 :(得分:4)

您无法阻止通过各种技术提交空白表单。您的服务器应该验证表单并拒绝不正确的提交。这是从任何外部源接受数据的任何服务器的核心基础。它必须在接受数据之前进行自己的数据验证。

可以制作一个表单,使浏览器无法在没有启用javascript的情况下通过普通浏览器将其提交到您的站点。例如,如果HTML中的表单没有默认操作,并且提交操作仅在javascript中实现,那么如果禁用了javascript,则表单将不会提交。在没有客户端验证的情况下仍然有其他方式提交数据,这就是为什么总是需要服务器端验证的原因,但这可能会在用户到达您的服务器之前阻止一些用户错误。

您还可以使用<noscript>标记告知用户需要使用javascript。


您可以通过在您的字段中包含一个通过javascript填充了已知值的表单,立即从机器人服务器端识别许多表单提交。如果,当您的服务器上收到表单时,表单中不存在该已知值,则表单可能是由启用了javascript的浏览器以外的其他内容提交的。

您可以通过不在HTML中使用常规表单操作来阻止自动提交机器人。如果提交的网址仅在您的javascript中,并且提交仅通过javascript完成,那么大多数机器人将永远不会看到它,甚至不知道尝试(因为它们不运行javascript)。

仅供参考,这两种技术都不会阻止黑客提交流氓表格/数据,因为他们可能会分析足够的内容以了解缺失的内容,但他们可以帮助识别提交时的自动尝试。

答案 1 :(得分:0)

在服务器端,thais php trim数据放入数据库或任何其他操作之前。修剪删除空的空格..同时检查sql injections

See here for trim

SQL Injections

答案 2 :(得分:0)

首先,使用noscript标记告诉用户在加载表单时需要javascript。

其次,由于表单提交不能总是完全阻止HTML表单提交到不处理提交的页面,而是告诉他们必须有javascript。要在表单页面上处理正确的提交,请使用javascript将表单提交操作更改为正确的提交页面。