我有一个我需要调用的web服务,其结果决定了是否允许用户提交表单。
由于此调用来自javascript,而不是来自代码,因此它不可靠吗?有没有办法用户可以绕过检查 - 通过使用firebug和启用提交按钮,以某种方式使方法给出不同于Web服务实际返回的结果,任何其他方式可以绕过它?
基本上有没有办法从javascript调用web服务并让它的结果决定是否可以提交表单,实际上阻止用户提交表单? - 他们是否有萤火虫等......
答案 0 :(得分:10)
不,不可能。
仅举几个可能的原因:
Javascript验证仅供用户使用 ,并且永远不应 用作提供安全性的方法。
答案 1 :(得分:1)
您永远不能阻止用户发出模仿提交表单的HTTP请求。虽然通过Javascript禁用表单会阻止提交95%的启用了Javascript 并且不想绕过您的访问控制的用户,但任何了解HTTP的人都可以电话,你是正确的,表明任何拥有Firebug的人都可以在几秒钟内完成。
答案 2 :(得分:0)
Javascript对于防止任何事情是不可靠的。它不应该被看作是一个安全墙,因为它很容易被萤火虫,例如电子邮件和许多其他浏览器玩具拆解。
即使您可以阻止他们在您的网页上提交您的表单,也不会阻止他们在自己的页面上创建一个全新的表单,并将其指向您表单的操作。因此,他们将自己从“安全”环境中移除,而不是选择自己玩。
答案 3 :(得分:0)
你的怀疑是正确的;用户可以轻松绕过任何可能的Javascript验证。
您需要使用服务器端代码。
答案 4 :(得分:0)
不,它不可靠。尝试在浏览器中禁用Javascript,亲自了解你可以轻松解决它。
答案 5 :(得分:0)
用户只需在浏览器中停用javascript,或使用NoScript之类的内容。您可以做的最好的事情是尝试在Ajax请求的返回中设置表单操作本身,这样加载的表单将不会提交(除了自身)。这可能会阻止临时用户,但不会对一个稍微坚定(或者只是无聊和技术娴熟)的用户造成障碍。无论你做什么,都需要检查服务器端。
答案 6 :(得分:0)
一般来说,没有。您无需通过Javascript即可使表单难以提交。使提交按钮不是实际的提交按钮(<input type="submit">
),而是在其<input type="button">
处理程序中提交表单的按钮(onClick
)。
答案 7 :(得分:0)
正如其他人所说,不,你不能这样做。唯一真正的解决方案是让Web服务返回Javascript在隐藏表单输入中插入的动态值。然后,无论服务器端代码处理如何,如果该值不存在,表单提交应该拒绝该请求。