国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

這次我們聊一下Cookie

aaron / 728人閱讀

摘要:針對這個(gè)存儲(chǔ)信息大小,還是做了一些限制的。關(guān)于限制客戶端去訪問的問題,這樣做的目的就是為了保證安全。當(dāng)我們的網(wǎng)頁遭受了攻擊,有一段惡意的腳本插到了網(wǎng)頁中。但同樣要注意,和同樣需要和之前的保持一致。

會(huì)話跟蹤技術(shù)用來跟蹤用戶的整個(gè)會(huì)話,會(huì)話就是用戶在登錄網(wǎng)站后的一系列動(dòng)作,常用的是Cookie和Session,兩者的唯一區(qū)別是前者在瀏覽器記錄信息,后者在服務(wù)器。今天只是簡單的說下Cookie,知道的就算看個(gè)熱鬧,不知道的希望能幫到你。

以上圖片是我抓包得來,從上面的圖片可以看出,cookie中的值是key-value格式的,而且是通過一個(gè)分號和空格來間隔的。

cookie的流程是:服務(wù)器設(shè)置cookie---通過response將cookie傳到前端保存在瀏覽器中---前端訪問后端接口時(shí)在request header中自動(dòng)添加上cookie---服務(wù)端接收到cookie做一些業(yè)務(wù)操作。

那么cookie是怎么工作的呢?首先cookie對于瀏覽器來說只是一個(gè)純文本,瀏覽器的安裝目錄下是會(huì)有一個(gè)專門的文件夾用來保存各個(gè)網(wǎng)站的cookie。當(dāng)從前端發(fā)送請求到后端的時(shí)候,瀏覽器會(huì)自動(dòng)的檢測下是否有cookie,如果有就會(huì)添加到請求的頭信息中,以上是瀏覽器自動(dòng)幫我們做的。

存儲(chǔ)到cookie中的數(shù)據(jù),瀏覽器會(huì)自動(dòng)的放在http請求中,只有是每次請求都必須要發(fā)送給服務(wù)器的數(shù)據(jù)才會(huì)放到cookie,比如身份驗(yàn)證信息。如果是不必要的,必然會(huì)增加網(wǎng)絡(luò)開銷。針對這個(gè)存儲(chǔ)信息大小,cookie還是做了一些限制的。每個(gè)域名下的cookie 的大小最大為4KB,每個(gè)域名下的cookie數(shù)量最多為20個(gè)(但很多瀏覽器廠商在具體實(shí)現(xiàn)時(shí)支持大于20個(gè))。

cookie的屬性包括:過期時(shí)間;域名、路徑等等,這些可以自己設(shè)置,如果不手動(dòng)設(shè)置就會(huì)使用cookie的默認(rèn)設(shè)置。

expires

過期時(shí)間,expires必須是 GMT 格式的時(shí)間(可以通過new Date().toGMTString()或者 new Date().toUTCString() 來獲得)。

如果沒有設(shè)置的話,那么默認(rèn)的有效期就是session,就是會(huì)話cookie,這種會(huì)在瀏覽器關(guān)掉的時(shí)候就沒有了。

domain和path

domain是域名,path是路徑,兩者組合起來就構(gòu)成了 URL,domain和path一起來限制 cookie 能被哪些 URL 訪問。

就是說在訪問這個(gè)域名或者是該域名的子域名下,目錄是在該目錄或者是在該目錄下的子目錄下的時(shí)候,瀏覽器會(huì)自動(dòng)把cookie放到請求頭部中。

如果沒有設(shè)置這兩個(gè)選項(xiàng),則會(huì)使用默認(rèn)值。domain的默認(rèn)值為設(shè)置該cookie的網(wǎng)頁所在的域名,path默認(rèn)值為設(shè)置該cookie的網(wǎng)頁所在的目錄。

兩點(diǎn)需要注意:domain可以設(shè)置為頁面本身的域名,或者是該域名的父域名,比如說,www.sougou.com,可是設(shè)置為www.sougou.com,也可以設(shè)置為sougou.com。

secure

secure選項(xiàng)用來設(shè)置cookie只在確保安全的請求中才會(huì)發(fā)送。當(dāng)請求是HTTPS或者其他安全協(xié)議時(shí),包含 secure 選項(xiàng)的 cookie才能被發(fā)送至服務(wù)器。

默認(rèn)情況下,cookie不會(huì)帶secure選項(xiàng)(即為空)。所以默認(rèn)情況下,不管是HTTPS協(xié)議還是HTTP協(xié)議的請求,cookie 都會(huì)被發(fā)送至服務(wù)端。但要注意一點(diǎn),secure選項(xiàng)只是限定了在安全情況下才可以傳輸給服務(wù)端,但并不代表你不能看到這個(gè) cookie。

httpOnly

這個(gè)選項(xiàng)用來設(shè)置cookie是否能通過 js 去訪問。默認(rèn)情況下,cookie不會(huì)帶httpOnly選項(xiàng)(即為空),所以默認(rèn)情況下,客戶端是可以通過js代碼去訪問(包括讀取、修改、刪除等)這個(gè)cookie的。當(dāng)cookie帶httpOnly選項(xiàng)時(shí),客戶端則無法通過js代碼去訪問操作(包括讀取、修改、刪除等)這個(gè)cookie。

在客戶端是不能通過js代碼去設(shè)置一個(gè)httpOnly類型的cookie的,這種類型的cookie只能通過服務(wù)端來設(shè)置。

關(guān)于限制客戶端去訪問cookie的問題,這樣做的目的就是為了保證安全。

試想:如果任何 cookie 都能被客戶端通過document.cookie獲取會(huì)發(fā)生什么。當(dāng)我們的網(wǎng)頁遭受了 XSS 攻擊,有一段惡意的script腳本插到了網(wǎng)頁中。這段script腳本做的事情是:通過document.cookie讀取了用戶身份驗(yàn)證相關(guān)的 cookie,并將這些 cookie 發(fā)送到了攻擊者的服務(wù)器。攻擊者輕而易舉就拿到了用戶身份驗(yàn)證信息,于是就可以利用此用戶信息訪問目標(biāo)服務(wù)器(因?yàn)楣粽哂泻戏ǖ挠脩羯矸蒡?yàn)證信息,所以會(huì)通過你服務(wù)器的驗(yàn)證)。

下面的這段是從項(xiàng)目中找到的一段關(guān)于設(shè)置cookie的代碼:

public void addCookie(HttpServletResponse response, String cookieValue) {
       if (this.cookieDomain == null) {
           throw new IllegalArgumentException("cookies domain is not null");
       } else {
           Cookie cookie = new Cookie(this.coookieName, cookieValue);
           cookie.setPath(this.cookiePath);
           if (this.cookieDomain != null) {
               cookie.setDomain(this.cookieDomain);
           }

           if (this.cookieMaxAge != null) {
               cookie.setMaxAge(this.cookieMaxAge);
           }

           if (this.cookieSecure) {
               cookie.setSecure(true);
           }

           if (this.cookieHttpOnly) {
               cookie.setHttpOnly(true);
           }

           response.addCookie(cookie);
       }
   }


什么時(shí)候 cookie 會(huì)被覆蓋:cookie中的name、domain、path 這3個(gè)字段數(shù)值都相同的時(shí)候。

如果顯式設(shè)置了 domain,則設(shè)置成什么,瀏覽器就存成什么;但如果沒有顯式設(shè)置,則瀏覽器會(huì)自動(dòng)取 url 的 host 作為 domain 值;

修改 cookie。

要想修改一個(gè)cookie,只需要重新賦值就行,舊的值會(huì)被新的值覆蓋。但要注意一點(diǎn),在設(shè)置新cookie時(shí),path、domain這兩個(gè)字段一定要和之前保持一樣。否則是不會(huì)確定為之前的cookie,而是添加了一個(gè)新的cookie。

刪除 cookie

刪除一個(gè)cookie 也是一樣的,也是重新賦值,只要將這個(gè)新cookie的expires選項(xiàng)設(shè)置為一個(gè)過去的時(shí)間點(diǎn)或者是直接賦值為0就行了。但同樣要注意,path和domain同樣需要和之前的cookie保持一致。

在開發(fā)的過程中,用戶的登錄態(tài)是大部分是放到cookie里,因?yàn)閏ookie自己有著完整的一套配置,包括上文講到的各種屬性和安全問題,總體來說還是比較方便的。

東西不多,也很簡單,希望每個(gè)讀者都能完全消化。

這樣的分享會(huì)一直持續(xù),你的關(guān)注、轉(zhuǎn)發(fā)和點(diǎn)贊是對我最大的支持,感謝。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73956.html

相關(guān)文章

  • 【前端工程師手冊】總結(jié)一下前端存儲(chǔ)

    摘要:如果不指定,默認(rèn)為當(dāng)前文檔的主機(jī)不包含子域名。標(biāo)識指定了主機(jī)下的哪些路徑可以接受該路徑必須存在于請求中。具體的使用參考教程和類似,但是可以直接使用來操作,具體的參看參考聊一聊前端存儲(chǔ)那些事兒聊一聊 cookie 為什么會(huì)有cookie http協(xié)議的無狀態(tài),所謂無狀態(tài)即是服務(wù)器并不是知道這次的請求和上次的請求是不是同一個(gè)client發(fā)來的,就好比你經(jīng)常去一家超市買東西,老板并不記得你是...

    array_huang 評論0 收藏0
  • [系列]前端存儲(chǔ)那些事兒

    摘要:如圖圖顧名思義,,是級別的存儲(chǔ)。如筆者寫的一篇淺析文章聊一聊百度移動(dòng)端首頁前端速度那些事兒讀者們可以嘗試使用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog/frontenddriver 在web開發(fā)越來越復(fù)雜的今天,前端擁有的能力也越來越多。其中最重要的一項(xiàng)莫過于web存儲(chǔ)。...

    caige 評論0 收藏0
  • [系列]百度移動(dòng)端首頁前端速度那些事兒

    摘要:要快,但是我們的服務(wù)也必須萬無一失,后續(xù)我會(huì)分享百度移動(dòng)端首頁的前端架構(gòu)設(shè)計(jì)那么這樣的優(yōu)化,是如何做到的呢,又如何兼顧穩(wěn)定性,架構(gòu)性,與速度呢別急,讓我們把這些優(yōu)化一一道來。百度移動(dòng)端首頁的很多就是這樣緩存在客戶端的。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog/fronte...

    The question 評論0 收藏0
  • [系列]WEB前端安全那些事兒

    摘要:所以今天,就和大家一起聊一聊前端的安全那些事兒。我們就聊一聊前端工程師們需要注意的那些安全知識。殊不知,這不僅僅是違反了的標(biāo)準(zhǔn)而已,也同樣會(huì)被黑客所利用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog... 隨著互聯(lián)網(wǎng)的發(fā)達(dá),各種WEB應(yīng)用也變得越來越復(fù)雜,滿足了用戶的各種需求...

    AZmake 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<