现在我有一种情况,当来自 example.com 的 javascript 可以访问站点 test1.example.com 时。我是通过跨域做到的,我想防止 CSRF 注入。
我想以标准方式进行此操作-在服务器端-我创建哈希-在会话中保存哈希但我不能这样做,因为当我在 $_SESSION 中保存哈希并想从客户端检查时-$_SESSION 为空-因为它是另一个域(当通过服务器端的代理脚本意识到这一点时 - 没问题)。函数 check_csrf_token - 总是返回 false。
来自服务器端的简单代码
public function get_csrf_token(){
$token = md5(uniqid(mt_rand() . microtime()));
$_SESSION['token'] = $token;
}
private function check_csrf_token($token){
return ($_SESSION['token'] == $this->input->get('token'));
}