欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx cookie有效期討論小結(jié)

 更新時間:2020年05月19日 10:36:59   作者:yerikyu  
這篇文章主要介紹了nginx cookie有效期討論小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

cookie的安全隱患

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

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

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

Cookie 的工作原理

第一次訪問網(wǎng)站的時候,瀏覽器發(fā)出請求,服務(wù)器響應(yīng)請求后,會將Cookie放入到響應(yīng)請求中,在瀏覽器第二次發(fā)請求的時候,會把Cookie帶過去,服務(wù)端會辨別用戶身份,當(dāng)然服務(wù)器也可以修改Cookie內(nèi)容.

Cookie 的生命周期

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

修改cookie有效期

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

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

修改思路

利用Openrestyresty.cookie進行修改。該庫是用來對OpenRestyHTTP cookie操作??梢杂脕頌?code>Nginx解析HTTP Cookie header,并返回Cookie中的每個字段。比如設(shè)置name,value,httponly等屬性

有效期為24h

這里將expires設(shè)置為有效期是一天(24h)即當(dāng)前系統(tǒng)時間(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分,說明我們的修改配置是有效的,可以通過該參數(shù)進行Cookie修改,只要到達這個時間點,該Cookie便會失效,此時用戶需要重新登錄。

有效期為創(chuàng)世紀(jì)

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

 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號,這個時間點毫無懸念的已經(jīng)過時了,當(dāng)然了,在生產(chǎn)環(huán)境中這么配置。是要被關(guān)進小黑屋探討人生價值的,用戶遇到這樣的Cookie配置是無論如何都無法登陸成功的

有效期為當(dāng)前

因為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,
 })

結(jié)論

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

參考文檔:

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

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

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

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

相關(guān)文章

  • 服務(wù)器的負(fù)載均衡nginx+tomcat實現(xiàn)動靜分離

    服務(wù)器的負(fù)載均衡nginx+tomcat實現(xiàn)動靜分離

    這篇文章主要為大家介紹了服務(wù)器的負(fù)載均衡nginx+tomcat實現(xiàn)動靜分離的案例實施步驟以及環(huán)境詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • 為Node.js程序配置使用Nginx服務(wù)器的簡明教程

    為Node.js程序配置使用Nginx服務(wù)器的簡明教程

    這篇文章主要介紹了為Node.js程序配置使用Nginx服務(wù)器的簡明教程,Nginx與Node自帶的服務(wù)器一樣都擁有非阻塞的高性能,需要的朋友可以參考下
    2016-01-01
  • Nginx 重定向時獲取域名的方法示例

    Nginx 重定向時獲取域名的方法示例

    本篇文章主要介紹了Nginx 重定向時獲取域名的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Nginx配置WebSocket代理的示例代碼

    Nginx配置WebSocket代理的示例代碼

    本文提供了關(guān)于Nginx的配置和日志記錄的詳細(xì)指南,介紹了如何使用whereis命令查找Nginx路徑,并通過man命令查看手冊,同時,詳解了解Nginx訪問日志的配置方法及參數(shù)含義,并分享了Nginx代理WebSocket的配置示例,感興趣的可以了解一下
    2024-10-10
  • 簡單指南:在Linux上安裝Nginx

    簡單指南:在Linux上安裝Nginx

    本文將介紹如何在Linux系統(tǒng)下安裝Nginx,Nginx是一款高性能的Web服務(wù)器和反向代理服務(wù)器,被廣泛用于構(gòu)建高可靠性、高性能的網(wǎng)站和應(yīng)用程序,通過本文的指導(dǎo),您將學(xué)會如何在Linux系統(tǒng)上安裝Nginx,并進行基本的配置,需要的朋友可以參考下
    2023-10-10
  • 解讀nginx反向代理location和proxy_pass的映射關(guān)系

    解讀nginx反向代理location和proxy_pass的映射關(guān)系

    這篇文章主要介紹了解讀nginx反向代理location和proxy_pass的映射關(guān)系,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Nginx跨域問題解析與解決

    Nginx跨域問題解析與解決

    本地運行一個項目,要訪問外域的api接口,存在跨域問題,下面這篇文章主要給大家介紹了關(guān)于如何使用Nginx解決跨域問題的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Nginx 負(fù)載均衡算法及故障轉(zhuǎn)移解析

    Nginx 負(fù)載均衡算法及故障轉(zhuǎn)移解析

    這篇文章主要介紹了Nginx 負(fù)載均衡算法及故障轉(zhuǎn)移解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Filebeat 采集 Nginx 日志的方法

    Filebeat 采集 Nginx 日志的方法

    這篇文章主要介紹了Filebeat 采集 Nginx 日志的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 詳解Nginx中的重定向功能

    詳解Nginx中的重定向功能

    這篇文章主要介紹了詳解Nginx中的重定向功能,Nginx是一款基于事務(wù)的無阻塞的高性能服務(wù)器,需要的朋友可以參考下
    2015-07-07

最新評論