对于CSRF,可能一些朋友比较陌生。我们下面先简单介绍下。
什么是CSRF呢,我们看下Wikipedia的说明:
Cross-site request forgery,即跨站请求伪造,也称为 "One Click Attach" 或者"Session Riding",常缩写成CSRF。是通过伪装来自受信任用户的请求来利用受信任的网站。
其中,说起CSRF,经常会举的一个例子,是这样的:
用户A在访问网上银行,在银行网站里进行了一些操作后。
之后点击了一个陌生的链接。而这个链接,是用户B提供的一个恶意网页W,网页W内也包含访问和用户A相同银行信息的链接,可能是转帐,也可能是修改密码。
此时如果A的认证信息还未过期,就会被直接利用,成功帮助W进行了银行网站的对应操作,而这一切,都是在A不知情的情况下进行的。
为了防范CSRF,常见的方式有:
请求中包含随机token信息
Cookie中包含csrf token信息
其他的验证请求头Refer等...
在Tomcat中,默认提供了一个防范CSRF的好工具: CSRF Prevention Filter。
Tomcat默认提供了各类的Filter,处理不同的场景和需求。今天介绍的CSRF Prevention Filter也是其中的一个。
整个Filter的工作流程可以概括成以下内容:
该Filter为Web应用提供了基本的CSRF 保护。它的filter mapping对应到/*
并且所有返回到页面上的链接,都通过