内容目录
一、背景概述二、防护方式三、基于openresty实现源站防护四、思考与总结
网站是一个企业或者团队的重要资产,源码也是开发人员和团队辛苦劳作的成果,对于后端服务,用户几乎触摸不到源码,但是对于前端页面,用户访问网站时会有最直接的接触,稍微有技术经验的用户可以通过浏览器的机制来查看页面源码,也有一些黑灰团队专门用爬虫扒别人的网站,然后包装成自己的产品,实现商业效益。
如果你的网站做得好,不管是web站还是h5,一定会有人研究你的网站,爬站点源码,可谓是防不胜防,很多小网站根本没有做任何防护,有些企业会做一些简单不至于苛刻的防护,当然有心之人想扒也能扒下来,主要取决于防护收益与投入开支的平衡。
目前市面上很多网站还是使用传统的nginx来实现,那么本篇文章我们就结合openresty来实现源站防护做一下简单介绍。
想要防护网站源码,可以使用在用户访问主站域名的时候,获取静态资源之前加一层防护,比如爬虫请求头限制、ip访问区域限制等,当然限制的方式有很多,也可以借助其他工具来实现,这里重点介绍下爬虫和ip限制的方式。
本质上爬虫也是一种请求,只不过是由脚本或者机器人自动发起的,那么请求就会带referer,就会带ua,一般爬虫都会带一些特殊的标识,对于referer,我们可以限制我们认可的域名,对于ua,我们可以不定期的更新爬虫ua库即可。
也可以借助其他的一些web防护工具来实现爬虫防护。比如Cloudflare机器人管理、AppTrana以及其他WAF防护能力等。
可以基于openresty+LuaJIT能力,在用户防护主站的时候,拦截请求,通过Lua脚本进行ip识别和验证,对于合法请求则放过,去加载讲台资源,对于非法ip则直接返回403或者其他受限页面。
openresty在nginx的基础上提供了扩展能力以及很多强大的模块,此处基于openresty实现,具体openresty安装方式,不做赘述。
设置Referer验证,只允许来自xxx.com(网站自己域名)和其子域的请求访问图片、CSS和JavaScript以及html文件,其他来源的请求会返回403Forbidden。
设置User-Agent检查,检查User-Agent来过滤掉一些已知的爬虫User-Agent。爬虫的User-Agent容易伪造,需要定期跟新补充已知爬虫User-Agent。
访问主站域名时,通过lua脚本来检查ip是否可以访问和加载资源。
对应的lua脚本如下:
上述脚本做了以下几件事情:
以上是基于openresty实现的网站源站防护机制,主要是从爬虫和ip区域限制两个维度实现,当然市面上也有很多其他的防护机制和技术、以及免费和商业化的工具可以使用,如下列举一些比较常用的方式和工具:
以及其他还有跟多的工具和方式,这些工具和技术通常会结合使用,以提高网站的防护能力,确保合法用户可以正常访问和使用网站,同时保护网站的内容和资源不被滥用和损害。
本文分享自 PersistentCoder 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!