成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

項(xiàng)目填坑記-cookie

Lyux / 2214人閱讀

摘要:好啦,再次大功告成。由萬(wàn)維網(wǎng)協(xié)會(huì)研制,它為用戶提供了對(duì)自己公開信息的更多的控制。支持的站點(diǎn)可以為瀏覽者聲明他們的隱私策略。果然在瀏覽器中打開設(shè)置隱私阻止永不,打開上述設(shè)置之后,跨域種瞬間成功。

前段時(shí)間開發(fā)了一個(gè)用戶登錄的模塊,需求很簡(jiǎn)單,用戶輸入手機(jī)號(hào)和驗(yàn)證碼,我們就會(huì)返回給用戶一套身份信息并保存在cookie里面。so easy,于是就有以下代碼:

// 大致意思如下,并非真實(shí)模塊中的代碼
document.cookie = "token=xxxxxxxx;domain=xxx.com;path=/;expires=xxxx";

大功告成!但是,問題也來(lái)了,這樣做并不安全,用戶的信息可以輕易的通過JS獲取,XSS,CSRF變的輕而易舉。于是,我們將種cookie的操作交給了服務(wù)端,并給其中一個(gè)cookie加上了httponly屬性,這個(gè)屬性僅僅保證我們的cookie不能通過document.cookie來(lái)獲取,減小了用戶cookie被竊取的概率。

Set-Cookie:token1=xxxxx; expires=GMT Date; Max-Age=xxx; path=/; domain=xxx.com
Set-Cookie:token2=xxxxx; expires=GMT Date; Max-Age=xxx; path=/; domain=xxx.com; httponly

好啦,再次大功告成。但是,過了一段時(shí)間,我們的網(wǎng)站多啦,同時(shí)存在了幾個(gè)域名,我們需要在用戶登錄的時(shí),同時(shí)給多個(gè)域種cookie。OK,很簡(jiǎn)單,我們只需要調(diào)用多個(gè)域名下的種cookie的接口,不就行啦?

事情沒有這么簡(jiǎn)單,經(jīng)過測(cè)試之后發(fā)現(xiàn)我們的cookie在某些特定的瀏覽器下有可能跨域種cookie失敗。為什么呢?經(jīng)過一番google之后,發(fā)現(xiàn)其實(shí)是一些瀏覽器對(duì)于跨域種cookie做了一些限制,我們需要用一些方法來(lái)解決限制。

P3P由萬(wàn)維網(wǎng)協(xié)會(huì)研制,它為Web用戶提供了對(duì)自己公開信息的更多的控制。支持P3P的Web站點(diǎn)可以為瀏覽者聲明他們的隱私策略。

其實(shí)上面都是廢話,大概意思就是說你要在你的http header里面加入一個(gè)P3P協(xié)議的說明,詳細(xì)信息可以看這個(gè)歪果仁寫的文章"P3P, Cookies and IE6.0: A Case Study"

P3P:CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

很開心,再次大功告成。BUT,現(xiàn)實(shí)總是這么殘酷,safari上仍然不能跨域種cookie。這又是為什么呢?根據(jù)蘋果爸爸的尿性來(lái)推測(cè),肯定又是他做了什么安全性的限制。果然!在safari瀏覽器中打開設(shè)置 > 隱私 > 阻止cookie > 永不,打開上述設(shè)置之后,跨域種cookie瞬間成功。但是,我們總不能要求用戶一個(gè)個(gè)去打開這個(gè)設(shè)置吧?所以還要另尋解決辦法。

后來(lái)我們發(fā)現(xiàn)其實(shí)對(duì)于safari來(lái)說所謂的第三方需要滿足兩個(gè)條件:

用戶從來(lái)沒有主動(dòng)訪問該域名

該域名并沒有作為第一方種過cookie

基于以上兩點(diǎn)我們做了2個(gè)操作:

通過http 302的方式來(lái)跨域種cookie

在用戶訪問我們的域名之后,默認(rèn)在訪問域名下種下一個(gè)記錄性的cookie,減小我們的域名種Cookie失敗的概率

好啦,這次真的大功告成啦,寫一篇流水賬記錄一下這個(gè)坑。

博客地址:ssh.today,歡迎關(guān)注

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82078.html

相關(guān)文章

  • 坑記:Uncaught RangeError: Maximum call stack size e

    摘要:今天遇到了一個(gè)錯(cuò)誤,翻譯一下就是堆棧溢出,很好奇就是一個(gè)簡(jiǎn)單請(qǐng)求怎么會(huì)報(bào)這個(gè)錯(cuò)誤,研究了一下,發(fā)現(xiàn)犯了一個(gè)很低級(jí)的錯(cuò)誤,的參數(shù)錯(cuò)誤了是未定義的變量,值為空,然后導(dǎo)致了這個(gè)問題,但是為什么,暫時(shí)還沒有搞明白,如果哪位對(duì)源代碼比較熟悉,知道是怎 今天遇到了一個(gè)錯(cuò)誤, showImg(https://segmentfault.com/img/bVHYYa?w=1424&h=233);翻譯一下...

    import. 評(píng)論0 收藏0
  • 支付開發(fā)坑記之微信支付

    摘要:前者集成在中,后者主要是為微信用戶提供了另一種支付方式需要在微信的內(nèi)置瀏覽器中打開頁(yè)面,再調(diào)起微信支付。步驟商戶后臺(tái)收到用戶支付單,調(diào)用微信支付統(tǒng)一下單接口。拿到所有參數(shù)后,就可以在頁(yè)面中發(fā)起微信支付的請(qǐng)求了。 微信支付,支持的支付方式比較多:有掃碼支付,刷卡支付,APP支付和公眾號(hào)支付。其中,APP和網(wǎng)站上最常用的就是APP支付和公眾號(hào)支付。前者集成在APP中,后者主要是為微信用戶提...

    zhunjiee 評(píng)論0 收藏0
  • 支付開發(fā)坑記之支付寶

    摘要:原文地址支付支付步驟為獲取支付寶的配置信息。將得到的數(shù)據(jù)請(qǐng)求支付寶客戶端進(jìn)行支付。端將拼接好的字符串拿去請(qǐng)求支付寶客戶端即可調(diào)起支付寶進(jìn)行支付。向支付寶申請(qǐng)新訂單,獲取支付。成功請(qǐng)求回來(lái)后,就可以向支付寶發(fā)出一次支付請(qǐng)求。 支付寶在所有支付方式中最好開發(fā)的了,因?yàn)槲臋n比較清晰,而且開發(fā)起來(lái)也比較簡(jiǎn)單。因此,支付寶的坑是相對(duì)較少的。原文地址 APP支付 APP支付步驟為: 獲取支付寶的...

    chanjarster 評(píng)論0 收藏0
  • React和React-native踩坑記

    摘要:坑請(qǐng)求跨域問題使用時(shí),其中的已經(jīng)默默幫你做了很多事,都幫你配置好了所以你發(fā)現(xiàn)你找不到相關(guān)的配置文件。放到服務(wù)器上仍然是空白的無(wú)法訪問。原來(lái)是因?yàn)槁窂絾栴},簡(jiǎn)單配置一下即可。上文提到過已經(jīng)幫我們做好了很多事,方便在此,麻煩也在此。 react坑: 1、fetch請(qǐng)求cookie跨域問題使用creat-react-app時(shí),其中的react-script已經(jīng)默默幫你做了很多事,都幫你配置好...

    yck 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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