`
maosheng
  • 浏览: 560210 次
  • 性别: 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
分享到:
评论

相关推荐

    广播电视信息系统网络安全防护策略研究.pdf

    本研究着重分析了广播电视信息系统中网络安全面临的风险,并提出了具体的技术防护策略。 1. 广播电视信息系统网络安全风险分析 1.1 系统结构规模带来的风险 随着广播电视行业的发展,网络规模扩大,业务系统增加,...

    数字化校园安全应用防护策略研究与实践.pdf

    "数字化校园安全应用防护策略研究与实践" 数字化校园安全应用防护策略是指在数字化校园建设项目中,为了确保网络安全和信息安全,采取的一系列防护措施和策略。这些措施和策略包括网络安全防护系统、服务器安全管理...

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

    本文主要探讨了计算机网络安全的现状、存在的威胁以及防护策略,并展望了未来的发展方向。 首先,网络安全现状不容乐观,病毒攻击、内部和外部泄密、逻辑炸弹、黑客攻击以及系统漏洞都是构成威胁的关键因素。例如,...

    计算机网络应用安全问题与防护策略.pdf

    计算机网络应用安全问题与防护策略是当今信息技术领域内极为关键的研究课题。随着互联网技术的快速发展,计算机网络已经渗透到人们生活的方方面面,为人们提供了极大的便利。然而,网络应用的安全问题随之而来,成为...

    浅谈分布式数据库系统安全性及其防护策略.pdf

    浅谈分布式数据库系统安全性及其防护策略 摘要:本文阐述了分布式数据库系统的安全性问题,以及相应的防护策略。分布式数据库系统由于其分布式特性,存在黑客攻击、计算机病毒攻击、网络环境的脆弱性和蓄意或无意的...

    大数据时代计算机网络安全防护与管理策略探析.pdf

    本文探讨了大数据背景下计算机网络的安全问题,以及面临的各种威胁和防护管理策略,目的是为了提升网络的安全防护能力,并为相关机构和研究提供参考。 首先,文章对大数据时代的含义进行了概述。大数据时代的到来...

    Java Web应用安全防护:抵御CSRF与XSS攻击的策略

    本文将详细探讨CSRF和XSS攻击的原理、特点以及在Java Web应用中的防护策略。 CSRF和XSS攻击是Web应用开发中必须面对的安全挑战。通过本文的详细介绍,你应该能够理解这些攻击的原理和防护策略。在Java Web应用开发中...

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

    【计算机网络安全现状与防护策略】 随着信息技术的飞速发展,计算机网络已经成为我们日常生活和工作中不可或缺的一部分,极大地推动了社会的进步。然而,网络安全问题也随之日益凸显,成为制约互联网效益发挥的关键...

    计算机网络安全问题与防护策略 (1).pdf

    《计算机网络安全问题与防护策略》 随着信息技术的快速发展,计算机网络已经深入到人们生活的方方面面,无论是政府企事业单位,还是个人用户,对网络安全的需求日益增强。然而,网络安全问题也随之凸显,小至个人...

    浅谈计算机网络安全现状与防护策略.pdf

    网络安全是指保护计算机网络系统免受外部威胁和攻击,以确保其完整性、机密性和可用性的能力。...随着网络技术的不断进步,新的安全威胁和挑战也会不断出现,因此对网络安全的研究和防护策略的制定需要持续不断地进行。

    系统安全攻击与防护技术分析.pdf

    系统安全攻击与防护技术分析主要涉及网络安全的攻防策略,包括信息收集、分析、防护措施等多个层面。在这个领域,理解和掌握以下几个关键知识点至关重要: 1. **信息收集与分析**:这是攻击者在实施攻击前的重要...

    计算机通信网络安全与防护策略分析.docx

    络管理员及时采取防护措施。入侵检测技术通过监控网络流量和系统活动,分析异常模式,能够有效地预防和响应潜在的攻击。...随着技术的发展,网络安全防护策略也需要不断创新和完善,以应对日益复杂的网络威胁。

    计算机网络安全问题与防护策略 (2).pdf

    最后,文章作者时丽平是一位讲师,研究方向为计算机应用,她提出了对网络安全问题的专业见解和防护策略,为读者提供了丰富的网络安全知识和参考信息,这些内容对于学术研究和实际应用都具有重要的指导意义。

    面向APT攻击的网络安全防护体系能力分析.pdf

    这需要对攻击技术、过程以及防护策略有全面的理解,并结合系统动力学等工具进行动态评估和优化。 总的来说,文章探讨了如何构建和优化针对APT攻击的网络安全防护体系,强调了系统动力学在分析和提升防护能力中的...

    基于安全域的云计算安全防护策略研究.pdf

    总的来说,基于安全域的云计算安全防护策略是一种系统化的、从宏观角度出发的安全策略设计方法,它要求我们在云计算的各个层次、各个域中采取相应的安全措施,同时又要整体考虑各层次、各域之间的安全协同,形成一个...

    大数据环境下计算机网络安全与防护策略研究.zip

    在大数据环境下,计算机网络安全与防护策略的研究变得尤为重要。随着信息技术的快速发展,大数据已经渗透到各行各业,带来了前所未有的信息处理能力和洞察力。然而,伴随着这些优势,大数据也暴露了网络安全的新挑战...

    浅析电力系统网络信息中心安全管理与防护策略研究 (2).docx

    境以及人为破坏的风险,构成了电力系统...综上所述,电力系统网络信息中心的安全管理与防护策略是一个涵盖多个层面的复杂任务,需要综合运用各种技术和管理手段,以确保电力系统的安全稳定运行,保障社会的可靠供电。

    高职院校网络安全现状及防护策略分析.pdf

    高职院校网络安全现状及防护策略分析 随着信息技术的不断发展,网络安全问题日益凸显,尤其是高职院校,作为信息化建设的重要阵地,其网络安全问题已经成为教育信息化过程中不可忽视的部分。当前高职院校网络安全...

    图书馆信息系统安全分析与可行性防护策略

    图书馆信息系统安全分析与可行性防护策略 一、信息系统风险及其产生的内因和外因 图书馆信息系统安全面临的风险,源自信息系统本身的脆弱性和外部环境的威胁。硬件组件的物理摧毁、人为破坏和病毒侵害,软件组件的...

    大数据时代计算机网络信息安全及其防护策略.pdf

    【大数据时代计算机网络信息安全及其防护策略】 随着信息技术的飞速发展,互联网已深入渗透到人们的日常生活中,成为不可或缺的一部分。互联网不仅改变了人们的生活方式,也推动了各行各业的变革,跨越地域限制,...

Global site tag (gtag.js) - Google Analytics