网络爬虫与Web安全
优采云 发布时间: 2020-06-11 08:02网络爬虫早已广泛应用于互联网搜索领域,为网路信息搜集与查询提供了极大的便利爬虫网络,同时也会对网路安全形成一定的负面影响。本文阐述了网路爬虫对网路安全构成的恐吓,并讨论相应的应对方式。
网络爬虫与Web安全
文/H3C攻守团队
网络爬虫概述
网络爬虫(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漏洞扫描
前面提及的网路爬虫对网站的间接安全恐吓,是通过对网路站点的信息搜集为不法份子的非法访问、攻击或盗窃作打算。随着安全技术的发展,利用网路爬虫技术对Web漏洞的直接侦测早已出现,这会直接影响到Web服务器的安全。Web服务器漏洞中,跨站脚本(Cross Site Script)漏洞与SQL注入(SQL Injection)漏洞所占比列很高,这两种漏洞均可以通过对网路爬虫的改进来进行侦测。由于缺少足够的安全知识,相当多的程序员在编撰Web应用程序时对网页的恳求内容缺少足够的检测,使得不少Web应用程序存在安全隐患。用户可以通过递交一段悉心构造的包含SQL句子或脚本的URL恳求,根据程序的返回结果获得有关的敏感信息甚至直接更改后台数据。基于目前的安全现况,网络爬虫技术在Web漏洞扫描上的应用,大大提升了发觉漏洞的效率。
基于网路爬虫技术的Web漏洞扫描大至分为如下过程:
1)页面过滤:通过自动化的程序抓取网站页面,对包含<frame>、<a>、<image>、<form>等标签的Web页面进行URL提取处理,这些HTML标签中包含URL信息,便于恶意用户进行更深入的Web访问或递交操作。
2)URL匹配:对Web页面中的URL进行手动匹配,提取由参数组合而成的动态查询URL或递交URL,进行下一步的漏洞侦测。如动态查询URL“;pic=1”,其中frameset为URL中动态的参数部份,可以进行参数变换。提交URL用于把Web用户的输入递交到服务器进行处理,其参数多为用户输入,同样可以进行参数变换。
3)漏洞试探:根据动态查询URL或递交URL,自动在参数部份进行参数变换,插入冒号、分号(SQL注入对其敏感)及script标签(XSS对其敏感)等操作进行试探,并按照Web服务器返回的结果手动判定是否存在漏洞。如“URL匹配”中的动态查询URL可以变换成;script>alert(1) </script>&pic=1进行跨站脚本漏洞侦测。
/cn/res/201204/18/20120418_1338726_image001_741991_30008_0.png
图 基于网路爬虫技术的WEB漏洞扫描原理图
如何应对爬虫的安全恐吓
由于网路爬虫带来的安全恐吓,不少网站的管理人员都在考虑对爬虫访问进行限制甚至拒绝爬虫访问。实际上,根据网站内容的安全性及敏感性,区别对待爬虫是比较理想的举措。网站的URL组织应当按照是否为适宜大范围公开,设置不同的URL路径,在同一Web页面中既有须要完全公开信息也有敏感信息时,应通过链接、<frame>标签嵌入网页等方法显示敏感内容,另外尽可能把静态页面等经评估安全性较高的页面与安全性较差的动态页面从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 ( ),百度搜索引擎爬虫则会有类似Baiduspider的字符串。不少Web服务器软件如Apache,可以设置通过User Agent数组进行访问过滤,可以比较有效的限制大部分爬虫的访问。
3) 通过访问行为特点辨识与限制
对于在HTTP请求的User Agent数组刻意伪装成浏览器的爬虫,可以通过其访问行为特点进行辨识。爬虫程序的访问通常是有规律性的频度比较高,区别于真实用户浏览时的随意性与低频度。对这类爬虫的限制原理与DDoS攻击的防御原理太相像,都基于统计数据。对于这类爬虫的限制只能通过应用辨识设备、IPS等才能做深度辨识的网路设备来实现。用网路设备限制网路爬虫,不仅比较全面,而且十分适宜在多服务器情况下进行统一的管理,避免多服务器单独管理有可能导致的疏失。
结束语
网络爬虫及其对应的技术为网站带来了可观访问量的同时,也带来了直接与间接的安全恐吓,越来越多的网站开始关注对网路爬虫的限制问题。随着互联网的高速发展,基于网路爬虫与搜索引擎技术的互联网应用将会越来越多,网站管理员及安全人员,有必要了解爬虫的原理及限制方式,准备好应对各种各样的网路爬虫。