常见 WEB 安全漏洞与整改建议 1
HTML 表单没有 CSRF 保护 1
1 问题描述: CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF
CSRF 攻击:攻击者盗用了你的身份,以你的名义发送恶意请求
CSRF 能够做的事情包括:以你名义发送,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以与财产安全
2 整改建议: CSRF 的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的 CSRF 防御也都在服务端进行
有以下三种方法: (1)
Cookie Hashing(所有表单都包含同一个伪随机值): (2)
验证码 (3)
One-Time Tokens(不同的表单包含一个不同的伪随机值) 1
3 案例: 1
服务端进行 CSRF 防御 服务端的 CSRF 方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数
1 Cookie Hashing(所有表单都包含同一个伪随机值): 这可能是最简单的解决方案了,因为攻击者不能获得第三方的 Cookie(理论上),所以表单中的数据也就构造失败
//构造加密的 Cookie 信息 $value = “DefenseSCRF”; setcookie(”cookie”, $value, time()+3600);
> 在表单里增加 Hash 值,以认证这确实是用户发送的请求
$hash = md5($_COOKIE['cookie']);
> ”> 然后在服务器端进行 Hash 值验证 if(isset($_POST['check'])) { $ha