第5章 应用安全
5.1 应用安全概述
- 早期的应用系统采用的客户/服务器模式是一种双层的结构,通常是将一台个人计算机做客户机使用,另外一台服务器用于存放后台的数据库系统
- 现在使用的是三层客户/服务器结构
- 用户浏览器同Internet和HTTP协议访问服务方提供的Web应用服务器。若是页面请求,则直接用HTTP协议向用户返回要浏览的页面;如果有数据库查询操作的请求,则将这个需求传递给服务器和数据库之间的中间件,由中间件向数据库系统提出操作请求,得到结果后再返回给Web应用服务器,形成HTML页面,再返回给浏览器
5.2 常见的Web应用安全漏洞
5.2.1 SQL注入漏洞
- 形成原因:用户输入的数据被SQL解释器执行
- 可采取如下防护手段:
- 1.参数类型检测
- 2.参数长度检测
- 3.危险参数过滤
- 常见的危险参数过滤包括关键字、内置函数、敏感字符的过滤
- 其过滤主要方法有:
- 1)黑名单过滤
- 2)白名单过滤
-
- GPC过滤:对变量默认进行addslashes(在预定义字符前添加反斜杠)
- 4.参数化查询
- 是指数据库服务器在数据库完成SQL指令的编译后,才套用参数运行、
5.2.2 文件上传漏洞
1.文件上传漏洞的原理
- 一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过Web访问的目录上传任意PHP文件,并能将这些文件传递给PHP解释器,从而可以在远程服务器上执行任意PHP脚本
- 根据具体漏洞的差异,此处上传的脚本可以是正常后缀的PHP、ASP以及JSP脚本,也可以是篡改后缀后的这几类脚本
- 造成恶意文件上传的原因主要有三种:
- 1)文件上传是检查不严
- 2)文件上传后修改文件名时处理不当
- 3)使用第三方插件时引入
2.文件上传攻击实例分析
- 上传正常图片和WebShell
- 修改文件扩展名绕过上传检测
- 获取WebShell权限
3.文件上传漏洞常见防护手段
(1)系统开发阶段的防御
- 对文件上传漏洞来说,最好能在客户端和服务器端对用户上传的文件名和文件路径等项目分别进行严格的检查
- 服务器端的检查最好使用白名单过滤的方法,这样能防止大小写等方式的绕过,同时还需对%00截断符进行检测,对HTTP包头的content-type和上传文件的大小也需要进行检查
(2)系统运行阶段的防御
- 应定时查看系统日志、Web服务器日志以发现入侵痕迹。
- 定时关注系统所使用的第三方插件的更新情况,如有新版本发布建议及时更新
- 除对系统自身的维护外,服务器应进行合理配置,非必选的目录一般都应去掉执行权限,上传目录可配置为只读
(3)安全设备的防御
- 文件上传攻击的本质就是将恶意文件或者脚本上传到服务器,可以通过部署安全设备来帮助防御
5.2.3 XSS
1.XSS定义
- 跨站脚本攻击是指攻击者利用网站程序对用户输入过滤的不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式
- XSS属于客户端攻击,受害者是用户,网站管理人员也属于用户之一
2.XSS漏洞攻击实例
3.XSS的分类
(1)反射型XSS
- 只是将用户输入的数据直接或未经过完善的安全过滤就在浏览器中进行输出,导致输出的数据中存在可被浏览器执行的代码数据
- 由于此种类型的跨站代码存在于URL中,因此黑客通常需要通过诱骗或加密变形等方式,将存在恶意代码的链接发给用户,只有用户点击以后才能使得攻击成功实施
(2)存储型XSS
- 指Web应用程序会将用户输入的数据信息保存在服务器端的数据库或其他文件形式中
- 网页进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在网页中进行输出展示,因此存储型XSS具有较强的稳定性
(3)基于DOM的XSS
- 是通过修改页面DOM节点数据信息而形成的XSS
- 往往需要针对具体的JavaScript DOM代码进行分析,并根据实际情况进行XSS的利用
4.XSS最常见的防护手段
- 原理比较直观,就是注入一段能够被浏览器解释执行的代码,并且通过各种手段使得这段代码“镶嵌”在正常网页中,由用户在正常访问中触发
- 目前针对XSS攻击的防护方式主要有以下几种:
- (1)过滤特殊字符
- (2)使用实体化编码
5.2.4 CSRF
- 跨站请求伪造:攻击者盗用了你的身份,以你的名义进行某些非法操作
1.CSRF的原理
- 受害者必须完成两个步骤:
- (1)登录受信任网站A,并在本地生成Cookie
- (2)在不登出A的情况下,访问危险网站B
2.CSRF的三种不同危害方式
- 1)论坛等可交互的地方:很多网站(比如论坛)允许用户自定义有限种类的内容
- 2)Web攻击者:这里Web攻击者的定义是指有自己独立域名的恶意代理
- 3)网络攻击者:指的是能控制用户网络连接的恶意代理
3.CSRF漏洞的常见防护手段
- 添加验证码:由于攻击者只能仿冒用户发起请求,并不能接收服务器给用户返回的申请,因此可以在关键点添加验证码措施。当发起关键业务的请求后,还需输入验证码进行校验
- 验证referer:应验证referer是否合法,即通过验证请求来源方式判断此次请求是否正常。推荐用来监控CSRF行为。如果用于防御,效果并不一定能达到良好
- 利用token:进行当前用户身份真实性的识别。token在当前用户第一次访问某项功能页面时生成,且应该是一次性的,并在生成完毕后由服务器端发送给客户端。客户端接收到token后,会在下一步业务时提交token并由服务器进行有效性验证
5.2.5 远程代码执行漏洞
- 指攻击者可以随意执行系统命令
1.远程代码执行漏洞的原理
2.远程代码执行漏洞的防范
- 禁用高危系统函数
- 严格过滤关键字符
- 严格限制允许的参数类型
5.3 恶意代码
5.3.1恶意代码的定义
- 恶意代码,又称为恶意软件,是能够在计算机系统中进行非授权操作的代码
5.3.2恶意代码的特点
- 大多是出于商业或探测他人资料的目的,具有恶意破坏的目的、其本身为程序以及通过执行发生作用三个特点
5.3.3 恶意代码的分类
- 分类的标准主要是代码的独立性和自我复制性
- 对于非独立恶意代码,自我复制过程就是将自身嵌入宿主程序的过程
- 对于独立恶意代码,自我复制过程就是将自身传播给其他系统的过程
- 不具有独立自我复制能力的代码必须借助其他媒介进行传播
5.3.4 恶意代码的危害
- 破坏数据:所利用的手段有格式化硬盘、改写文件分配表和目录区、删除重要文件或者用无意义的数据覆盖文件等
- 占用磁盘存储空间
- 抢占系统资源
- 影响计算机运行速度
5.3.5 恶意代码案例
5.3.6 典型恶意代码原理与防范分析
- 防范方法:
(1)服务器安全设置
- 加强对脚本文件的代码审计,对出现FSO、Shell对象等操作的页面进行重点分析
- Web服务器通过正则表达式、限制用户输入信息长度等方法对用户提交信息的合法性进行必要验证、过滤,可以有效防范SOL注入攻击和跨站脚本攻击;尽量使用参数化的SQL查询来代替拼接的SQL注入语句
- 使用数据库系统自身的安全性设置访问数据库权限
(2)应用安全防护
- Web软件开发的安全:程序开发时应防止文件上载的漏洞
- FTP文件上载安全:应设置好FTP服务器,防止攻击者直接使用FTP上传木马程序到Web程序的目录中
- 文件系统的存储权限:应设置好Web程序目录及系统其他目录的权限,相关目录的写权限只赋予超级用户,部分目录写权限赋予给系统用户
- 不要使用超级用户运行Web服务
(3)控制文件上传
- 加强对脚本文件的代码审计
- 将应用系统的重要文件放在不同的文件夹中
5.4 中间件安全
5.4.1 中间件概述
- 中间件是一种独立的系统软件或服务程序,分布式应用程序借助这种软件在不同的技术之间共享资源。
- 企业使用中间件具有如下优势:
- 1)具体来说,中间件屏蔽了底层操作系统的复杂性,是程序开发人员面对一个简单而统一的开发环境,减少程序开发的复杂性
- 2)减少了系统的维护、运行和管理的工作量
- 3)将不同时期、在不同操作系统之上开发应用软件集成起来。
5.4.2 中间件的分类
- 应用服务类中间件
- 应用集成类中间件
- 业务架构类中间件
5.4.3 典型中间件安全案例
- 该漏洞产生原因有以下几种:
1)在Java编写的Web应用与Web服务器期间,Java通常会发送大量的序列化对象。
2)HTTP请求中的参数、cookies以及Parameters。
3)RMI协议,被广泛使用的RMI协议完全基于序列化。
4)JMX用于处理序列化对象。
5)自定义协议,用来接收与发送原始的Java对象。
6)在序列化过程中使用ObjectOutputStream类的writeObject()方法,在接受数据后一般又会采用ObjectInputStream类的readObject()方法进行反序列化读取数据。
5.5 数据库安全
5.5.1 数据库概述
5.5.2 数据库标准语言SQL
5.5.3 典型数据库安全案例
对于数据库的防护方法如下:
1)首先,需要加强像SA张扬的账户的密码。
2)对扩展存储过程进行处理。
3)执行use master sp_dropextendedproc 'xp_cmdshell'去掉Guest账号,阻止非授权用户访问。
4)加强对数据库登录的日志记录。
5)用管理员身份定期检查所有账号。
第八章 舆情分析
8.1 舆情的概念
8.1.1 舆情与网络舆情
8.1.2 舆情分析的目的和意义
1)有些舆情可能影响政府的形象,进行舆情监测和分析,能够及时了解到事件以及舆论动态,对错误、失实的舆论进行正确的引导。
2)政府通过舆情监测和分析,能够掌握社会民意,通过了解社会各阶层成员的情况、态度、看法、意见以及行为倾向,有助于对事件做出正确的判定。
3)对企业来说,有效的舆情监测和分析,及时的处理企业在网络上的相关影响,特别是负面影响显得尤为重要。
8.1.3 网络舆情的特点
1)表达的直接性
2)舆情信息在数量上具有海量性
3)舆情信息在内容上具有随意性和交互性
4)传播的迅速性
5)产生的突发性
6)舆情信息在时间上具有实时性和继承性
7)情绪的非理性
8)舆情信息在发展上具有偏差性
9)根据对一系列网络事件的分析,我们发现,人们在面对一个受关注事件的时候,会经过几个阶段:
- 关注前期
- 发展期
- 爆炸期
- 冷静期
- 冷却期
8.2 网络舆情的分析方法
8.2.1 检索方法
舆情分析中的检索方法具有以下特点:
1)实际操作中自主研发的检索工具使用频率不高,普通商业搜索引擎的使用率较高。
2)机器检索需要事先设定一个目录。
3)机器检索负责数据的粗检索,人工检索负责数据的精细检索。
检索的起点是关键词或者排行榜,检索的内容是信息学的属性,包括转发器、点击量、评论量、传播关键点。
8.2.2 研判方法
定量研判包括:
1)舆情按区域统计分析
2)舆情按时间统计分析
3)舆情按年龄统计分析
4)舆情按性别统计分析
5)舆情按行业统计分析
6)舆情按性质统计分析
7)舆情按密度统计分析
定性研判分析包括:
1)舆情可信度统计研判分析:
2)舆情价值统计研判分析:
3)舆情等级统计研判分析:
4)舆情历史关联统计研判分析:
5)舆情趋势预测统计研判分析:
6)舆情转预警预测统计研判分析:
8.2.3 典型的舆情分析方法
1.双层分析法
(1)传播层分析
(2)动因层分析
2.语义统计分析方法
3.情感倾向分析方法
4.基于Web的文本挖掘技术的分析方法
8.3 舆情分析应用:网络舆情分析系统
8.3.1 基本架构
网络舆情分析系统通常具有以下功能:
(1)热点话题、敏感话题识别
(2)倾向性分析
(3)主题跟踪
(4)趋势分析
(5)突发事件分析
(6)报警系统
(7)统计报告
舆情系统的构成:
(1)数据采集模块
(2)数据预处理模块
(3)数据聚类模块
(4)舆情分析子系统
(5)系统管理人员根据需要为各种组及用户分配各种的使用权限,一个组里的用户具有相同的权限,便于同组人员管理
(6)管理主要实现对系统操作的记录
8.3.2 信息采集
8.3.3 网络资源分析
8.3.4 网页预处理
8.3.5 信息挖掘
Web信息挖掘主要由四个步骤构成,描述如下:
1)定位Web信息源
2)数据的选择与预处理
3)有效模式的挖掘
4)模式的验证分析
8.3.6 归档管理
8.3.7 舆情统计
8.4 舆情分析应用:网络舆情监测系统
网络舆情监控要做到:
1)依托公开管理的职能,切实掌握网络状况,积极建立健全系统的信息数据库。
2)对于网上的热点新闻、事件以及人物,在实现网络监控的同时,视情况可进行网下的深入调研。
3)充分利用计算机技术与网络技术,对网络舆情监控系统的信息进行深层挖掘,切实掌握维稳工作所涉及的各类网络的舆情信息,注重与情的有效引导。
8.4.1 网络舆情检测系统的产生
8.4.2 网络舆情监测系统的构成
1)信息采集模块负责从互联网网站上采集网页信息,为网络舆情检测系统提供原始数据,是整个系统最基础的部分。
2)正文提取模块的主要功能是从采集到的网页中提取正文信息。
3)文本聚类模块对采集到的文本进行聚类,将文本细分为不同的类别,并统计各个类别中的文本数据,为进一步分析做好准备。
4)文本分类模块对聚类后的各个类别中的文本进行分类,统计各类文本数据的支持和反对情况,为进一步的情感分析和决策提供数据支持。
5)情感分析模块主要实现对同一类别中的文本进行情感区分,分析同一类别的网站上发表言论的网民对相应事件的态度。
网络舆情检测系统的作用
1)及时、全面的收集舆情
2)分析舆情
3)监测结果将成为重要的决策依据