最近參加了一個WEB安全培訓,感覺WEB攻擊跟防御都是挺有意思的。以下總結比較簡短,僅供觀賞哈。
一、XSS攻擊
【介紹】
xss攻擊是跨站腳本攻擊,例如在表單中提交含有可執行的javascript的內容文本,如果服務器端沒有過濾或轉義這些腳本,而這些腳本由通過內容的形式發布到了頁面上,這個時候如果有其他用戶訪問這個網頁,那么瀏覽器就會執行這些腳本,從而被攻擊,從而獲取用戶的cookie等信息。
【防御】
1、對於敏感的cookie信息,使用HttpOnly,使document對象中找不到cookie。
2、對於用戶輸入的信息要進行轉義。
二、CSRF攻擊
【介紹】
CSRF攻擊即跨站域請求偽造,例如,小明在瀏覽銀行A網站的時候並沒有關掉銀行網站,這時小明又訪問了攜帶CSRF攻擊的B網站,而這時候B網站通過對銀行的服務器發送轉賬請求,並且攜帶小明的在銀行網站的cookie信息,在參數上把小明賬號上的錢轉到B網站所有人的賬戶上,這時url得到響應,小明的錢就丟了。
【防御】
1、敏感請求使用驗證碼。
2、驗證HTTP Referer字段。Referer字段記錄了HTTP請求的來源地址,從銀行A網站發出來的請求會帶有A網站的地址,從攜帶CSRF地址發出的請求會攜帶B網站的地址,我們只需在每個敏感請求驗證Referer值,如果是來自A網站的通過,否則不通過。但是這種方法把安全寄托於瀏覽器,並不完全安全,在某些瀏覽器上,還是可以通過篡改 Referer 從而進行CSRF攻擊。而且,在某些用戶禁用Referer的情況下,服務器會一直拒絕客戶的請求。
3、在請求地址中添加token 並驗證。在用戶登錄之后,產生token 並放入session中,在每次請求時把token從session中拿出來,以參數的形式加入請求,在服務器端建立攔截器驗證該token,token則通過,否則拒絕。但是這種方法也是有安全問題的,在某些網站支持用戶發表鏈接的,那么黑客在該網站發布自己的個人網站地址,系統也會為這個地址后加上token,則黑客可以在自己的網站上得到這個token參數,從而發動CSRF攻擊。
4、在HTTP頭中自定義屬性token 並驗證。把token作為自定義屬性放在HTTP的頭中,通過封裝XMLHttpRequest可以一次性給所有請求加上token 屬性。這樣子token就不會暴露在瀏覽器地址中。
三、SQL注入
【介紹】
SQL注入攻擊,攻擊者在提交表單的時候,在表單上面填寫相關的sql語句,而系統把這些字段當成普通的變量發送給服務器端進行sql查詢,則,由攻擊者填寫的sql會拼接在系統的sql語句上,從而進行數據庫的某些操作。
例如在簡單的登陸表單里面
<form action="/login" method="POST">
Username: <input type="text" name="username" />
Password: <input type="password" name="password" />
<input type="submit" value="登陸" />
</form>
這時候系統處理的sql語句是這樣
username:=r.Form.Get("username") password:=r.Form.Get("password") sql:="SELECT * FROM user WHERE username='"+username+"' AND password='"+password+"'"
而這時候攻擊者輸入的用戶名如下,密碼為任意值的情況下
myuser' or 'foo' = 'foo' --
那么系統的sql語句就會變成這樣
SELECT * FROM user WHERE username='myuser' or 'foo' = 'foo' --'' AND password='xxx'
則攻擊者就會成功登陸
【防御】
1、表單過濾,驗證表單提交的合法性,對一些特殊字符進行轉義處理
2、數據庫權限最小化
3、查詢語句使用數據庫提供的參數化查詢接口,不要直接拼接SQL
四、身份認證和會話
【攻擊】
黑客在瀏覽器中停用JS,防止客戶端校驗,從而進行某些操作。
【防御】
1、隱藏敏感信息。
2、對敏感信息進行加密。
3、session 定期失效
五、權限與訪問控制
【攻擊】
能通過URL參數的修改達到訪問他人頁面,例如,黑客能夠使用一下的鏈接去訪問在某商城上自己的訂單鏈接
https://***.***.com/normal/item.action?orderid=51338221644
這個時候如果網站沒有相關權限驗證,那么他也能通過下面的鏈接去訪問其他人的訂單。
https://***.***.com/normal/item.action?orderid=其他id
這樣子就會造成商城其他人的隱私的泄露。
【防御】
1、添加權限系統,訪問的時候可以加上相應的校驗。
六、不安全加密存儲
【防御】
1、加密存儲敏感信息
2、不用md5加密
七、上傳漏洞
【攻擊】
在圖片上傳的時候,攻擊者上傳非圖片,而是可遠程執行的的腳本,這時候,入侵者就可以遠程的執行腳本來對服務器進行攻擊
【防御】
1、限制文件上傳類型
2、使用第三方文件托管等
八、傳輸層未加密
【防御】
1、使用安全的https版本
2、敏感信息使用https傳輸
3、非敏感信息使用http傳輸
九、未驗證的重定向和轉發
【攻擊】
用於釣魚,黑客在存在漏洞的網址后添加跳轉參數,並且把參數轉碼,把鏈接發送給用戶,誘導用戶點擊,這時候用戶看到鏈接的最前面是熟悉的網址,會點擊進去,從而是用戶的點擊發生重定向到非法網站。
【防御】
1、添加跳轉白名單
2、跳轉前提示用戶即將發生跳轉到其他可疑網頁。
十、WebShell
【攻擊】
黑客在win系統中向被攻擊網站上傳 abc.asp;.jsp文件,這時候系統識別為jsp文件,然后傳送到服務器的時候,某些系統上面會識別為 asp 文件。