1. 程式人生 > >【白帽子講web安全】關於XSS,CSRF,SQL注入

【白帽子講web安全】關於XSS,CSRF,SQL注入

1.XSS 分類:      1.反射型:給使用者傳送頁面或者連結,讓使用者點選來進行攻擊      2.儲存型:把攻擊存放在服務端,可能造成傳播(比如部落格系統,每個訪問該頁面的人都有可能被攻擊),主動性更強      3.DOM型:本質上是反射型,但是是通過使用者點選,修改原本dom元素的屬性,構造攻擊動作 反射型和dom型區別:      反射型是構造好了攻擊動作,然後就等你開啟那個頁面;dom型也是等你點選,但是不是頁面,通過使用者動作,把原來的動作註釋掉,然後加上自己修改的動作。 XSS作用:      1.可以獲得cookie      2.仿造get、post請求做一些動作      3.獲得使用者的IP      4.識別使用者軟體、瀏覽器      5.通過釣魚也可以騙到使用者的使用者名稱和密碼這樣 XSS的防範: 1.對於擷取cookie這樣的操作可以在cookie上加上HttpOnly,這樣js就不能訪問cookie了。對於重要的cookie可以考慮加上該設定。 2.輸入檢查。一般是查詢特殊字元,比如『<』,『>』,『、』這樣,可以選擇對輸入進行編碼,或者是篩選掉這些字元。 2.沒有絕對可以防止XSS攻擊的方法,因為XSS比較靈活,任何語言或者框架設計不當都有可能存在漏洞 2.CSRF
總的來說,它就是利用cookie,來盜取使用者許可權,從此進行操作。 cookie有session和locale兩種。前者是臨時的,會話關閉之後就沒有了,後者是儲存在本地的,當快取過期之後才消失。如果要獲取cookie,在IE6,7,8,Safari中會攔截,不讓傳送本地的快取。但是在火狐,chrome上就不會攔截。 防禦方法: 1.驗證碼。由於CSRF的攻擊點在於瀏覽器分不清是使用者傳送的資料還是攻擊者傳送的資料,所以每次提交重要資訊都要求輸入驗證碼,這樣可以保證資訊是安全的。 2.伺服器隨機生成一個token傳送,這樣在請求中的cookie中要是有匹配的token,就認為是安全的請求,否則就可能有安全問題。但是token要建立在沒有XSS漏洞的基礎上,如果有XSS漏洞,那麼攻擊者通過獲得頁面,同樣可以從cookie中獲得token然後進行模擬操作。 3.用referer。確保請求是來自允許的頁面…然而我覺得這個頭是可以偽造的…並且伺服器並不是都能取到referer頭部(由於瀏覽器隱私保護策略),所以並不是很認同這種方式 3.SQL注入
SQL注入是通過猜測後臺查詢資料庫的語句和資料庫的情況,然後後臺把使用者輸入的查詢當做查詢的一部分來查詢資料庫,如果構造得當,改變了SQL語句,就可以獲得資料庫內容甚至許可權等等。 防禦: 1.使用預編譯語句或者儲存過程,這樣攻擊者不能改變SQL語句的結構,就不能擅自查詢了。預編譯繫結變數,比如SQL語句變數用?表示,這樣就無法改變原語句結構了。儲存過程沒有預編譯那麼安全,它是把要查詢的過程(語句)先儲存在資料庫,還是有可能存在注入,所以要注意過程中儘量避免使用動態的SQL語句 2.檢查輸入的資料型別。比如只能是整型這樣,這種方式可以很大程度上對抗注入 3.使用安全的函式。對輸入進行安全編碼後使用 4.注重資料庫的許可權放行。對於root許可權的使用要很注意,遵循『最小許可權原則』 *****************XSS和CSRF的區別(from:http://www.cnblogs.com/easytools/archive/2012/06/01/2529350.html)****************************

大家對於這2個攻擊可能比較混淆,因為從名字上就很容易混淆,csrf跨站點偽裝請求和xss跨站點攻擊。

我一開始也對這兩個東西搞混淆了,後面發現他們的最根本區別。

CSRF攻擊的主要目的是讓使用者在不知情的情況下攻擊自己已登入的一個系統,類似於釣魚。如使用者當前已經登入了郵箱,或bbs,同時使用者又在使用另外一個,已經被你控制的站點,我們姑且叫它釣魚網站。這個網站上面可能因為某個圖片吸引你,你去點選一下,此時可能就會觸發一個js的點選事件,構造一個bbs發帖的請求,去往你的bbs發帖,由於當前你的瀏覽器狀態已經是登陸狀態,所以session登陸cookie資訊都會跟正常的請求一樣,純天然的利用當前的登陸狀態,讓使用者在不知情的情況下,幫你發帖或幹其他事情。

預防措施,請求中加入隨機數,讓釣魚網站無法正常偽造請求。

XSS攻擊的主要目的則是,想辦法獲取目標攻擊網站的cookie,因為有了cookie相當於有了seesion,有了這些資訊就可以在任意能接進網際網路的pc登陸該網站,並以其他人的生份登陸,做一些破壞。

預防措施,防止下發介面顯示html標籤,把</>等符號轉義