身份驗證與授權
密碼加密
加密傳輸
Https
DDoS
SQL注入
SQL注入的本質:數據和代碼未分離,即數據當做了代碼來執行。
解決辦法
- 檢查輸入的數據是否符合預期,不能直接放入數據庫中進行查詢
- 字符串長度驗證
- mybatis具有防sql注入的方式
- 使用
#{}
代替${}
- mybatis會對使用#的數據當成一個字符串,會自動加一個雙引號
- 使用
跨站腳本
XSS
Cross Site Scripting。通過存在安全漏洞的Web網站注冊用戶的瀏覽器內運行非法的HTML標簽或JavaScript進行的一種攻擊。
原理是惡意攻擊者往 Web 頁面里插入惡意可執行網頁腳本代碼,當用戶瀏覽該頁之時,嵌入其中 Web 里面的腳本代碼會被執行,從而可以達到攻擊者盜取用戶信息或其他侵犯用戶安全隱私的目的。
類型
- 非持久型 XSS(反射型 XSS )
通過給別人發送帶有惡意腳本代碼參數的 URL,當 URL 地址被打開時,特有的惡意代碼參數被 HTML 解析、執行。
一些瀏覽器如Chrome其內置了一些XSS過濾器,可以防止大部分反射型XSS攻擊。
特征:
- 即時性,不經過服務器存儲,直接通過 HTTP 的 GET 和 POST 請求就能完成一次攻擊
- 攻擊者需要誘騙點擊,必須要通過用戶點擊鏈接才能發起
- 反饋率低,所以較難發現和響應修復
- 盜取用戶敏感保密信息
- 持久型 XSS(存儲型 XSS)
持久型 XSS 漏洞,一般存在于 Form 表單提交等交互功能,如文章留言,提交文本信息等,黑客利用的 XSS 漏洞,將內容經正常功能提交進入數據庫持久保存,當前端頁面獲得后端從數據庫中讀出的注入代碼時,恰好將其渲染執行。
特征:
- POST 請求提交表單后端沒做轉義直接入庫。
- 后端從數據庫中取出數據沒做轉義直接輸出給前端。
- 前端拿到后端數據沒做轉義直接渲染成 DOM。
解決辦法
- 非持久型 XSS(反射型 XSS )
- Web 頁面渲染的所有內容或者渲染的數據都必須來自于服務端。
- 盡量不要從 URL,document.referrer,document.forms 等這種 DOM API 中獲取數據直接渲染。
- 盡量不要使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),innerHTML,document.createElement() 等可執行字符串的方法。
CSRF
CSRF(Cross Site Request Forgery),即跨站請求偽造。它利用用戶已登錄的身份,在用戶毫不知情的情況下,以用戶的名義完成非法操作。