面試中的安全問題,明確來說,就兩個方面:
這兩個問題,一般不會問太難。
有人問: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 會自動執行,從而達到攻擊的目的。如,盜...