由于可以预成跨域PHP帖子,所以我相信这意味着获得访问我的源代码的人可以创建自己的域并发布任何值。有没有办法禁用跨域发布,或者我需要检查帖子中的所有值以确保它们有效吗?
它与另一个域无关;任何地方的任何客户都可以发布您的服务器将接受的任何值。这就是为什么网络的主要规则之一永远不会信任用户提供的数据:始终在服务器端进行检查。
这是关于这个主题的一些值得阅读的内容:
使用PHP消毒用户输入的最佳方法是什么?
最佳的PHP输入消毒功能是什么?
您最好创建一个随机哈希,例如: md5(time().rand(1000,9999))
和,
- 将其放在隐藏的输入值中喜欢:
<input name='token' type='hidden' value='<?php echo $hash ?>' />
- 和设置
$_SESSION['token'] = $hash
;
,每次您处理表单时,都会像以下方式检查:
if($_SESSION['token'] !== $_POST['token']) die('invalid request');
以这种方式,只有从域中提交表格的用户才能成功提交。