使用php表单提交安全性

时间:2016-04-29 21:37:38

标签: php security

我让用户点击发送到他们电子邮件的链接,将他们带到表单(例如register.php)以完成注册。

我在register.php中提交表单提交检查:

if(isset($_POST['submitted']) and $_SERVER['REQUEST_METHOD'] == 'POST') {
    //register user in database
}

我的问题是:有人可以通过简单地创建一个带有$ _POST ['submitted']设置的自定义http POST请求来绕过这个正式的注册过程吗?如果是这样,检查这个的好方法是什么?我检查有人试图以未经授权的方式进入注册页面,但我觉得有人在页面上发帖不够安全。如果我决定使用HTTPS,我是否应该担心这个?我希望这是有道理的。提前谢谢。

2 个答案:

答案 0 :(得分:6)

您描述的问题称为跨站点请求伪造。可以通过生成令牌并将表单中隐藏输入的值设置为令牌来防止攻击。另外,将会话变量设置为标记值。在接收发布数据的PHP表单中,检查会话令牌和发送的令牌是否匹配。如果匹配,表单来自您的网站。

这是另一个堆栈溢出问题,其中包含有关阻止跨站点请求伪造的更多详细信息:How to prevent Cross-site request forgery (CSRF) effectively in PHP

答案 1 :(得分:0)

最好的方法是安装验证码

https://www.google.com/recaptcha/intro/index.html