瀏覽器安全

頁(yè)面白屏

首頁(yè)白屏的原因是打包后的js和css文件過(guò)大秒咨,瀏覽器初始訪(fǎng)問(wèn)網(wǎng)站時(shí)慌盯,會(huì)先加載該項(xiàng)目的js和css文件,加載完成后才會(huì)進(jìn)行頁(yè)面渲染姚炕。如果打包的文件過(guò)大摊欠,加載時(shí)間就會(huì)變長(zhǎng)丢烘,出現(xiàn)視覺(jué)上的頁(yè)面白屏.

①使用懶加載,打包后才根據(jù)路由生成多個(gè)js和css文件些椒,當(dāng)訪(fǎng)問(wèn)到對(duì)應(yīng)的路由時(shí)播瞳,才加載對(duì)應(yīng)的文件。在移動(dòng)端頁(yè)面的首頁(yè)時(shí)免糕,先加載可視區(qū)域的內(nèi)容赢乓,剩下的內(nèi)容等它進(jìn)入可視區(qū)域后再按需加載。

靜態(tài)資源緩存

靜態(tài)資源長(zhǎng)期不需要修改的说墨,使用強(qiáng)緩存骏全,設(shè)置Cache-Control實(shí)現(xiàn),設(shè)置Cache-Control:max-age=31536000,瀏覽器在一年內(nèi)直接使用本地緩存文件尼斧,不向服務(wù)器發(fā)送請(qǐng)求姜贡。

資源隨時(shí)變動(dòng),設(shè)置ETag實(shí)現(xiàn)協(xié)商緩存棺棵,初次請(qǐng)求資源時(shí)楼咳,設(shè)置ETag,并返回200,之后請(qǐng)求時(shí)帶上If-none-match字段烛恤,詢(xún)問(wèn)服務(wù)器當(dāng)前版本是否可用母怜。

③SSR

服務(wù)端渲染,在服務(wù)端將渲染邏輯處理好缚柏,然后將處理好的HTML直接返回給前端展示苹熏,可以解決白屏問(wèn)題。

④預(yù)渲染

利用webpack的插件prerender-spa-plugin做預(yù)渲染

動(dòng)態(tài)數(shù)據(jù)無(wú)法展示币喧,不同的用戶(hù)看到的都是同樣的頁(yè)面

路由很多時(shí)轨域,代碼構(gòu)建時(shí)間太長(zhǎng)

用戶(hù)容易誤操作,由于預(yù)渲染時(shí)js還沒(méi)有加載杀餐,因此展示出來(lái)的內(nèi)容沒(méi)有js的交互邏輯干发,比如按鈕點(diǎn)擊,在js加載完成之前用戶(hù)點(diǎn)擊是沒(méi)有反應(yīng)的

預(yù)加載內(nèi)容很少史翘,當(dāng)頁(yè)面有內(nèi)容是依賴(lài)動(dòng)態(tài)數(shù)據(jù)加載時(shí)枉长,在編譯時(shí)是無(wú)法加載出動(dòng)態(tài)數(shù)據(jù)的,因此會(huì)導(dǎo)致這部分內(nèi)容編譯不出來(lái)

骨架屏

⑤骨架屏

意義:骨架屏就是在頁(yè)面尚未加載之前先給用戶(hù)展示頁(yè)面的大致結(jié)構(gòu)琼讽,在骨架頁(yè)面中必峰,圖片、文字钻蹬、圖標(biāo)都將通過(guò)灰色矩形塊或圓形塊顯示自点,直到頁(yè)面請(qǐng)求數(shù)據(jù)后渲染頁(yè)面。

原理:

通過(guò)puppeteer在服務(wù)端操控headless Chrome打開(kāi)開(kāi)發(fā)中的需要生成骨架頁(yè)面的頁(yè)面脉让,在等待頁(yè)面加載渲染完成之后桂敛,保留頁(yè)面布局樣式的前提下,通過(guò)對(duì)頁(yè)面中元素進(jìn)行刪減或增添溅潜,通過(guò)樣式覆蓋术唬,使其展示為灰色塊。

骨架屏的實(shí)現(xiàn)原理和預(yù)加載類(lèi)似滚澜,都是利用了Puppeteer爬取頁(yè)面的功能粗仓,Puppeteer是chrome出的一個(gè)headlessChromenode庫(kù),提供了API可以抓取SPA并生成預(yù)渲染內(nèi)容设捐,和預(yù)加載不太一樣的是骨架屏技術(shù)會(huì)在Puppeteer生成內(nèi)容后借浊,利用算法將生成的內(nèi)容進(jìn)行替換,生成骨架頁(yè)面萝招,page-skeleton-webpack-plugin是一個(gè)用來(lái)生成骨架屏的webpack插件

cookie和session如何協(xié)同

session的底層是基于cookie實(shí)現(xiàn)的蚂斤。

①瀏覽器沒(méi)有cookie,向服務(wù)器發(fā)送請(qǐng)求

②服務(wù)器接受到請(qǐng)求槐沼,通過(guò)request.getSession()方法創(chuàng)建會(huì)話(huà)對(duì)象(第一次創(chuàng)建的是session會(huì)話(huà))

服務(wù)器每次創(chuàng)建session的時(shí)候曙蒸,也會(huì)創(chuàng)建cookie,這個(gè)cookie的key是jessionid岗钩,value為創(chuàng)建的session的ID纽窟。

③通過(guò)響應(yīng)將新創(chuàng)建的session的ID放在cookie里,傳遞給瀏覽器兼吓。

④瀏覽器解析獲取到的數(shù)據(jù)臂港,就馬上創(chuàng)建一個(gè)cookie對(duì)象。有了cookie后视搏,再次請(qǐng)求服務(wù)器审孽,就會(huì)把含有session的ID的cookie傳給服務(wù)器。

⑤服務(wù)器通過(guò)request.getSession()方法凶朗,通過(guò)cookie中session的ID瓷胧,找到之前創(chuàng)建好的session對(duì)象,返回相應(yīng)數(shù)據(jù)棚愤。

xss攻擊可以造成:

1.竊取cookie信息

2.可以監(jiān)聽(tīng)用戶(hù)行為

3.可以通過(guò)修改dom偽造假的登錄窗口搓萧,騙取用戶(hù)輸入用戶(hù)名和密碼

4.生成浮窗廣告,影響用戶(hù)體驗(yàn)

如何阻止xss攻擊宛畦?

1.服務(wù)器對(duì)輸入腳本進(jìn)行過(guò)濾或轉(zhuǎn)碼

2.充分利用CSP

1)限制加載其他域下的資源文件

2)禁止向第三方提交數(shù)據(jù)瘸洛,這樣用戶(hù)的數(shù)據(jù)也不會(huì)外泄

3)禁止執(zhí)行內(nèi)聯(lián)腳本和未授權(quán)的腳本

4)還提供了上報(bào)機(jī)制,這樣可以幫助我們盡快發(fā)現(xiàn)有哪些xss攻擊次和,以便盡快修復(fù)問(wèn)題

3.使用httponly屬性

4.驗(yàn)證碼:防止腳本冒充用戶(hù)提交危險(xiǎn)操作

5.限制長(zhǎng)度:對(duì)于一些不信任的輸入反肋,可以限制其輸入長(zhǎng)度

CSRF攻擊

和 XSS 不同的是,CSRF 攻擊不需要將惡意代碼注入用戶(hù)的頁(yè)面踏施,僅僅是利用服務(wù)器的漏洞和用戶(hù)的登錄狀態(tài)來(lái)實(shí)施攻擊石蔗。

三個(gè)必要條件:

1.目標(biāo)站點(diǎn)一定要有 CSRF 漏洞罕邀;

2.用戶(hù)要登錄過(guò)目標(biāo)站點(diǎn),并且在瀏覽器上保持

有該站點(diǎn)的登錄狀態(tài)养距;

3.需要用戶(hù)打開(kāi)一個(gè)第三方站點(diǎn)诉探,可以是黑客的

站點(diǎn),也可以是一些論壇棍厌;

如何防止CSRF攻擊肾胯?

1. 充分利用好 Cookie 的 SameSite 屬性

Strict 最為嚴(yán)格,瀏覽器會(huì)完全禁止第三方

Cookie耘纱。

鏈接打開(kāi)敬肚、 Get 方式的表單攜帶 Cookie。 Lax 相對(duì)寬松一點(diǎn)束析。

None 艳馒,在任何情況下都會(huì)發(fā)送 Cookie 數(shù)據(jù)。

2. 驗(yàn)證請(qǐng)求的來(lái)源站點(diǎn)

3. CSRF Token

第一步畸陡,在瀏覽器向服務(wù)器發(fā)起請(qǐng)求時(shí)鹰溜,服務(wù)器生成一個(gè) CSRF Token。

第二步丁恭,在瀏覽器端如果要發(fā)起轉(zhuǎn)賬的請(qǐng)求曹动,那么需要帶上頁(yè)面中的 CSRF Token,然后服務(wù)器會(huì)驗(yàn)證該 Token 是否合法牲览。

4.X-FRAME-OPTIONS

DENY墓陈,表示頁(yè)面不允許通過(guò)iframe方式展示

AMEORIGIN,相同域名可以·通過(guò)ifame展示

ALLOW-FROM第献,可以在指定來(lái)源中的iframe展

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贡必,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子庸毫,更是在濱河造成了極大的恐慌仔拟,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件飒赃,死亡現(xiàn)場(chǎng)離奇詭異利花,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)载佳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)炒事,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蔫慧,你說(shuō)我怎么就攤上這事挠乳。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵睡扬,是天一觀(guān)的道長(zhǎng)盟蚣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)威蕉,這世上最難降的妖魔是什么刁俭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮韧涨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侮繁。我一直安慰自己虑粥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布宪哩。 她就那樣靜靜地躺著娩贷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锁孟。 梳的紋絲不亂的頭發(fā)上彬祖,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音品抽,去河邊找鬼储笑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛圆恤,可吹牛的內(nèi)容都是我干的突倍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼盆昙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼羽历!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起淡喜,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤秕磷,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后炼团,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體澎嚣,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年们镜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了币叹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡模狭,死狀恐怖颈抚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤贩汉,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布驱富,位于F島的核電站,受9級(jí)特大地震影響匹舞,放射性物質(zhì)發(fā)生泄漏褐鸥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一赐稽、第九天 我趴在偏房一處隱蔽的房頂上張望叫榕。 院中可真熱鬧,春花似錦姊舵、人聲如沸晰绎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荞下。三九已至,卻和暖如春史飞,著一層夾襖步出監(jiān)牢的瞬間尖昏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工构资, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抽诉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓蚯窥,卻偏偏與公主長(zhǎng)得像掸鹅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拦赠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 此學(xué)習(xí)記錄來(lái)自于極客時(shí)間專(zhuān)欄瀏覽器工作原理與實(shí)踐巍沙,由于個(gè)人對(duì)這塊內(nèi)容比較感興趣,所以花錢(qián)買(mǎi)了專(zhuān)欄荷鼠,但看完總覺(jué)得什么...
    Mstian閱讀 833評(píng)論 0 3
  • 前言 隨著互聯(lián)網(wǎng)的高速發(fā)展句携,信息安全問(wèn)題已經(jīng)成為企業(yè)最為關(guān)注的焦點(diǎn)之一,而前端又是引發(fā)企業(yè)安全問(wèn)題的高危據(jù)點(diǎn)允乐。在移...
    IT沐華閱讀 511評(píng)論 0 0
  • 32 | 同源策略:為什么XMLHttpRequest不能跨域請(qǐng)求資源矮嫉? 瀏覽器安全可以分為三大塊--Web頁(yè)面安...
    六個(gè)周閱讀 519評(píng)論 0 3
  • 同源策略:為什么XMLHttpRequest不能跨域請(qǐng)求資源? 瀏覽器安全可以分為三大塊——Web 頁(yè)面安全牍疏、瀏覽...
    歡欣的膜笛閱讀 434評(píng)論 0 1
  • XSS: Cross Site Script 跨站腳本攻擊 XSS通常只黑客通過(guò)“HTML注入”篡改了網(wǎng)頁(yè)蠢笋,插入了...
    cc要堅(jiān)定自己的腳步閱讀 281評(píng)論 0 0