`
maosheng
  • 浏览: 551032 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

安全攻击与防护策略

 
阅读更多
安全三要素(CIA)是安全的基本组成元素,分别是机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)

安全评估过程:资产等级划分----->  威胁分析 ----->  风险分析 -------> 确认解决方案

互联网的核心其实是由用户数据驱动的-----用户产生业务,业务产生数据。互联网公司最核心的价值就是其拥有的用户数据。

互联网安全的核心问题,是数据安全的问题。

分析威胁时,可以从以下六个方面考虑:






一、跨站脚本攻击(XSS)

跨站脚本攻击,即Cross Site Script Execution(通常简写为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上,对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

(1)跨站脚本攻击分类

1、反射型XSS

反射型跨站脚本漏洞是最基本的web漏洞,当web客户端提供数据时,就会出现这种漏洞,常见于HTTP查询参数(例如,HTML表单提交),服务端脚本在没有正确过滤请求时,就立即解析并展示页面结果给用户。因为html文档是流式结构并且混合了控制状态,格式化,真实内容,结果页面中包含的任何未经验证的用户提交数据,如果没有正确的进行html编码,都有可能导致标签注入。一个典型例子是一个网站搜索引擎:如果搜索了一个字符串,这个搜索字符串通常会在搜索页再显示一次,告诉用户搜索了什么。如果响应没有正确忽略或者拒绝html控制字符串,跨站脚本风险随之而来。

2、存储型XSS

存储型XSS漏洞是一种更有破坏性的跨站脚本缺陷的变种:当攻击者提供的数据保存到了服务端,然后永久的显示在“正常”页面,并且其他用户在浏览器是可以看到,如果这些数据没有经过正确的html编码,就会发生这种攻击。一个典型的例子就是在线留言板,允许用户发布html格式的信息,可以让其他用户看到。

(2)跨站脚本攻击防护措施

1、采用Filter技术,对所有参数都进行过滤,处理方案为:1. 含有html标签做转义。2. 含有敏感的html脚本,直接处理掉

2、对用户输入的特殊符号进行HTML转义后再输出,将 < > & ‘ “ 在输出前分别转义为 &lt; &gt; &amp; &#039; $quot;

二、SQL注入

注入攻击的本质,是把用户输入的数据当做代码执行。这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。

注入攻击的应用违背了“数据与代码分离原则”导致的结果。它有两个条件:一是用户能够控制数据的输入;二是代码拼凑了用户输入的数据,把数据当做代码执行了。

在对抗注入攻击时,只需要牢记“数据与代码分离原则”,在“拼凑”发生的地方进行安全检查,就能避免此类问题。

SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

(1)SQL注入攻击实例

比如在一个登录界面,要求输入用户名和密码:
可以这样输入实现免帐号登录:
用户名: ‘or 1 = 1 –
密 码:
点登陆,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了.(当然现在的有些语言的数据库API已经处理了这些问题)
这是为什么呢? 下面我们分析一下:
从理论上说,后台认证程序中会有如下的SQL语句:

String sql = "select * from user_table where username=
' "+userName+" ' and password=' "+password+" '";
当输入了上面的用户名和密码,上面的SQL语句变成:
SELECT * FROM user_table WHERE username='’or 1 = 1 -- and password='’
"""
分析SQL语句:
条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功;

然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。
这还是比较温柔的,如果是执行
SELECT * FROM user_table WHERE
username='' ;DROP DATABASE (DB Name) --' and password=''
其后果可想而知…"""

(2)防止sql注入措施

1、检查变量数据类型和格式

如果你的SQL语句是类似where id={$id}这种形式,数据库里所有的id都是数字,那么就应该在SQL被执行前,检查确保变量id是int类型;如果是接受邮箱,那就应该检查并严格确保变量一定是邮箱的格式,其他的类型比如日期、时间等也是一个道理。总结起来:只要是有固定格式的变量,在SQL语句执行前,应该严格按照固定格式去检查,确保变量是我们预想的格式,这样很大程度上可以避免SQL注入攻击。

比如,我们前面接受username参数例子中,我们的产品设计应该是在用户注册的一开始,就有一个用户名的规则,比如5-20个字符,只能由大小写字母、数字以及一些安全的符号组成,不包含特殊字符。此时我们应该有一个check_username的函数来进行统一的检查。不过,仍然有很多例外情况并不能应用到这一准则,比如文章发布系统,评论系统等必须要允许用户提交任意字符串的场景,这就需要采用过滤等其他方案了。

2、过滤特殊符号

对于无法确定固定格式的变量,一定要进行特殊符号过滤或转义处理。

3、绑定变量,使用预编译语句

MySQL的mysqli驱动提供了预编译语句的支持,不同的程序语言,都分别有使用预编译语句的方法。实际上,绑定变量使用预编译语句是预防SQL注入的最佳方式,使用预编译的SQL语句语义不会发生改变,在SQL语句中,变量用问号?表示,黑客即使本事再大,也无法改变SQL语句的结构.

三、CSRF(跨站请求伪造)

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

(1)CSRF原理

下面一张图简单阐述了CSRF的原理





从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成以下两个步骤:
登录受信任网站A,并在本地生成Cookie。
在不登出A的情况下,访问危险网站B。
看到这里,你也许会问:“如果我不满足以上两个条件中的一个,我就不会受到CSRF攻击”。是滴,确实如此,但是你不能保证以下情况不会发生:
你不能保证你登录了一个网站之后,不再打开一个tab页面并访问其它的网站(非法网站)。
你不能保证你关闭浏览器之后,你本地的Cookie立刻过期,你上次的会话已经结束。
上述中所谓的攻击网站,可能就是一个钓鱼网站或者非法网站。

(2)CSRF防护措施

检查Referer字段

HTTP头中有一个Referer字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer字段应和请求的地址位于同一域名下。以银行操作为例,Referer字段地址通常应该是转账按钮所在的网页地址,应该也位于ww.examplebank.com之下。而如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址,不会位于www.examplebank.com之下,这时候服务器就能识别出恶意的访问。

这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的Referer字段。虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能。

添加校验token

由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再执行CSRF攻击。这种数据通常是表单中的一个数据项。服务器将其生成并附加在表单中,其内容是一个伪乱数。当客户端通过表单提交请求时,这个伪乱数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪乱数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪乱数的值,服务器端就会因为校验token的值为空或者错误,拒绝这个可疑请求

四、Tomcat版本号泄露

Tomcat报错页面泄漏Apache Tomcat/7.0.52相关版本号信息,是攻击者攻击的途径之一。因此实际当中建议去掉版本号信息。

防范措施:

<!-- error servlet 处理 -->
<servlet>
<servlet-name>ErrorServlet</servlet-name>
<servlet-class>com.commons.service.util.web.ErrorServlet</servlet-class>
<init-param>
<param-name>beanName</param-name>
<param-value>errorUrl</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>ErrorServlet</servlet-name>
<url-pattern>/errorServlet</url-pattern>
</servlet-mapping>

<!-- 出错页面定义 -->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>501</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>502</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>503</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>401</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>402</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>407</error-code>
<location>/errorServlet</location>
</error-page>
<error-page>
<error-code>415</error-code>
<location>/errorServlet</location>
</error-page>


五、重放攻击

重放攻击的基本原理就是把以前截获到的数据原封不动地重新发送给接收方。很多时候,网络上传输的数据是加密过的,此时攻击者无法得到数据的准确意义。但如果他知道这些数据的作用,就可以在不知道数据内容的情况下通过再次发送这些数据达到愚弄接收端的目的。例如,有的系统会将鉴别信息进行简单加密后进行传输,这时攻击者虽然无法截获密码,但他们却可以首先截取加密后的口令然后将其重放,从而利用这种方式进行有效的攻击。

防御措施:

1、加随机数:该方法优点是认证双方不需要时间同步,双方记住使用过的随机数,如发现报文中有以前使用过的随机数,就认为是重放攻击。

2、加时间戳:该方法优点是不用额外保存其他信息。缺点是认证双方需要准确的时间同步,同步越好,受攻击的可能性就越小。但当系统很庞大,跨越的区域较广时,要做到精确的时间同步并不是很容易。

六、只允许get,post这2个请求

解决措施:
在web.xml中加入如下代码:

<!-- 去掉多余的请求方式 -->
<security-constraint> 
   <web-resource-collection> 
<url-pattern>/*</url-pattern> 
<http-method>PUT</http-method> 
<http-method>DELETE</http-method> 
<http-method>HEAD</http-method> 
<http-method>OPTIONS</http-method> 
<http-method>TRACE</http-method> 
<http-method>PATCH</http-method>
   </web-resource-collection> 
   <auth-constraint> 
   </auth-constraint> 
</security-constraint> 
<login-config> 
   <auth-method>BASIC</auth-method> 
</login-config> 


七、越权问题

越权分两种:水平越权和垂直越权

水平越权:相同级别(权限)的用户或同一角色的不同用户之间,可以越权访问、修改或删除的非法操作。

垂直越权:不同级别之间或不同角色之间的越权。

垂直权限管理它是一种“基于角色的访问控制”

水平权限管理它是一种“基于数据的访问控制”

访问控制与业务需求息息相关,并非一个单纯的安全问题。因此在解决此类问题或者设计权限控制方案时,要重视业务的意见。

无论选择哪种访问控制方式,在设计方案时都应该满足“最小权限原则”,这是权限管理的黄金法则。


八、文件上传漏洞

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。

设计安全的文件上传功能:
1.文件上传的目录设置为不可执行
2.判断文件类型
3.使用随机数改写文件名和文件路径
4.单独设置文件服务器的域名


九、认证与授权

认证(Authentication):认证的目的是为了认出用户是谁,认证实际上就是一个验证凭证的过程

授权(Authorization):授权的目的是为了决定用户能够做什么。














  • 大小: 87.7 KB
  • 大小: 122.6 KB
  • 大小: 209.3 KB
分享到:
评论

相关推荐

    计算机网络安全现状与防护策略的论文-计算机网络论文.docx

    计算机网络安全现状与防护策略的论文-计算机网络论文全文共4页,当前为第1页。计算机网络安全现状与防护策略的论文-计算机网络论文全文共4页,当前为第1页。 计算机网络安全现状与防护策略的论文-计算机网络论文全文...

    计算机网络安全现状与防护策略-计算机信息安全论文-计算机论文.docx

    计算机网络安全现状与防护策略-计算机信息安全论文-计算机论文全文共8页,当前为第1页。计算机网络安全现状与防护策略-计算机信息安全论文-计算机论文全文共8页,当前为第1页。计算机网络安全现状与防护策略-计算机...

    常见网络攻击手段及安全策略

    随着Internet 的发展, 高信息技术像一把双刃剑, 带给我们无限益处的同时也带给网络更大的风险。网 络安全已成为重中之重, 攻击者无处不在。因此网络 管理人员应该对攻击手段有一个全面深刻的...订完善安全防护策略。

    办公自动化网络安全防护策略探讨.docx

    办公自动化网络安全防护策略探讨全文共4页,当前为第1页。办公自动化网络安全防护策略探讨全文共4页,当前为第1页。 办公自动化网络安全防护策略探讨 办公自动化网络安全防护策略探讨全文共4页,当前为第1页。 办公...

    网络安全防护技战法报告.docx

    对所有通过联网接入的用户IP或IP地址段开启全面安全防护策略,开启防病毒、防僵尸网络、防篡改等防护功能。 通过对全网进行访问控制、明确权限划分可以避免越权访问、非法访问等情况发生,减少安全事件发生概率。 ...

    论文研究-基于改进蚁群算法的防护策略选择模型.pdf

    针对上述问题,对网络攻击的防护问题展开研究,提出一种基于改进蚁群算法的防护策略选择模型(Hardening Measures Selection Mode based on an Improved Ant?Colony?Optimization,HMSMIACO)。该模型由三部分组成:...

    企业网络安全管理制度(策略、制度、解决方案)

    企业网络安全管理策略.doc 网络安全管理制度.doc H3C网络管理解决方案.doc OpManager网络管理综合解决方案.pdf 计算机信息系统安全管理制度...如果不进行有效的安全防护,网络信息系统将会受到具有破坏性的攻击和危害。

    通信网络安全防护.docx

    面临的主要安全风险来自用户、互联伙伴的带有拒绝服务攻击性质的安全事件,包括利用路由器漏洞的安全攻击,分布式大流量攻击,蠕虫病毒、虚假路由、钓鱼攻击、P2P滥用等。 互联网上的安全事件会影响直接或间接连接...

    论文研究-智能电网通信干扰攻击的动态博弈策略 .pdf

    智能电网通信干扰攻击的动态博弈策略,马靖寰,张宏宇,本文主要研究智能电网通信干扰攻击与防御行为的相互作用。根据攻防双方能力有限性和攻防行为多阶段性等特点,本项工作使用动态博

    Gartner:用自适应安全架构来应对高级定向攻击

    当前的防护功能难以应对高级的定向攻击,由于企业系统所受到的是持续攻击,并持续缺乏防御力,面向“应急响应”的特别方式已不再是正确的思维模式,Garnter提出了用自适应安全架构来应对高级定向攻击。大多数企业在...

    网络安全论文:浅论如何构建企业网络安全防护体系.doc

    随着网络技术的快速发展,企业网络面临的安全威胁也不断发生变化,网络攻击手 段日益多样化,新病毒不断涌现,因此企业网络安全防护体系构建应适应网络发展和变 化,综合考虑工作人员、防护策略、防护技术等多方面的...

    操作系统安全:安全策略的制定与实施.pptx

    安全策略的制定与实施;?网络安全策略设计原则;?“木桶的最大容积取决于最短的一块木板”。攻击者使用的“最易渗透原则”,必然在系统中最薄弱的地方进行攻击。因此,要信息均衡、全面地进行保护,提高整个系统的...

    校园网络安全防护措施.docx

    1、在互联网和学校内网之间的出口处安装防火墙和行为管理器,并做好安全策略,拒绝外来的恶意攻击,保障学校网络系统的正常运行。 2、做好网络安全防护服务器访问日志的留存。网络安全服务器具有保存六个月以上的...

    计算机网络的网络安全问题及防护措施.docx

    二、计算机网络安全防范策略 (一)充分利用评估技术,及时进行病毒查杀 实际上安全状态评估技术主要是对计算机系统进行整体上的分析,指出计算机中所存的风险,通过一些杀毒软件进行杀死病毒。主要的一些杀毒软件,...

    【网络安全精品】智慧城市的安全威胁及系统防护初探演讲稿.rar

    针对这些安全问题,文档提出了一系列创新且实用的防护策略。包括加强网络基础设施的安全防护、实施定期的安全审计、采用最新的加密技术来保护数据传输和存储,以及推动跨部门之间的信息共享和应急响应机制。同时,也...

    网络安全防护个人隐私保护带内容、网络安全项目计划书.pptx

    目录 PART1 网络安全的内涵 PART2 网络安全技术原理 PART3 网络安全预防措施 PART4 问题与发展现状 网络安全防护个人隐私保护带内容、网络安全项目计划书全文共45页,当前为第2页。 PRAT 1 网络安全内涵 The ...

    GB∕T 25070-2019 信息安全技术网络安全等级保护安全设计技术要求.pdf

    网络安全形势已经异常复杂,安全漏洞永远存在、安全威胁时时刻刻都在发生,等级保护作为国家网络安全的一项基本制度,应为国家的重要信息系统守住安全底线,确保系统即使遭受攻击后,也不会对国家安全、社会秩序等...

    华为S9300ARP防护策略

    S9300_网络安全介绍及攻击特性介绍,详细介绍了华为S9300系列交换机的ARP防护配置介绍和命令,帮助华为用户解决由于ARP导致的种种故障。

    网络安全防护技术教案.docx

    掌握网络安全技术的概念与相关知识 了解网络安全相关标准,对于各类网络环境所使用的各类防护技术原理有正确的认识 3、情感态度价值观 遵守国家关于信息安全的相关法律法规,不利用所掌握的技术进行入侵攻击方面的...

Global site tag (gtag.js) - Google Analytics