Filter拦截器的实现方式更加简单,拦截指定请求URL,拿到HttpServletRequest 中 referer值比对是否为本站。
public class MyFilter implements Filter { @Override public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; String referer = req.getHeader("referer"); if (referer == null || !referer.contains(req.getServerName())) { req.getRequestDispatcher("XXX.jpg").forward(req, res); } else { chain.doFilter(request, response); } } } 登录验证,禁止游客访问登录验证这种就属于一刀切的方式,一般在论坛、社区类网站使用比较多,不管你发起请求的站点是什么,到我这先登录,没登录请求直接拒绝,简单又粗暴。
图形验证码图形验证码是一种比较常规的限制办法,比如:下载资源时,必须手动操作验证码,使爬虫工具无法绕过校验,起到保护资源的目的。
实现防盗链的方式还有很多,这里就不一一列举了(别问,问就是还有很多)。 总结
本来没想写这篇文章,下午搭建自己的博客整理资料,白嫖别人资源没成功有感而发,哈哈哈~ 正好借此机会简单的介绍一下防盗链的概念,提醒 everyone 在开发中要提高安全意识。其实盗链与防盗链就是像是矛与盾一样,说不好是矛更锋利还是盾更坚固,做不到绝对的防盗。道高一尺魔高一丈,盗链的手段越高,相应的防盗技术也会越成熟。
小福利:整理了几百本各类技术电子书相送 ,嘘~,免费 送给小伙伴们。关注公众号回复【666】自行领取。和一些小伙伴们建了一个技术交流群,一起探讨技术、分享技术资料,旨在共同学习进步