确保PHP表单处理文件仅用于特定的Web表单页面?

时间:2014-07-10 18:04:02

标签: php forms

我对PHP有点新,我养成了创建处理所有表单处理的特定文件的习惯。 例如,我有一个显示实际表单的PHP文件,例如,我们将其称为“registration.php”,并将其指定为“registration-process.php”。用户填写registration.php上的注册表单,点击提交,并将数据发布到registration-process.php,因为它已被表单指定为操作文件。

现在我的问题是:不知道他们在不通过registration.php的情况下知道他们正在将数据发送到registration-process.php的人吗?这可能会带来意想不到的后果。

有没有办法确保registration-process.php只接受来自registration.php的POSTed数据?就像一个隐藏字段,其值通过一些PHP代码加密,并且该值由registration-process.php文件检查?但是,我不知道该怎么做,或者这甚至是最好的解决方案。

2 个答案:

答案 0 :(得分:0)

是的,使用隐藏的"安全令牌"字段是验证表单整合的常用方法。许多公共论坛都在使用这种方法。

尝试使用Google php form security token或查看此网站:

http://css-tricks.com/serious-form-security/

答案 1 :(得分:0)

您是否只能接受来自一个位置的POST数据?这是值得的,可能不是。

只要您正确验证表单字段(确保您所获得的内容属于您所期望的范围),就不会有任何负面影响,因此任何事情都可以发布到它。

另外,从技术上讲,你可以将POST数据发送到网络上的任何文件,它只取决于文件对它的作用,无论它是否意味着什么。

此外,Mario Werner所说的是CSRF代币。这不会阻止其他事情发布到您的网站,它只是增加了一定程度的安全性,以确保请求来自正确的地方。有关详细说明,请参阅:http://en.wikipedia.org/wiki/Cross-site_request_forgery