一、XSS攻擊
1.什么是XSS攻擊?
XSS攻擊全稱跨站腳本攻擊,是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。比如這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞由于被黑客用來編寫危害性更大的網絡釣魚(Phishing)攻擊而變得廣為人知。
2.XSS攻擊的危害
1、盜取各類用戶帳號,如機器登錄帳號、用戶網銀帳號、各類管理員帳號
2、控制企業數據,包括讀取、篡改、添加、刪除企業敏感數據的能力
3、盜竊企業重要的具有商業價值的資料
4、非法轉賬
5、強制發送電子郵件
6、網站掛馬
7、控制受害者機器向其它網站發起攻擊
3.XSS攻擊的具體表現
1、JavaScript代碼在表單輸入框的注入
2、append的被利用
3、img標簽的再次利用(onerror)
4.XSS攻擊的解決方法
1.轉義字符
2.設置白名單
二、CSRF攻擊
1.什么是CSRF攻擊?
CSRF(Cross-site request forgery跨站請求偽造)通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。其實就是網站中的一些提交行為,被黑客利用,你在訪問黑客的網站的時候,進行的操作,會被操作到其他網站上。
2.CSRF攻擊的解決方法
1、要合理使用post與get
2、xsrf攻擊升級(加驗證[圖形驗證碼,短信驗證碼],添加token)
3、阻止第三方網站請求接口
三、網絡劫持攻擊
很多的時候,我們的網站不是直接就訪問到我們的服務器上的,中間會經過很多層代理,如果在某一個環節,數據被中間代理層的劫持者所截獲,他們就能獲取到使用你網站的用戶的密碼等保密數據。比如,我們的用戶經常會在各種飯館里面,連一些奇奇怪怪的wifi,如果這個wifi是黑客所建立的熱點wifi,那么黑客就可以結果該用戶收發的所有數據。這里,建議站長們網站都使用https進行加密。這樣,就算網站的數據能被拿到,黑客也無法解開。
解決網絡劫持攻擊的方法:
1.對網站進行https加密
2.如果你的網站還沒有進行https加密的化,則在表單提交部分,最好進行非對稱加密--即客戶端加密,只有服務端能解開。這樣中間的劫持者便無法獲取加密內容的真實信息了。
四、控制臺注入代碼
有的黑客會誘騙用戶去往控制臺里面粘貼東西(欺負小白用戶不懂代碼),比如可以在朋友圈貼個什么文章,說:"只要訪問天貓,按下F12并且粘貼以下內容,則可以獲得xx元禮品"之類的,那么有的用戶真的會去操作,并且自己隱私被暴露了也不知道。
不知道各位看官有沒有注意到天貓官網控制臺的警告信息,天貓這種做法,也是在警告用戶不要這么做,看來天貓的前端安全做的也是很到位的。不過,這種攻擊畢竟是少數,所以各位看官看一眼就行,如果真的發現有的用戶會被這樣攻擊的話,記得想起天貓的這種解決方案。
避免控制臺注入代碼的方法就是仿照天貓的做法,在控制臺給出友情提示。
五、釣魚
釣魚也是一種非常古老的攻擊方式了,其實并不太算前端攻擊。可畢竟是頁面級別的攻擊。我相信很多人會有這樣的經歷,QQ群里面有人發什么兼職啦、什么自己要去國外了房子車子甩賣了,詳情在我QQ空間里啦,之類的連接。打開之后發現一個QQ登錄框,其實一看域名就知道不是QQ,不過做得非常像QQ登錄,不明就里的用戶們,就真的把用戶名和密碼輸入了進去,結果沒登錄到QQ,用戶名和密碼卻給人發過去了。
避免釣魚攻擊的方法就是盡量不要隨便點擊各種鏈接。
六、如何防范 Web 前端攻擊?
1.不要信任任何外部傳入的數據
2.針對用戶輸入作相關的格式檢查、過濾等操作
不要信任在任何傳入的第三方數據
3.使用 CORS,設置 Access-Control-Allow-Origin
更安全地使用 Cookie
4.設置Cookie為HttpOnly,禁止了JavaScript操作Cookie
防止網頁被其他網站內嵌為iframe
5.服務器端設置 X-Frame-Options 響應頭,防止頁面被內嵌
6.開發時要提防用戶產生的內容,要對用戶輸入的信息進行層層檢測要注意對用戶的輸出內容進行過濾(進行轉義等)重要的內容記得要加密傳輸(無論是利用https也好,自己加密也好)
7.get與post請求,要嚴格遵守規范,不要混用,不要將一些危險的提交使用jsonp完成。
8.對于URL上攜帶的信息,要謹慎使用。
總的來說有以下幾點:
1.永遠不要信任用戶的輸入,要對用戶的輸入進行校驗,可以通過正則表達式,或限制長度,對單引號和雙"-"進行轉換等
2.永遠不要使用動態拼裝SQL,可以使用參數化的SQL或者直接使用存儲過程進行數據查詢存取
3.永遠不要使用管理員權限的數據庫連接,為每個應用使用單獨的權限有限的數據庫連接
4.不要把機密信息明文存放,請加密或者hash掉密碼和敏感的信息