Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单提交安全性与php_Php_Security - Fatal编程技术网

表单提交安全性与php

表单提交安全性与php,php,security,Php,Security,我让用户点击发送到他们电子邮件的链接,将他们带到一个表单(比如register.php)来完成注册 我在register.php中查看表单提交: if(isset($_POST['submitted']) and $_SERVER['REQUEST_METHOD'] == 'POST') { //register user in database } 我的问题是:是否有人可以通过简单地创建一个带有$_POST['submitted']集的自定义http POST请求,在技术上绕过这个正

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

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

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

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

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


下面是另一个堆栈溢出问题,包括有关防止跨站点请求伪造的更多详细信息:。

最好的方法是安装验证码


在发送给电子邮件收件人之前,您始终可以向生成并存储的查询字符串中添加随机标记。当他们点击链接时,验证令牌是否在您的白名单中。是否有人能从技术上规避…:-对检查这个的好方法是什么?:-生成一个随机令牌,与电子邮件一起发送,并进行检查。如果我决定使用HTTPS?:-HTTPS与此有什么关系?是的,任何人都可以构建自定义表单并从任何地方“运行”它。他们所需要的只是一些html,上面写着
。繁荣提交到你的服务器,而不是源于你的东西。哦!如果有人试图访问该页面,我已经生成并检查了一个散列(在链接中),因此我想我将在一个隐藏的表单字段中传递所述散列,作为唯一知道该散列是什么的人发布,即拥有该电子邮件帐户的人。我想那会有用的。。。如果我遗漏了什么,请告诉我。