文档库 最新最全的文档下载
当前位置:文档库 › 浅谈Web应用程序的安全性问题及漏洞研究

浅谈Web应用程序的安全性问题及漏洞研究

浅谈Web应用程序的安全性问题及漏洞研究
浅谈Web应用程序的安全性问题及漏洞研究

浅谈Web应用程序的安全性问题及漏洞研究

摘要:web应用攻击能够给人们的财产、资源和声誉造成重大破坏。虽然web应用增加了用户受攻击的危险,但有许多方法可以帮助减轻这一危险。本文研究了web应用程序的漏洞,探讨了web

安全的现状及问题由来以及几种主要web安全技术,提出了实现web 安全的几条措施。

关键词:web应用程序安全漏洞

中图分类号:tp393 文献标识码:a 文章编号:

1007-9416(2012)12-0256-01

1、引言

在internet大众化及web技术飞速演变的今天,在线安全所面临的挑战日益严峻。伴随着在线信息和服务的可用性的提升,以及基子web的攻击和破坏的增长,安全风险达到了前所未有的高度。由于众多安全工作集中在网络本身上面,web应用程序几乎被遗忘了。也许这是因为应用程序过去常常是在一台计算机上运行的独立程序,如果这台计算机安全的话,那么应用程序就是安全的。如今,情况大不一样了,web应用程序在多种不同的机器上运行:客户端、web服务器、数据库服务器和应用服务器。而且,因为他们一般可以让所有的人使用,所以这些应用程序成为了众多攻击活动的后台旁路。

随着internet的普及,人们对其依赖也越来越强,但是由于internet的开放性,及在设计时对于信息的保密和系统的安全考虑

不完备,造成现在网络的攻击与破坏事件层出不穷,给人们的日常生活和经济活动造成了很大麻烦。

2、web安全的主要技术

安全是网络赖以生存的保障,只有安全得到保障,网络才能实现自身的价值。web安全技术随着人们网络实践的发展而发展,其涉及的技术面非常广,主要的技术如认证、加密、防火墙及入侵检测是web安全的重要防线。

2.1 认证

对合法用户进行认证可以防止非法用户获得对公司信息系统的访问,使用认证机制还可以防止合法用户访问他们无权查看的信息。

2.2 数据加密

加密就是通过一种方式使信息变得混乱,从而使未被授权的人看不懂它。主要存在两种主要的加密类型:私匙加密和公匙加密。

2.3 防火墙技术

防火墙是网络访问控制设备,用于拒绝除了明确允许通过之外的所有通信数据,它不同于只会确定网络信息传输方向的简单路由器,而是在网络传输通过相关的访问站点时对其实施一整套访问策略的一个或一组系统。大多数防火墙都采用几种功能相结合的形式来保护自己的网络不受恶意传输的攻击,其中最流行的技术有静态分组过滤、动态分组过滤、状态过滤和代理服务器技术,它们的安全级别依次升高,但具体实践中既要考虑体系的性价比,又要考虑

安全兼顾网络连接能力。此外,现今良好的防火墙还采用了vpn、检视和入侵检测技术。

防火墙的安全控制主要是基于ip地址的,难以为用户在防火墙内外提供一致的安全策略;而且防火墙只实现了粗粒度的访问控制,也不能与企业内部使用的其他安全机制(如访问控制)集成使用;另外,防火墙难于管理和配置,由多个系统(路由器、过滤器、代理服务器、网关、保垒主机)组成的防火墙,管理上难免有所疏忽。

3、web安全问题的由来

网络设计之初仅考虑到信息交流的便利和开放,而对于保障信息安全方面的规划则非常有限,这样,伴随计算机与通信技术的迅猛发展,网络攻击与防御技术循环递升,原来网络固有优越性的开放性和互联性变成信息的安全性隐患之便利桥梁。web安全已变成越来越棘手的问题,只要是接入到因特网中的主机都有可能被攻击或入侵了,而遭受安全问题的困扰。

目前所运用的tcp/ip协议在设计时,对安全问题的忽视造成网络自身的一些特点,而所有的应用安全协议都架设在tcp/ip之上,tcp/ip协议本身的安全问题,极大地影响了上层应用的安全。网络的普及和应用还是近10年的事,而操作系统的产生和应用要远早于此,故而操作系统、软件系统的不完善性也造成安全漏洞;在安全体系结构的设计和实现方面,即使再完美的体系结构,也可能一个小小的编程缺陷,带来巨大的安全隐患;而且,安全体系中的各

最受欢迎的十大WEB应用安全评估系统

最受欢迎的十大WEB应用安全评估系统 在国内一些网站上经常看到文章说某某WEB应用安全评估工具排名,但是很可惜,绝大多数都是国外人搞的,界面是英文,操作也不方便,那游侠就在这里综合下,列举下国内WEB安全评估人员常用的一些工具。当然,毫无疑问的,几乎都是商业软件,并且为了描述更准确,游侠尽量摘取其官方网站的说明: 1.IBM Rational AppScan IBM公司推出的IBM Rational AppScan产品是业界领先的应用安全测试工具,曾以Watchfire AppScan 的名称享誉业界。Rational AppScan 可自动化Web 应用的安全漏洞评估工作,能扫描和检测所有常见的Web 应用安全漏洞,例如SQL 注入(SQL-injection)、跨站点脚本攻击(cross-site scripting)及缓冲溢出(buffer overflow)等方面安全漏洞的扫描。 游侠标注:AppScan不但可以对WEB进行安全评估,更重要的是导出的报表相当实用,也是国外产品中唯一可以导出中文报告的产品,并且可以生成各种法规遵从报告,如ISO 27001、OWASP 2007等。 2.HP WebInspect

目前,许多复杂的Web 应用程序全都基于新兴的Web 2.0 技术,HP WebInspect 可以对这些应用程序执行Web 应用程序安全测试和评估。HP WebInspect 可提供快速扫描功能、广泛的安全评估范围及准确的Web 应用程序安全扫描结果。 它可以识别很多传统扫描程序检测不到的安全漏洞。利用创新的评估技术,例如同步扫描和审核(simultaneous crawl and audit, SCA)及并发应用程序扫描,您可以快速而准确地自动执行Web 应用程序安全测试和Web 服务安全测试。 主要功能: ·利用创新的评估技术检查Web 服务及Web 应用程序的安全 ·自动执行Web 应用程序安全测试和评估 ·在整个生命周期中执行应用程序安全测试和协作 ·通过最先进的用户界面轻松运行交互式扫描 ·满足法律和规章符合性要求 ·利用高级工具(HP Security Toolkit)执行渗透测试 ·配置以支持任何Web 应用程序环境 游侠标注:毫无疑问的,WebInspect的扫描速度相当让人满意。 3.Acunetix Web Vulnerability Scanner

浅谈WEB应用安全问题及防范

浅谈WEB应用安全问题及防范 随着WEB应用技术的发展,越来越多的企业或学校使用WEB应用来进行企业或学校信息开放性管理,使机构管理信息暴露在越来越多的威胁中。由于WEB应用具有一定的运行特点,传统防火墙对于其存在的安全问题缺少针对性和有效性,新的防护工具——Web应用防火墙应运而生。 标签:web应用开放性安全问题Web防火墙 随着信息资源逐渐向数据高度集中的模式,Web成为一种普适平台,Web 应用成为了越来越多的企业或学校进行核心业务及信息管理的承载者。Web应用提供了丰富的开放资源和高效率的新工作方式,但它的开放性、易用性和易开发性同样也使Web应用的安全问题日益突出,已成为了网络安全核心问题之一。 1 Web应用的工作原理和特点 Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。 目前广泛使用的Web应用程序一般是B/S模式,使用标准的三层架构模型:第一层是客户端;使用动态Web内容技术的部分属于中间层;数据库是第三层。在B/S模式中,客户端运行浏览器软件。浏览器以超文本形式向Web服务器提出访问数据库的要求,Web服务器接受客户端请求后,将这个请求转化为SQL 语法,并交给数据库服务器,数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回给Web服务器,Web服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户端浏览器以友好的Web 页面形式显示出来。 因此,Web应用具有以下特点: 1.1 易用性 Web应用所基于的Web浏览器的界面都很相似,对于无用户交互功能的页面,用户接触的界面都是一致的,因此Web应用的操作简单易上手。 1.2 开放性 在Web应用的B/S模式下,除了内部人员可以访问,外部的用户亦可通过通用的浏览器进行访问,并且不受浏览器的限制。 1.3 易扩展性

五个常见的Web应用漏洞及其解决方法

五个常见的Web应用漏洞及其解决方法开放Web应用安全项目(OW ASP)很快会发布今年的10大Web应用安全漏洞清单。这个清单与去年并没有太大差别,这表明负责应用设计与开发的人仍然没能解决以前那些显而易见的错误。许多最常见的Web应用漏洞仍然广泛存在,许多恶意软件搜索和攻击这些漏洞,连黑客新手都能轻松做到。 本文介绍了5个最常见的Web应用漏洞,以及企业该如何修复初级问题,对抗那些针对这些漏洞的攻击。 注入攻击和跨站脚本攻击 Web应用主要有2种最常见的严重缺陷。首先是各种形式的注入攻击,其中包括SQL、操作系统、电子邮件和LDAP注入,它们的攻击方式都是在发给应用的命令或查询中夹带恶意数据。别有用心的数据可以让应用执行一些恶意命令或访问未授权数据。如果网站使用用户数据生成SQL查询,而不检查用户数据的合法性,那么攻击者就可能执行SQL注入。这样攻击者就可以直接向数据库提交恶意SQL查询和传输命令。举例来说,索尼的PlayStation 数据库就曾经遭遇过SQL注入攻击,并植入未授权代码。 跨站脚本(XSS)攻击会将客户端脚本代码(如JavaScript)注入到Web应用的输出中,从而攻击应用的用户。只要访问受攻击的输出或页面,浏览器就会执行代码,让攻击者劫持用户会话,将用户重定向到一个恶意站点或者破坏网页显示效果。XSS攻击很可能出现在动态生成的页面内容中,通常应用会接受用户提供的数据而没有正确验证或转码。 为了防御注入攻击和XSS攻击,应用程序应该配置为假定所有数据——无论是来自表单、URL、Cookie或应用的数据库,都是不可信来源。要检查所有处理用户提供数据的代码,保证它是有效的。验证函数需要清理所有可能有恶意作用的字符或字符串,然后再将它传给脚本和数据库。要检查输入数据的类型、长度、格式和范围。开发者应该使用现有的安全控制库,如OW ASP的企业安全API或微软的反跨站脚本攻击库,而不要自行编写验证代码。此外,一定要检查所有从客户端接受的值,进行过滤和编码,然后再传回给用户。 身份验证和会话管理被攻破 Web应用程序必须处理用户验证,并建立会话跟踪每一个用户请求,因为HTTP本身不具备这个功能。除非任何时候所有的身份验证信息和会话身份标识都进行加密,保证不受其他缺陷(如XSS)的攻击,否则攻击者就有可能劫持一个激活的会话,伪装成某个用户的身份。如果一个攻击者发现某个原始用户未注销的会话(路过攻击),那么所有帐号管理功能和事务都必须重新验证,即使用户有一个有效的会话ID。此外,在重要的事务中还应该考虑使用双因子身份验证。 为了发现身份验证和会话管理问题,企业要以执行代码检查和渗透测试。开发者可以使用自动化代码和漏洞扫描程序,发现潜在的安全问题。有一些地方通常需要特别注意,其中包括会话身份标识的处理方式和用户修改用户身份信息的方法。如果没有预算购买商业版本,那么也可以使用许多开源和简化版本软件,它们可以发现一些需要更仔细检查的代码或进程。

常见WEB安全漏洞及整改建议

常见WEB安全漏洞及整改建议 1. HTML表单没有CSRF保护 1.1 问题描述: CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。 CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以及财产安全。 1.2 整改建议: CSRF的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的CSRF防御也都在服务端进行。有以下三种方法: (1).Cookie Hashing(所有表单都包含同一个伪随机值): (2).验证码 (3).One-Time Tokens(不同的表单包含一个不同的伪随机值) 1.3 案例: 1.服务端进行CSRF防御 服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。 1.3.1 Cookie Hashing(所有表单都包含同一个伪随机值): 这可能是最简单的解决方案了,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败.

//构造加密的Cookie信息 $value = “DefenseSCRF”; setcookie(”cookie”, $value, time()+3600); ?> 在表单里增加Hash值,以认证这确实是用户发送的请求。 $hash = md5($_COOKIE['cookie']); ?> ”> 然后在服务器端进行Hash值验证 if(isset($_POST['check'])) { $hash = md5($_COOKIE['cookie']); if($_POST['check'] == $hash) { doJob(); } else {

十大常见漏洞

Web应用常见的安全漏洞有哪些 随着存在安全隐患的Web应用程序数量的骤增,Open Web Application Security Project (开放式Web应用程序安全项目,缩写为OWASP)总结出了现有Web应用程序在安全方面常见的十大漏洞,以提醒企业及其程序开发人员尽量避免它们给企业IT系统带来的安全风险: 一、非法输入 Unvalidated Input 在数据被输入程序前忽略对数据合法性的检验是一个常见的编程漏洞。随着OWASP对Web应用程序脆弱性的调查,非法输入的问题已成为大多数Web应用程序安全漏洞方面的一个普遍现象。 二、失效的访问控制 Broken Access Control 大部分企业都非常关注对已经建立的连接进行控制,但是,允许一个特定的字符串输入可以让攻击行为绕过企业的控制。 三、失效的账户和线程管理 Broken Authentication and Session Management 有良好的访问控制并不意味着万事大吉,企业还应该保护用户的密码、会话令牌、

账户列表及其它任何可为攻击者提供有利信息、能帮助他们攻击企业网络的内容。 四、跨站点脚本攻击 XSS 跨站漏洞以及钓鱼式攻击 XSS,中文名称为跨站脚本,是一种很常见的脚本漏洞。因为跨站脚本攻击不能直接对系统进行攻击,所以往往被人们忽视。 由于WEB应用程序没有对用户的输入进行严格的过滤和转换,就导致在返回页面中可能嵌入恶意代码。远程攻击者可以利用这些漏洞在用户浏览器会话中执行任意HTML和脚本代码。跨站脚本执行漏洞的攻击效果需要借助第三方网站来显现,此这种攻击能在一定程度上隐藏身份。 由于跨站脚本不能直接对系统进行攻击,所以跨站脚本总是伴随社会工程学来 实现攻击的,这种攻击的主要表现形式是钓鱼式攻击。钓鱼式攻击方式有很多,如获取Cookie, 伪造页面,屏蔽页面特定信息,与其它漏洞结合攻击操作系统等等。钓鱼式攻击是针对人脑的攻击方式,它的传播手段有EMAIL、IM、聊天室、恶意连接、游戏中的聊天系统,凡是能实现用户之间互动操作的系统都存在钓鱼式攻击的风险。 在电子商务蓬勃发展的今天,针对个人财务信息的钓鱼攻击事件数量成直线上升,其中一个主要攻击途径就是跨站脚本执行漏洞。据统计,国内外存在跨站脚本漏洞的网站多达60%, 其中包括许多大型知名网站。 这是一种常见的攻击,当攻击脚本被嵌入企业的Web页面或其它可以访问的Web 资源中,没有保护能力的台式机访问这个页面或资源时,脚本就会被启动,这种攻击可以影响企业内成百上千员工的终端电脑。 网站开发者角度,如何防护XSS攻击? 对XSS最佳的防护应该结合以下两种方法:验证所有输入数据,有效检 测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。 网站用户角度,如何防护XSS攻击? 当你打开一封Email或附件、浏览论坛帖子时,可能恶意脚本会自动执行,因此,在做这些操作时一定要特别谨慎。建议在浏览器设置中关闭

常见安全漏洞的处理及解决方法

相关名词解释、危害与整改建议 1、网站暗链 名词解释 “暗链”就是看不见的网站链接,“暗链”在网站中的链接做的非常隐蔽,短时间内不易被搜索引擎察觉。它和友情链接有相似之处,可以有效地提高PR值。但要注意一点PR值是对单独页面,而不是整个网站。 危害: 网站被恶意攻击者插入大量暗链,将会被搜索引擎惩罚,降低权重值;被插入大量恶意链接将会对网站访问者造成不良影响;将会协助恶意网站(可能为钓鱼网站、反动网站、赌博网站等)提高搜索引擎网站排名。可被插入暗链的网页也意味着能被篡改页面内容。 整改建议: 加强网站程序安全检测,及时修补网站漏洞; 对网站代码进行一次全面检测,查看是否有其余恶意程序存在; 建议重新安装服务器及程序源码,防止无法到检测深度隐藏的恶意程序,导致重新安装系统后攻击者仍可利用后门进入。 2、网页挂马 名词解释 网页挂马是通过在网页中嵌入恶意程序或链接,致使用户计算机在访问该页面时触发执行恶意脚本,从而在不知情的情况下跳转至“放马

站点”(指存放恶意程序的网络地址,可以为域名,也可以直接使用IP地址),下载并执行恶意程序。 危害: 利用IE浏览器漏洞,让IE在后台自动下载黑客放置在网站上的木马并运行(安装)这个木马,即这个网页能下载木马到本地并运行(安装)下载到本地电脑上的木马,整个过程都在后台运行,用户一旦打开这个网页,下载过程和运行(安装)过程就自动开始,从而实现控制访问者电脑或安装恶意软件的目的。 整改建议: 加强网站程序安全检测,及时修补网站漏洞; 对网站代码进行一次全面检测,查看是否有其余恶意程序存在; 建议重新安装服务器及程序源码,防止有深度隐藏的恶意程序无法检测到,导致重新安装系统后攻击者仍可利用后门进入。 3、SQL注入 名词解释 SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL 命令。 危害: 可能会查看、修改或删除数据库条目和表。严重的注入漏洞还可能以当然数据库用户身份远程执行操作系统命令。

常见安全漏洞和解决方案

1.1身份认证安全 1.1.1弱密码 ●密码长度6个字符以上 ●密码字符必须包含大写字母、小写字母和数字,并进行密码复杂度检查 ●强制定期更换密码 1.1.2密码存储安全 密码存储必须使用单向加密 单纯的md5,sha1容易被破解,需要添加随机的盐值salt 涉及支付及财产安全的需要更高的安全措施,单纯的密码加密已经不能解决问题。 可以考虑手机验证码、数字证书、指纹验证。 1.1.3密码传输安全 1.1.3.1密码前端加密 用户名、密码传输过程对称加密,可以使用密钥对的对称加密,前端使用公钥加密,后端使用私钥解密。 前端加密示例

注意:前端密码加密如果还用了md5加密的,先md5加密再rsa加密。 后端解密,省略了其他验证步骤 1.1.3.2启用https协议 登录页面、支付页面等高危页面强制https协议访问。 前端加密和https可以结合使用 1.2SQL注入 1.2.1描述 SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应

用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 1.2.2解决办法 1.养成编程习惯,检查用户输入,最大限度的限制用户输入字符集合。 2.不要把没有检查的用户输入直接拼接到SQL语句中,断绝SQL注入的注入点。 ●SQL中动态参数全部使用占位符方式传参数。 正确 ●如果不能使用占位符的地方一定要检查SQL中的特殊符号和关键字,或者启用用户输 入白名单,只有列表包含的输入才拼接到SQL中,其他的输入不可以。 1.2.3应急解决方案 nginx 过滤规则naxsi模块

常见WEB安全漏洞及整改建议

2. jQuery 跨站脚本漏洞 2.1 问题描述 jQuery是继prototype之后又一个优秀的Javascrīpt框架。 jQuery 1.6.3之前版本中存在跨站脚本漏洞。当使用location.hash选择元素时,通过特制的标签,远程攻击者利用该漏洞注入任意web脚本或HTML。 2.2 整改方法 目前厂商已经发布了升级补丁以修复此安全问题,补丁获取: .ubuntu./usn/USN-1722-1/ 2.3 整改案例 升级jQuery版本。 3. 跨站脚本编制 3.1 问题描述: 跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的容等请求。 风险等级:高 风险围: 任何存在输入/输出方法(包括GET与POST)的页面皆可能存在恶意符号输入缺陷,主要影响应用包括留言板、在线通讯信息、文章发布页面等。 3.2 整改建议: 对用户输入的参数执行严格检测: 1、对产生漏洞模块的传入参数进行有效性检测。int类型的只允许0-9的整型数字;string等字符类型的只允许(1-9,a-z,A-Z)的英文字母; 2、当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式; 3、对穿入参数进行危险字符过滤,禁止('、"、+、%、&、<>、()、;、,.等)特殊字符的传入。 3.3 案例: 加固例(一): /*将login.jsp中[String u =request.getParameter("u");]替换为如下容:*/ String u = request.getParameter("u"); u = u.replace ('<','_'); u = u.replace ('>','_'); u = u.replace('"','_');

web应用常见安全漏洞

SQL Injection(SQL 注入) 严重性 非常高 概述 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 原理 它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句 例子 程序从Http 请求中读取一个sql 查询, String sql ="SELECT * FROM accountWHERE name = 'Bob'AND password = '123'" request.getParameter(sql); ... stmt = conn.createStatement(); ... stmt.execute(sql)) 在执行execute()之前,并未进行对字符串sql检查,因此存在SQL 注入弱点。 所以,当在输入密码(password = '123')之后+加上or '1'='1'则SQL查询语句变为:SELECT * FROM accountWHERE name = 'Bob'AND password = '123'or '1'='1'这样的SQL注入会使得输入任意密码进入程序,这会使WEB程序本身和使用用户产生极大的安全威胁。 后果 ?挂蠕虫、木马、病毒、制作钓鱼网站 ?操纵受害者的浏览器、盗取用户的cookie/referer/ip等信息

防范 1.永远不要信任用户的输入,要对用户的输入输出进行校验,可以通过正则表达式,或限制长度,或者使用过滤函数,对单引号和双"-"进行转换等。 2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。 4. 不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。 5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。 Cross-Site Scripting(跨站点脚本(XSS)) 严重性 非常高 概述 它指的是恶意攻击者往Web页面或者客户端脚本的页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。 原理 Stored XSS(存储式跨站脚本攻击) 这是最强大的一种XSS攻击,所谓存储跨站攻击是指用户提交给Web应用程序的数据首先就被永久的保存在服务器的数据库,文件系统或其他地方,后面且未做任何编码就能显示到Web页面。 Reflected XSS(反射跨站脚本攻击) 当Web客户端提交数据后,服务器端立刻为这个客户生成结果页面,如果结果页面中包含未验证的客户端输入数据,那么就会允许客户端的脚本直接注入到动态页面中。传统的例子是站点搜索引擎,如果我们搜索一个包含特殊HTML字符的字符串时,通常在返回页面

javaWeb安全验证漏洞修复总结

EMA服务管理平台二期扩容安全验收 漏洞修复总结 2011年5月

目录 1WEB安全介绍 (1) 2SQL注入、盲注 (1) 2.1SQL注入、盲注概述 (1) 2.2安全风险及原因 (2) 2.3A PP S CAN扫描建议 (2) 2.4应用程序解决方案 (4) 3会话标识未更新 (7) 3.1会话标识未更新概述 (7) 3.2安全风险及原因分析 (8) 3.3A PP S CAN扫描建议 (8) 3.4应用程序解决方案 (8) 4已解密登录请求 (9) 4.1已解密登录请求概述 (9) 4.2安全风险及原因分析 (9) 4.3A PP S CAN扫描建议 (9) 4.4应用程序解决方案 (9) 5跨站点请求伪造 (11) 5.1跨站点请求伪造概述 (11) 5.2安全风险及原因分析 (12) 5.3A PP S CAN扫描建议 (13) 5.4应用程序解决方案 (13) 6不充分账户封锁 (13) 6.1不充分账户封锁概述 (13) 6.2安全风险及原因分析 (13) 6.3A PP S CAN扫描建议 (14) 6.4应用程序解决方案 (14) 7启用不安全HTTP方法 (14) 7.1启用不安全HTTP方法概述 (14) 7.2安全风险及原因分析 (15) 7.3A PP S CAN扫描建议 (15) 7.4应用程序解决方案 (15) 8HTTP注释敏感信息 (16) 8.1HTTP注释敏感信息概述 (16) 8.2安全风险及原因分析 (16) 8.3A PP S CAN扫描建议 (16) 8.4应用程序解决方案 (17) 9发现电子邮件地址模式 (17)

web应用的漏洞分类

Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web 访问中,大多数应用不是静态的网页浏览,而是涉及到服务器侧的动态处理。此时,如果Java、PHP、ASP 等程序语言的编程人员的安全意识不足,对程序参数输入等检查不严格等,会导致Web应用安全问题层出不穷。 本文根据当前Web应用的安全情况,列举了Web应用程序常见的攻击原理及危害,并给出如何避免遭受Web 攻击的建议。 1Web应用漏洞原理 Web应用攻击是攻击者通过浏览器或攻击工具,在URL或者其它输入区域(如表单等),向Web服务器发送特殊请求,从中发现Web应用程序存在的漏洞,从而进一步操纵和控制网站,查看、修改未授权的信息。 1.1Web应用的漏洞分类 1、信息泄露漏洞 信息泄露漏洞是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。 造成信息泄露主要有以下三种原因: ?Web服务器配置存在问题,导致一些系统文件或者配置文件暴露在互联网中; ?Web服务器本身存在漏洞,在浏览器中输入一些特殊的字符,可以访问未授权的文件或者动态脚本文件源码; ?Web网站的程序编写存在问题,对用户提交请求没有进行适当的过滤,直接使用用户提交上来的数据。 2、目录遍历漏洞 目录遍历漏洞是攻击者向Web服务器发送请求,通过在URL中或在有特殊意义的目录中附加“../”、或者附加“../”的一些变形(如“..\”或“..//”甚至其编码),导致攻击者能够访问未授权的目录,以及在Web服务器的根目录以外执行命令。 3、命令执行漏洞 命令执行漏洞是通过URL发起请求,在Web服务器端执行未授权的命令,获取系统信息,篡改系统配置,控制整个系统,使系统瘫痪等。 命令执行漏洞主要有两种情况:

Web应用中常见39种不同的安全漏洞漏洞分析及检查方法

Web应用中常见39种不同的安全漏洞漏洞分析及检查方法 1.1SQL注入漏洞 风险等级:高危 漏洞描述: SQL注入漏洞产生的原因是网站应用程序在编写时未对用户提交至服务器的数据进行合法性校验,即没有进行有效地特殊字符过滤,导致网站服务器存在安全风险,这就是SQL Injection,即SQL注入漏洞。 漏洞危害: 1) 机密数据被窃取; 2) 核心业务数据被篡改; 3) 网页被篡改; 4) 数据库所在服务器被攻击从而变为傀儡主机,导致局域网(内网)被入侵。 修复建议: 1)在网页代码中对用户输入的数据进行严格过滤;(代码层) 2)部署Web应用防火墙;(设备层) 3)对数据库操作进行监控。(数据库层) 代码层最佳防御sql漏洞方案:采用sql语句预编译和绑定变量,是防御sql注入的最佳方法。 原因:采用了PreparedStatement,就会将sql语句:"select id, no from user where id=?" 预先编译好,也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的语法结构了,因为语法分析已经完成了,而语法分析主要是分析sql

命令,比如select ,from ,where ,and, or ,order by 等等。所以即使你后面输入了这些sql命令,也不会被当成sql命令来执行了,因为这些sql命令的执行,必须先的通过语法分析,生成执行计划,既然语法分析已经完成,已经预编译过了,那么后面输入的参数,是绝对不可能作为sql命令来执行的,只会被当做字符串字面值参数,所以sql语句预编译可以防御sql注入。 其他防御方式:正则过滤 1.2目录遍历漏洞 风险等级:中危 漏洞描述: 通过该漏洞可以获取系统文件及服务器的配置文件。利用服务器API、文件标准权限进行攻击。 漏洞危害: 黑客可获得服务器上的文件目录结构,从而下载敏感文件。 修复建议: 1)通过修改配置文件,去除中间件(如IIS、apache、tomcat)的文件目录索引功能 2)设置目录权限 3)在每个目录下创建一个空的index.html页面。 1.3跨站脚本漏洞 即XSS漏洞,利用跨站脚本漏洞可以在网站中插入任意代码,它能够获取网站管理员或普通用户的cookie,隐蔽运行网页木马,甚至格式化浏览者的硬盘。

常见WEB开发安全漏洞原因分析及解决

常见WEB开发安全漏洞原因分析及解决

目录 1会话标识未更新 (3) 1.1原因 (3) 1.2解决 (3) 2SQL注入 (3) 2.1原因 (3) 2.2解决 (5) 3XSS跨站脚本编制 (5) 3.1原因 (5) 3.2解决 (5) 4XSRF跨站请求伪造 (7) 4.1原因 (7) 4.2解决 (8) 5登录错误消息凭证枚举(不充分帐户封锁) (8) 5.1原因 (8) 5.2解决 (8) 6HTML注释敏感信息泄露 (9) 6.1原因 (9) 6.2解决 (9) 7应用程序错误 (9) 7.1原因 (9) 7.2解决 (9) 8已解密的登录请求 (9) 8.1原因 (9) 8.2解决 (9) 9启用了不安全的HTTP方法 (10) 9.1原因 (10) 9.2解决 (10) 10禁止页面缓存 (11) 10.1原因 (11) 10.2解决 (11) 11数据库错误模式 (11) 11.1原因 (11) 11.2解决 (12)

1 会话标识未更新 1.1 原因 在用户进入登录页面,但还未登录时,就已经产生了一个session,用户输入信息,登录以后,session的id不会改变,也就是说还是以前的那个session(事实上session也确实不会改变,因为没有建立新session,原来的session也没有被销毁)。 很多人只是让会话invalidate没有用(request.getSession().invalidate();),是因为invalidate方法不是真正的将session销毁,只是将session中的内容清空,所以当invalidate以后再新建session,新建的session其实不是新的,是将之前的session重新启用了。于是session的id 不变就不奇怪了。只有cookie失效掉,才能换成新的session id 1.2 解决 在登录页面上加上一段代码: request.getSession().invalidate() ; //清空session if (request.getCookies()!=null) { Cookie cookie = request.getCookies()[0]; // 获取cookie cookie.setMaxAge(0); // 让cookie过期 } 注:会话失效后,请不要在代码前面使用SESSION保存数据。 2 SQL注入 2.1 原因 1. 没有正确过滤转义字符 在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL 语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞: statement := "SELECT * FROM users WHERE name = '" + userName + "'; " 将用户名变量(即username)设置为:a' or 't'='t,此时原始语句发生了变化. 2. 用户输入错误的数据类型 如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。

相关文档
相关文档 最新文档