婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > nginx cookie有效期討論小結

nginx cookie有效期討論小結

熱門標簽:網站上插入地圖標注內容 鶴壁電銷外呼系統怎么安裝 地圖標注需要現場嗎 企業400電話辦理哪正規 工廠位置地圖標注 地圖標注企業名稱侵權案件 400電話辦理哪家好廠商 重慶營銷外呼系統排名 繽客網注冊時地圖標注出不來

每一次訪問都會在瀏覽器生成Cookie,那么Cookie的存在對于用戶來說是好還是壞呢?說實話,這玩意的存在確實會帶來一系列的問題,有趣的是幾乎每個站點都難以離開Cookie,由于Cookie的使用因其貌似簡單,而很容易被人輕視。最近在開發過程中,審視應用中的Cookie代碼,幾乎只需要很小的代價就可以獲得巨大的安全收益。因此寫下這份筆記加深記憶。

cookie的安全隱患

在實際的應用場景中,Cookie被用來做得最多的一件事是保持身份認證的服務端狀態。這種保持可能是基于會話Session的,也有可能是持久性的。然而不管哪一種,身份認證Cookie中包含的服務端票據Ticket一旦泄露,那么服務端將很難區分帶有此票據的用戶請求是來自于真實的用戶,或者是來自惡意的***者。

在實際案例中,造成Cookie泄露最多的途徑,是通過跨站腳本(如 XSS, Cross Site Script)漏洞。者可以通過一小段JavaScript代碼,偷竊到代表用戶身份的重要的Cookie標識。由于跨站腳本漏洞是如此的普遍(不要以為簡單的HTML Encode 就可以避免被跨站,跨站是一門很深的學問,以至于在業界衍生出一個專用的名詞:跨站師),幾乎每一個網站都無法避免,所以這種方式是實際中被普遍使用的一種手段。

事實上避免出現這種問題的首要秘訣就是盡所有的可能,給你的Cookie加上HttpOnly的標簽。HttpOnly 的具體使用不在本文的討論范圍內。

Cookie 的工作原理

第一次訪問網站的時候,瀏覽器發出請求,服務器響應請求后,會將Cookie放入到響應請求中,在瀏覽器第二次發請求的時候,會把Cookie帶過去,服務端會辨別用戶身份,當然服務器也可以修改Cookie內容.

Cookie 的生命周期

創建Cookie的時候,會給Cookie指定一個值:Expire,它就是指定Cookie的有效期,也就是Cookie的生命周期,超出設置的這個生命周期,Cookie就會被清除。如果給這個值Expire設置為0或者負值,那么這樣的設置就是在關閉瀏覽器時,就會清除Cookie,這種方式更加安全。

修改cookie有效期

通常情況下,我們的web應用服務都會通過nginx進行發布,這個時候,我們可以通過在nginx上面進行配置文件的修改來改變cookie的有效期,由于筆者最近在基于openrestynginx進行功能開發。正好趁此機會展開對Cookie有效期的狀態測試.

上文在Cookie的生命周期中提到為了有效期的安全性,我們可以為Cookie設置合理的有效期。如為0或者負值,那么其效果是怎樣的呢?不妨看一下

修改思路

利用Openrestyresty.cookie進行修改。該庫是用來對OpenRestyHTTP cookie操作。可以用來為Nginx解析HTTP Cookie header,并返回Cookie中的每個字段。比如設置name,value,httponly等屬性

有效期為24h

這里將expires設置為有效期是一天(24h)即當前系統時間(ngx.time())加24h

 local cookie = resty_cookie:new()

 local ok, err = cookie:set({
  key = "middle_session",
  value = session,
  path = "/",
  secure = false,
  httponly = true,
  expires = ngx.cookie_time(ngx.time() + 60 * 60 * 24),
  domain = ngx.host,
 })

效果

在這里可以看到我們cookie的有效時間為5月13號的14點04分,說明我們的修改配置是有效的,可以通過該參數進行Cookie修改,只要到達這個時間點,該Cookie便會失效,此時用戶需要重新登錄。

有效期為創世紀

這里將expires設置為有效期是-1,這里可以觀察到cookie使用的時間的是1970年,也就是UNIX紀元的元時間

 local cookie = resty_cookie:new()

 local ok, err = cookie:set({
  key = "middle_session",
  value = session,
  path = "/",
  secure = false,
  httponly = true,
  expires = ngx.cookie_time(-1),
  domain = ngx.host,
 })

從下圖中可以看到Cookie有效期是1970年1月1號,這個時間點毫無懸念的已經過時了,當然了,在生產環境中這么配置。是要被關進小黑屋探討人生價值的,用戶遇到這樣的Cookie配置是無論如何都無法登陸成功的

有效期為當前

因為ngx.cookie_time會返回一個格式化的字符串,可以用作Cookie過期時間,我們自己手動指定過期時間。通過這個方法可以測試上文說到的Cookie自動清除的效果

指定過期時間為-1

 local cookie = resty_cookie:new()

 local ok, err = cookie:set({
  key = "middle_session",
  value = session,
  path = "/",
  secure = false,
  httponly = true,
  expires = -1,
  domain = ngx.host,
 })

指定過期時間為0

 local cookie = resty_cookie:new()

 local ok, err = cookie:set({
  key = "middle_session",
  value = session,
  path = "/",
  secure = false,
  httponly = true,
  expires = 0,
  domain = ngx.host,
 })

結論

這里配置-10在現實意義上跟配置元時間是一樣的,不過好處在于,不用關小黑屋啦。Cookie只在當前頁面上有效,一旦關閉瀏覽器,這個Cookie就會被瀏覽器清除,此時不用再考慮安全性問題。

參考文檔:

Cookie 安全漫談 https://www.infoq.cn/article/cookie-security

把cookie聊清楚 https://juejin.im/post/59d1f59bf265da06700b0934

淺談cookie安全 https://zhuanlan.zhihu.com/p/58666986

到此這篇關于nginx cookie有效期討論小結的文章就介紹到這了,更多相關nginx cookie有效期 內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:東莞 96 克拉瑪依 常州 棗莊 鹽城 渭南 日照

巨人網絡通訊聲明:本文標題《nginx cookie有效期討論小結》,本文關鍵詞  nginx,cookie,有效期,討論,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《nginx cookie有效期討論小結》相關的同類信息!
  • 本頁收集關于nginx cookie有效期討論小結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 特克斯县| 调兵山市| 漳平市| 万山特区| 孟津县| 富蕴县| 灵石县| 乐都县| 夏河县| 敦化市| 开鲁县| 奉节县| 伽师县| 贵阳市| 天镇县| 滕州市| 贵南县| 南京市| 南城县| 普兰店市| 乡宁县| 舞钢市| 图们市| 崇信县| 寻甸| 镇坪县| 抚松县| 赞皇县| 洪雅县| 嘉定区| 旬邑县| 开封县| 岳阳县| 淳安县| 临江市| 揭西县| 尖扎县| 永德县| 如皋市| 嘉义县| 合山市|