使用PHP和Javascript安全性进行表单验证

时间:2010-08-09 07:37:04

标签: php javascript validation

我想知道是否真的有必要在JS和PHP中进行验证? 我有我的提交按钮,JS document.myform.submit()使用PHP POST发送到同一页面。 如果用户禁用JS,他无论如何都无法发送表单。 所以我想询问安全性,有人可以绕过javascript以另一种方式发送变量吗?他们会怎么做? 如果可以的话,我应该在PHP中验证的答案是肯定的,对吗?

5 个答案:

答案 0 :(得分:3)

答案很简单 服务器端是强制性的,必须无条件地完成。

客户端验证是可选的,只是为了方便用户。

因此,双方验证不是必要的,但为了可用性而优选

  

如果用户禁用JS,他无论如何都无法发送表单。

洛尔。用户可以将表单保存在本地磁盘上并以他们想要的方式进行编辑。

答案 1 :(得分:1)

是的,有人可以在python中使用urllib2发送变量。这很容易做到。如果您只打算进行一组验证,请在服务器端执行。做客户端只不过是对用户的礼貌。

作为一个多么容易的例子:

import urllib2

variables = {'variable1': value1, 'variable2': value2}
urllib2.urlopen('http://yoursite.com/index.php/yourform', variables)
# your form has now been spoofed.

添加标头和cookie管理以欺骗任何用户代理同样重要

答案 2 :(得分:0)

始终在服务器端验证。 javascript验证很好,但可以轻松绕过。 攻击者可以伪造带有恶意数据的HTTP POST请求到您的表单的URL,然后该URL将进入您的系统未经过激活。

答案 3 :(得分:0)

正如大家的回答一样 - 绝不仅仅依靠客户端验证。这很容易滥用,甚至不必将您的网页保存到磁盘,他可以使用libcurl或任何其他HTTP库,或只是玩Firebug等。

客户端的验证非常“用户友好”。您可以向表单添加Ajax验证,这仍然只是方便,应该依赖于服务器端代码。

答案 4 :(得分:0)

我完全同意以上所有人 - 客户方主要是为了填写表格的人。服务器端更多是为了确保您没有被定位。

如果你想要一个漂亮的客户端验证脚本,我已经写了一个 - 免费下载和使用,并且非常可定制。它甚至会捕获错误拼写的电子邮件地址并建议正确的版本。如果你有兴趣,可以在这里找到它:

http://www.blackboxtechnology.co.uk/free-stuff/javascript-form-checker.php

享受!