文章寫於 2016 年,舊的博客不維護了,一些文章直接遷移到這邊來。本文爲當時記錄的第三篇,記得應該是騰訊音樂的內推一面/二面。後面內推掛了,走的實習招聘。javascript
先介紹CSRF: 跨站請求僞造,cross site requrest forgery.
意思是跨域發出請求,請求是身份認證後的(除了referer不同,cookie是同樣的)
原理: 受害者必須依次完成兩個步驟:
1.登陸受信任網站A,並在本地生成Cookie。
2.在不登出A的狀況下,訪問危險網站B。
cookie發送:若是是內存cookie,均可以正常發送,若是是本地cookie,須要帶有p3p屬性.
get請求能夠經過img等標籤,post請求直接經過form表單提交.html
CSRF攻擊是源於WEB的隱式身份驗證機制!WEB的身份驗證機制雖然能夠保證一個請求是來自於某個用戶的瀏覽器,但卻沒法保證該請求是用戶批准發送的!前端
防護:java
參考: 淺談CSRF攻擊方式jquery
跨域有沒有額外的請求? 當時說沒有=.= 後來想到又OPTIONS,本身確實遇到過的.
OPTIONS的用途:ios
跨域的話,有沒有遇到傳cookie的問題?沒有=.= 怎麼解決? 查了一下資料,大概是這幾種:面試
其實當時若是不太緊張應該是能夠想出來的=.= 當時說本身沒遇到不會.
參考: 實現跨域cookie共享(轉載)shell
$('elementsSetThatCanBeTapped').on('tap', function(e) {
e.preventDefault();
e.stopPropagation();
$(this).off('click');
})
複製代碼
看起來是解除了click事件,阻止默認行爲和冒泡.我試試看..嗯試了一下真的能夠.可是若是能夠,不要綁定click事件就行了吧…上面差很少就是這麼作了.不過若是有事件委託那不太同樣.果真面試的時候腦子不頂用啊哈哈.json
問我還有沒有了解其餘前端安全.說了XSS.Cross Site Scripting.跨站腳本.然而重點不在跨站上.
發生在目標網站中目標用戶的瀏覽器層面上,當用戶瀏覽器渲染整個HTML文檔的過程當中出現了不被預期的腳本指令並執行時,XSS發生了.
跨站是由於通常攻擊都是獲取第三方的腳本資源(script請求).分爲三種:反射型,存儲型,DOMXSS後端
防護措施:
不要在頁面中插入任何不可信數據,除非這些數已經進行了編碼 在將不可信數據插入到HTML標籤之間時,對這些數據進行HTML Entity編碼.編碼的有6個: (當時蒙對了4個=.=)
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
複製代碼
不推薦將單引號( ‘ )編碼爲 ' 由於它並非標準的HTML標籤 須要對斜槓號( / )編碼,由於在進行XSS攻擊時,斜槓號對於關閉當前HTML標籤很是有用
參考: 防護 XSS 的七條原則