最近在學習web安全相關的一些知識,目前對web安全也只有了一些淺顯的理解,下面記錄我的一些理解。
因爲對這一塊懂的東西不是很多,有些地方可能寫的不對或者不夠全,所以歡迎大家給點問題和建議。
目前只看了三種攻擊方式
一.XSS跨站腳本攻擊
二.sql注入
三.CSRF跨站請求僞造
一.XSS跨站腳本攻擊
反射型XSS攻擊
此種攻擊通俗點講,就是在用戶輸入的地方,輸入一些惡意的腳本,通常是textarea,然後通過某種方式立即執行,然後獲取到一些想要得到的信息,比如cookie等,然後發送到自己的服務器。(沒有想到具體哪些案例會立即執行)
此種攻擊的解決方案一般是在用戶輸入的地方做一些過濾,過濾掉這一部分惡意腳本。
存儲型XSS攻擊
此種攻擊通俗點講,就是在用戶輸入的地方,輸入一些惡意的腳本,通常是富文本編輯器或者textarea等地方,然後在讀取富文本的時候,如果沒有做過濾和限制,就會直接執行用戶輸入的惡意腳本。存儲型說的就是數據會存儲到服務器或者數據庫。
此種攻擊的解決方案和上面一樣,在用戶輸入的地方做一些過濾,過濾掉這一部分惡意腳本。
dom型XSS攻擊
dom型XSS攻擊也是在用戶輸入的地方輸入一些腳本,不同的是這個腳本可能直接就在客戶端執行,不經過服務器。
xss攻擊基本是在用戶輸入的地方輸入一些惡意腳本,已達到以下的目的:
- 獲取cookie等一些重要的信息
- 插入一些js或者css修改和破壞頁面結構
- 執行某段js,使頁面跳轉到其他頁面
基本的防禦方法就是在用戶輸入的地方或者顯示的地方:
- 過濾危險節點,如script,style,link,iframe等
- 過濾一些危險的屬性,如href,src等
- 對cookie設置httpOnly
二.CSRF攻擊
關於CSRF攻擊的知識,我是看了這篇博客的Web安全之CSRF攻擊,個人覺得這篇文章還不錯,簡單清晰明瞭。
我個人感覺CSRF攻擊和XSS攻擊有點類似,也是在用戶輸入的地方輸入一些腳本,比如一個圖片,在圖片的src里加上某個地址,當頁面再次載入這個輸入的內容的時候,就會發送請求,從而達到某種目的。
CSRF攻擊和xss有點類似,不一樣的是,CSRF冒充用戶在站內做一些正常的操作,如關注某個人等,而XSS則是獲取一些信息,做一些惡意的操作等,其實具體的區別我也不是很理解,有機會的話再繼續深入探究一下。
防禦CSRF攻擊的方法主要是:
- 修改數據的接口,儘量使用post請求
- 使用cookie同源策略
推薦的文章Web安全之CSRF攻擊其實還講了其他的幾種方法,但是都沒接觸過,不太理解,所以沒有寫下來。
三.SQL注入
我之前寫過一個獲取微信小程序碼的接口,該接口對外開放沒有做任何限制,然後根據一些參數創建文件夾和文件名等信息,發現經常會有一些SELECT開頭的文件夾和文件,SQL注入應該就是傳入的參數裏面帶有SQL語句,後面我加了一些過濾和判斷就沒有出現過了。
防禦的主要措施就是:
- 對用戶輸入的內容進行校驗和過濾
- 不要動態拼接SQL語句
- 不要使用管理員權限連接數據庫
- 敏感字段要進行MD5加密