爬虫与前端安全

网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定的规则自动抓取万维网资源的程序或者脚本,已被广泛应用于互联网领域。搜索引擎使用网络爬虫抓取Web网页、文档甚至图片、音频、视频等资源,通过相应的索引技术组织这些信息,提供给搜索用户进行查询;

传统网络爬虫从一个或若干个初始网页的URL(Universal Resource Locator统一资源定位符)开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定条件停止抓取

网络爬虫的安全性问题

  由于网络爬虫的策略是尽可能多的“爬过”网站中的高价值信息,会根据特定策略尽可能多的访问页面,占用网络带宽并增加Web服务器的处理开销,不少小型站点的站长发现当网络爬虫光顾的时候,访问流量将会有明显的增长。恶意用户可以利用爬虫程序对Web站点发动DoS攻击,使Web服务在大量爬虫程序的暴力访问下,资源耗尽而不能提供正常服务。恶意用户还可能通过网络爬虫抓取各种敏感资料用于不正当用途,主要表现在以下几个方面:

  1)搜索目录列表

  互联网中的许多Web服务器在客户端请求该站点中某个没有默认页面的目录时,会返回一个目录列表。该目录列表通常包括可供用户点击的目录和文件链接,通过这些链接可以访问下一层目录及当前目录中的文件。因而通过抓取目录列表,恶意用户往往可获取大量有用的资料,包括站点的目录结构、敏感文件以及 Web服务器设计架构及配置信息等等,比如程序使用的配置文件、日志文件、密码文件、数据库文件等,都有可能被网络爬虫抓取。这些信息可以作为挑选攻击目标或者直接入侵站点的重要资料。

  2)搜索测试页面、手册文档、样本程序及可能存在的缺陷程序

  大多数Web服务器软件附带了测试页面、帮助文档、样本程序及调试用后门程序等。这些文件往往会泄漏大量的系统信息甚至提供绕过认证直接访问Web服务数据的方法,成为恶意用户分析攻击Web服务器的有效情报来源。而且这些文件的存在本身也暗示网站中存在潜在的安全漏洞。

  3)搜索管理员登录页面

  许多网络产品提供了基于Web的管理接口,允许管理员在互联网中对其进行远程管理与控制。如果管理员疏于防范,没有修改网络产品默认的管理员名及密码,一旦其管理员登录页面被恶意用户搜索到,网络安全将面临极大的威胁。

  4)搜索互联网用户的个人资料

  互联网用户的个人资料包括姓名、身份证号、电话、Email地址、QQ号、通信地址等个人信息,恶意用户获取后容易利用社会工程学实施攻击或诈骗。

  基于网络爬虫技术的Web漏洞扫描大至分为如下过程:

  1)页面过滤:通过自动化的程序抓取网站页面,对包含等标签的Web页面进行URL提取处理,这些HTML标签中包含URL信息,便于恶意用户进行更深入的Web访问或提交操作。

  2)URL匹配:对Web页面中的URL进行自动匹配,提取由参数组合而成的动态查询URL或提交URL,进行下一步的漏洞探测。如动态查询 URL“http://baike.xxxx.com/searchword/?word=frameset&pic=1”,其中 frameset为URL中动态的参数部分,可以进行参数变换。提交URL用于把Web用户的输入提交到服务器进行处理,其参数多为用户输入,同样可以进行参数变换。

  3)漏洞试探:根据动态查询URL或提交URL,自动在参数部分进行参数变换,插入引号、分号(SQL注入对其敏感)及script标签(XSS对 其敏感)等操作进行试探,并根据Web服务器返回的结果自动判断是否存在漏洞。如“URL匹配”中的动态查询URL可以变换成 http://baike.xxxx.com/searchword/?word= &pic=1进行跨站脚本漏洞探测。

  如何应对爬虫的安全威胁

  由于网络爬虫带来的安全威胁,不少网站的管理人员都在考虑对爬虫访问进行限制甚至拒绝爬虫访问。实际上,根据网站内容的安全性及敏感性,区别对待爬 虫是比较理想的措施。网站的URL组织应该根据是否为适合大范围公开,设置不同的URL路径,在同一Web页面中既有需要完全公开信息也有敏感信息时,应 通过链接、标签嵌入网页等方式显示敏感内容,另外尽可能把静态页面等经评估安全性较高的页面与安全性较差的动态页面从URL上分开。当限制爬虫时可以针对 URL路径的安全性与敏感性对不同种类的爬虫与代理进行限制。

  限制爬虫可以通过以下几种方法实现:

  1) 设置robots.txt文件

  限制爬虫最简单的方法是设置robots.txt文件。robots.txt文件是搜索引擎爬虫访问网站的时候要查看的第一个文件,它告诉爬虫程序在服务器上什么文件是可以被查看的,如设置Disallow: /,则表示所有的路径均不能查看。遗憾的是并不是所有的搜索引擎爬虫会遵守这个规则,因此仅仅设置robots文件是不够的。

  2) User Agent识别与限制

  要对不理会robots.txt文件的爬虫访问进行限制,首先要把爬虫流量与普通用户的访问流量进行区分,即对其进行识别。一般的爬虫程序都可以通过其HTTP请求中的User Agent字段进行识别,该字段使服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。爬虫的User Agent字段一般与浏览器的有所不同,如Google搜索引擎爬虫User Agent字段中会有类似Googlebot的字符串,如User-Agent: Googlebot/2.1 ( http://www.google.com/bot.html),百度搜索引擎爬虫则会有类似Baiduspider的字符串。不少Web服务器软件如 Apache,可以设置通过User Agent字段进行访问过滤,可以比较有效的限制大部分爬虫的访问。

  3) 通过访问行为特征识别与限制

  对于在HTTP请求的User Agent字段刻意伪装成浏览器的爬虫,可以通过其访问行为特征进行识别。爬虫程序的访问一般是有规律性的频率比较高,区别于真实用户浏览时的随意性与低 频率。对这类爬虫的限制原理与DDoS攻击的防御原理很相似,都基于统计数据。对于这类爬虫的限制只能通过应用识别设备、IPS等能够做深度识别的网络设 备来实现。用网络设备限制网络爬虫,不仅比较全面,而且非常适合在多服务器情况下进行统一的管理,避免多服务器单独管理有可能造成的疏漏。

 

链接:https://blog.csdn.net/libin_1/article/details/8221590

你可能感兴趣的:(前端安全)