面試 07 安全問題 CSRF和XSS

2022-09-06 18:36:09 字數 2111 閱讀 7157

面試中的安全問題,明確來說,就兩個方面:

這兩個問題,一般不會問太難。

有人問:sql注入算嗎?答案:這個其實跟前端的關係不是很大。

問的不難,一般問:

如果把攻擊原理和防禦措施掌握好,基本沒什麼問題。

csrf(cross-site request forgery):跨站請求偽造。

ps:中文名一定要記住。英文全稱,如果記不住也拉倒。

使用者是**a的註冊使用者,且登入進去,於是**a就給使用者下發cookie。

從上圖可以看出,要完成一次csrf攻擊,受害者必須滿足兩個必要的條件:

(1)登入受信任**a,並在本地生成cookie。(如果使用者沒有登入**a,那麼**b在誘導的時候,請求**a的api介面時,會提示你登入)

(2)在不登出a的情況下,訪問危險**b(其實是利用了**a的漏洞)。

我們在講csrf時,一定要把上面的兩點說清楚。

舉個例子,前段時間裡,微博**有個api介面有漏洞,導致很多使用者的粉絲暴增。

方法一、token 驗證:(用的最多)

(1)伺服器傳送給客戶端乙個token;

(2)客戶端提交的表單中帶著這個token。

(3)如果這個 token 不合法,那麼伺服器拒絕這個請求。

方法二:隱藏令牌:

把 token 隱藏在 http 的 head頭中。

方法二和方法一有點像,本質上沒有太大區別,只是使用方式上有區別。

方法三、referer 驗證:

referer 指的是頁面請求**。意思是,只接受本站的請求,伺服器才做響應;如果不是,就攔截。

xss(cross site scripting):跨域指令碼攻擊。

接下來,我們詳細講一下 xss 的內容。

預備知識:http、cookie、ajax。

最後導致的結果可能是:

發出請求時,xss**出現在url中,作為輸入提交到伺服器端,伺服器端解析後響應,xss**隨響應內容一起傳回給瀏覽器,最後瀏覽器解析執行xss**。這個過程像一次反射,所以叫反射型xss。

儲存型xss和反射型xss的差別在於,提交的**會儲存在伺服器端(資料庫、記憶體、檔案系統等),下次請求時目標頁面時不用再提交xss**。

xss的防範措施主要有三個:

1、編碼:

對使用者輸入的資料進行html entity編碼。

如上圖所示,把字元轉換成 轉義字元。

encode的作用是將$var等一些字元進行轉化,使得瀏覽器在最終輸出結果上是一樣的。

比如說這段**:

若不進行任何處理,則瀏覽器會執行alert的js操作,實現xss注入。

進行編碼處理之後,l在瀏覽器中的顯示結果就是,實現了將$var作為純文字進行輸出,且不引起j**ascript的執行。

2、過濾:

3、校正

備註:我們應該去了解一下dom parse這個概念,它的作用是把文字解析成dom結構。

比較常用的做法是,通過第一步的編碼轉成文字,然後第三步轉成dom物件,然後經過第二步的過濾。

還有一種簡潔的答案:

首先是encode,如果是富文字,就白名單。

面試官還可能喜歡問二者的區別。

區別一:

xss:不需要登入。

區別二:(原理的區別)

裡面列出了很多xss的例子,可以長見識。如果你專門研究xss,可以看看。

比如,他的第一篇文章就講到了xss的原理分析與解剖。有句話摘抄如下:彈窗只是測試xss的存在性和使用性。

比如,這個人還有篇文章寫自動化檢測csrf(第一章)。大公司做**,一般會做嗅探服務(比如自動化工具做csrf的檢測、自動化的方式控制安全風險)。

另外,可能還有些工具,可以掃瞄**本身有沒有一些安全問題。

這是github上的乙個德國組織。

上面的專案都跟安全相關,有些倉庫是可以直接執行的。如果你不需要定製,就可以直接用別人的,沒必要自己寫xss庫、xss的過濾之類的,避免麻煩。

前端面試 07 安全問題 CSRF和XSS

3.區別 1.基本概念 縮寫 全稱?csrf cross site request forgery,跨站請求偽造 2.攻擊原理 3.防禦措施 方法1 token to k n 驗證 1 伺服器傳送給客戶端乙個token 2 客戶端提交的表單中帶著這個token。3 如果這個 token 不合法,那麼...

web安全問題 csrf

1.原理 使用者登入a a 確認身份 b 向a 發起請求 帶a 身份 cookie會保留在網頁中 2.csrf攻擊危害 www.a.com前端 www.a.com後端 www.b.com前端 www.a.com後端 b 向a 請求帶a cookies 不訪問a 前端 refer為b 1.cookie...

前端安全問題 XSS和CSRF

xss又稱css,全稱crosssitescript,跨站指令碼攻擊,是web程式中常見的漏洞,xss屬於被動式且用於客戶端的攻擊方式,所以容易被忽略其危害性。其原理是攻擊者向有 xss漏洞的 中輸入 傳入 惡意的html 當其它使用者瀏覽該 時,這段html 會自動執行,從而達到攻擊的目的。如,盜...