開年遇到的第一個問題就是解決XSS攻擊>_<,可見要時刻保證網站的安全性相當重要。作好網站安全,不只維護網站的穩定性,更保證用戶數據的一致性。對此,總結一下筆者在工做中遇到的安全問題以及防護方法。
前端中常見的兩種網站應用安全漏洞攻擊的方式是 XSS 與 CSRF,本文詳細介紹兩種攻擊方式的概念、原理以及防護方式。javascript
XSS(Cross-site scripting)跨站腳本攻擊是惡意用戶在網站中注入的腳本,當正經常使用戶打開網站時受到影響並可能獲取用戶cookie等信息一種安全攻擊行爲。常見的例子是用戶進入某個網站的時候一直彈出alert
框等。
常見的 XSS 方式分爲兩類:持久性和非持久性,也有機構將其分爲傳統型(由服務器端代碼缺陷引發)和基於 DOM 型(有客戶端引發)。下面介紹三種類型:前端
<script>alert(document.cooke)</script
並不會執行 script 中的代碼,須要構造對應事件觸發。如: <img src="xxx.jpg" width="0" height="0" border="0" onload="javascript:alert(document.cookie);">
?userName=<img onload="javascript:alert(document.cookie)"/>
)的查詢參數來顯示用戶名等。針對 XSS 攻擊,常常有如下兩個方式來進行防護:java
function escHTML(str) { if (!str) return ''; return str.replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/x27/g, ''') .replace(/x22/g,'&quto;'); }
CSRF(Cross-site request forgery)是一種攻擊,迫使用戶在受信任網站上執行不須要的一些操做。具體過程以下:git
針對 CSRF 攻擊,經常使用的防護方式以下:github
function getToken (token) { var str = token || ''; var hash = 5381; for (var i = 0, len = str.length; i < len; ++i) { hash += (hash << 5) + str.charCodeAt(i); } return hash & 0x7fffffff; }
具體攻擊示例點擊查看數據庫