最近參加了一個WEB安全培訓,感受WEB攻擊跟防護都是挺有意思的。如下總結比較簡短,僅供觀賞哈。javascript
1、XSS攻擊html
【介紹】java
xss攻擊是跨站腳本攻擊,例如在表單中提交含有可執行的javascript的內容文本,若是服務器端沒有過濾或轉義這些腳本,而這些腳本由經過內容的形式發佈到了頁面上,這個時候若是有其餘用戶訪問這個網頁,那麼瀏覽器就會執行這些腳本,從而被攻擊,從而獲取用戶的cookie等信息。sql
【防護】數據庫
一、對於敏感的cookie信息,使用HttpOnly,使document對象中找不到cookie。瀏覽器
二、對於用戶輸入的信息要進行轉義。安全
2、CSRF攻擊服務器
【介紹】cookie
CSRF攻擊即跨站域請求僞造,例如,小明在瀏覽銀行A網站的時候並無關掉銀行網站,這時小明又訪問了攜帶CSRF攻擊的B網站,而這時候B網站經過對銀行的服務器發送轉帳請求,而且攜帶小明的在銀行網站的cookie信息,在參數上把小明帳號上的錢轉到B網站全部人的帳戶上,這時url獲得響應,小明的錢就丟了。session
【防護】
一、敏感請求使用驗證碼。
二、驗證HTTP Referer字段。Referer字段記錄了HTTP請求的來源地址,從銀行A網站發出來的請求會帶有A網站的地址,從攜帶CSRF地址發出的請求會攜帶B網站的地址,咱們只需在每一個敏感請求驗證Referer值,若是是來自A網站的經過,不然不經過。可是這種方法把安全寄託於瀏覽器,並不徹底安全,在某些瀏覽器上,仍是能夠經過篡改 Referer 從而進行CSRF攻擊。並且,在某些用戶禁用Referer的狀況下,服務器會一直拒絕客戶的請求。
三、在請求地址中添加token 並驗證。在用戶登陸以後,產生token 並放入session中,在每次請求時把token從session中拿出來,以參數的形式加入請求,在服務器端創建攔截器驗證該token,token則經過,不然拒絕。可是這種方法也是有安全問題的,在某些網站支持用戶發表連接的,那麼黑客在該網站發佈本身的我的網站地址,系統也會爲這個地址後加上token,則黑客能夠在本身的網站上獲得這個token參數,從而發動CSRF攻擊。
四、在HTTP頭中自定義屬性token 並驗證。把token做爲自定義屬性放在HTTP的頭中,經過封裝XMLHttpRequest能夠一次性給全部請求加上token 屬性。這樣子token就不會暴露在瀏覽器地址中。
3、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'
則攻擊者就會成功登錄
【防護】
一、表單過濾,驗證表單提交的合法性,對一些特殊字符進行轉義處理
二、數據庫權限最小化
三、查詢語句使用數據庫提供的參數化查詢接口,不要直接拼接SQL
4、身份認證和會話
【攻擊】
黑客在瀏覽器中停用JS,防止客戶端校驗,從而進行某些操做。
【防護】
一、隱藏敏感信息。
二、對敏感信息進行加密。
三、session 按期失效
5、權限與訪問控制
【攻擊】
能經過URL參數的修改達到訪問他人頁面,例如,黑客可以使用一下的連接去訪問在某商城上本身的訂單連接
https://***.***.com/normal/item.action?orderid=51338221644
這個時候若是網站沒有相關權限驗證,那麼他也能經過下面的連接去訪問其餘人的訂單。
https://***.***.com/normal/item.action?orderid=其餘id
這樣子就會形成商城其餘人的隱私的泄露。
【防護】
一、添加權限系統,訪問的時候能夠加上相應的校驗。
6、不安全加密存儲
【防護】
一、加密存儲敏感信息
二、不用md5加密
7、上傳漏洞
【攻擊】
在圖片上傳的時候,攻擊者上傳非圖片,而是可遠程執行的的腳本,這時候,入侵者就能夠遠程的執行腳原本對服務器進行攻擊
【防護】
一、限制文件上傳類型
二、使用第三方文件託管等
8、傳輸層未加密
【防護】
一、使用安全的https版本
二、敏感信息使用https傳輸
三、非敏感信息使用http傳輸
9、未驗證的重定向和轉發
【攻擊】
用於釣魚,黑客在存在漏洞的網址後添加跳轉參數,而且把參數轉碼,把連接發送給用戶,誘導用戶點擊,這時候用戶看到連接的最前面是熟悉的網址,會點擊進去,從而是用戶的點擊發生重定向到非法網站。
【防護】
一、添加跳轉白名單
二、跳轉前提示用戶即將發生跳轉到其餘可疑網頁。
10、WebShell
【攻擊】
黑客在win系統中向被攻擊網站上傳 abc.asp;.jsp文件,這時候系統識別爲jsp文件,而後傳送到服務器的時候,某些系統上面會識別爲 asp 文件。