CSRF通过伪装来自受信任用户的请求来利用受信任的网站那么用 $_SERVER['HTTP_REFERER'] 显然是不可以的,因为这是可伪造的(你也是知道的)
对于表单,你可以放置一个即时发放的随机串(token)或验证码
对于普通页,你可以通过 ajax 获取一个通行字(因为 ajax 是不可跨域的,且模拟 js 行为技术难度较大)
你也可以通过页面中后期加载的对象(比如图片、js 文件)来传递附加的 cookie 变量
被动防御时,可过滤掉页面中非已知的连接
对于表单,你可以放置一个即时发放的随机串(token)或验证码
对于普通页,你可以通过 ajax 获取一个通行字(因为 ajax 是不可跨域的,且模拟 js 行为技术难度较大)
你也可以通过页面中后期加载的对象(比如图片、js 文件)来传递附加的 cookie 变量
被动防御时,可过滤掉页面中非已知的连接
CURLOPT_URL => 'http://your web/test.php',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_REFERER => 'http://spider.baidu.com/', //伪造referer
CURLOPT_HTTPHEADER => array(
"Expect: ",
),
);curl_setopt_array($ch, $opts);$s = curl_exec($ch);
你在 'http://your web/test.php' 脚本拿到的refer就是那个spider.baidu.com了
伪造应该是这个意思