1-XSS
創(chuàng)新互聯公司服務項目包括安吉網站建設、安吉網站制作、安吉網頁制作以及安吉網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,安吉網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到安吉省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!Cross-Site Scripting(跨站腳本攻擊)簡稱 XSS,是一種代碼注入攻擊。攻擊者通過在目標網站上注入惡意腳本,使之在用戶的瀏覽器上運行。利用這些惡意腳本,攻擊者可獲取用戶的敏感信息如 Cookie、SessionID 等,進而危害數據安全。
來源
來自用戶的 UGC 信息
來自第三方的鏈接
URL 參數
POST 參數
Referer (可能來自不可信的來源)
Cookie (可能來自其他子域注入)
轉義、過濾、限制長度
2-SQL注入
通過SQL語句,實現無賬號登錄,甚至篡改數據庫。
攻擊實例
復制代碼 String sql = "select * from user_table where username=' "+userName+" ' and password=' "+password+" '";--當輸入了上面的用戶名和密碼,上面的SQL語句變成:SELECT * FROM user_table WHERE username='’or 1 = 1 -- and password='’"""--分析SQL語句:--條件后面username=”or 1=1 用戶名等于 ” 或1=1 那么這個條件一定會成功;--然后后面加兩個-,這意味著注釋,它將后面的語句注釋,讓他們不起作用,這樣語句永遠都--能正確執(zhí)行,用戶輕易騙過系統(tǒng),獲取合法身份。--這還是比較溫柔的,如果是執(zhí)行SELECT * FROM user_table WHEREusername='' ;DROP DATABASE (DB Name) --' and password=''--其后果可想而知…
如何防御SQL注入
1、檢查變量數據類型和格式
2、過濾特殊符號
3、綁定變量,使用預編譯語句
3-CSRF
CSRF一般指跨站請求偽造
CSRF攻擊的全稱是跨站請求偽造( cross site request forgery),是一種對網站的惡意利用
CSRF則是通過偽裝來自受信任用戶的請求來利用受信任的網站,攻擊者盜用了你的身份,以你的名義向第三方網站發(fā)送惡意請求。CRSF能做的事情包括利用你的身份發(fā)郵件、發(fā)短信、進行交易轉賬等,甚至盜取你的賬號。
例如:
如下:其中Web A為存在CSRF漏洞的網站,Web B為攻擊者構建的惡意網站,User C為Web A網站的合法用戶
3-1 CSRF攻擊攻擊原理及過程如下:
1.用戶C打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登錄網站A;
2.在用戶信息通過驗證后,網站A產生Cookie信息并返回給瀏覽器,此時用戶登錄網站A成功,可以正常發(fā)送請求到網站A;
3.用戶未退出網站A之前,在同一瀏覽器中,打開一個TAB頁訪問網站B;
4.網站B接收到用戶請求后,返回一些攻擊性代碼,并發(fā)出一個請求要求訪問第三方站點A;
5.瀏覽器在接收到這些攻擊性代碼后,根據網站B的請求,在用戶不知情的情況下攜帶Cookie信息,向網站A發(fā)出請求。網站A并不知道該請求其實是由B發(fā)起的,所以會根據用戶C的Cookie信息以C的權限處理該請求,導致來自網站B的惡意代碼被執(zhí)行。
3-2防御CSRF攻擊
目前防御 CSRF 攻擊主要有三種策略:驗證 HTTP Referer 字段;在請求地址中添加 token 并驗證;在 HTTP 頭中自定義屬性并驗證。
1-驗證 HTTP Referer 字段根據 HTTP 協(xié)議,在 HTTP 頭中有一個字段叫 Referer,它記錄了該 HTTP 請求的來源地址。在通常情況下,訪問一個安全受限頁面的請求來自于同一個網站,比如需要訪問 http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory,用戶必須先登陸 bank.example,然后通過點擊頁面上的按鈕來觸發(fā)轉賬事件。這時,該轉帳請求的 Referer 值就會是轉賬按鈕所在的頁面的 URL,通常是以 bank.example 域名開頭的地址。而如果黑客要對銀行網站實施 CSRF 攻擊,他只能在他自己的網站構造請求,當用戶通過黑客的網站發(fā)送請求到銀行時,該請求的 Referer 是指向黑客自己的網站。因此,要防御 CSRF 攻擊,銀行網站只需要對于每一個轉賬請求驗證其 Referer 值,如果是以 bank.example 開頭的域名,則說明該請求是來自銀行網站自己的請求,是合法的。如果 Referer 是其他網站的話,則有可能是黑客的 CSRF 攻擊,拒絕該請求。
這種方法的顯而易見的好處就是簡單易行,網站的普通開發(fā)人員不需要操心 CSRF 的漏洞,只需要在最后給所有安全敏感的請求統(tǒng)一增加一個攔截器來檢查 Referer 的值就可以。特別是對于當前現有的系統(tǒng),不需要改變當前系統(tǒng)的任何已有代碼和邏輯,沒有風險,非常便捷。
然而,這種方法并非萬無一失。Referer 的值是由瀏覽器提供的,雖然 HTTP 協(xié)議上有明確的要求,但是每個瀏覽器對于 Referer 的具體實現可能有差別,并不能保證瀏覽器自身沒有安全漏洞。使用驗證 Referer 值的方法,就是把安全性都依賴于第三方(即瀏覽器)來保障,從理論上來講,這樣并不安全。事實上,對于某些瀏覽器,比如 IE6 或 FF2,目前已經有一些方法可以篡改 Referer 值。如果 bank.example 網站支持 IE6 瀏覽器,黑客完全可以把用戶瀏覽器的 Referer 值設為以 bank.example 域名開頭的地址,這樣就可以通過驗證,從而進行 CSRF 攻擊。
即便是使用最新的瀏覽器,黑客無法篡改 Referer 值,這種方法仍然有問題。因為 Referer 值會記錄下用戶的訪問來源,有些用戶認為這樣會侵犯到他們自己的隱私權,特別是有些組織擔心 Referer 值會把組織內網中的某些信息泄露到外網中。因此,用戶自己可以設置瀏覽器使其在發(fā)送請求時不再提供 Referer。當他們正常訪問銀行網站時,網站會因為請求沒有 Referer 值而認為是 CSRF 攻擊,拒絕合法用戶的訪問。
2-在請求地址中添加 token 并驗證CSRF 攻擊之所以能夠成功,是因為黑客可以完全偽造用戶的請求,該請求中所有的用戶驗證信息都是存在于 cookie 中,因此黑客可以在不知道這些驗證信息的情況下直接利用用戶自己的 cookie 來通過安全驗證。要抵御 CSRF,關鍵在于在請求中放入黑客所不能偽造的信息,并且該信息不存在于 cookie 之中??梢栽?HTTP 請求中以參數的形式加入一個隨機產生的 token,并在服務器端建立一個攔截器來驗證這個 token,如果請求中沒有 token 或者 token 內容不正確,則認為可能是 CSRF 攻擊而拒絕該請求。
這種方法要比檢查 Referer 要安全一些,token 可以在用戶登陸后產生并放于 session 之中,然后在每次請求時把 token 從 session 中拿出,與請求中的 token 進行比對,但這種方法的難點在于如何把 token 以參數的形式加入請求。對于 GET 請求,token 將附在請求地址之后,這樣 URL 就變成 http://url?csrftoken=tokenvalue。 而對于 POST 請求來說,要在 form 的最后加上 ,這樣就把 token 以參數的形式加入請求了。但是,在一個網站中,可以接受請求的地方非常多,要對于每一個請求都加上 token 是很麻煩的,并且很容易漏掉,通常使用的方法就是在每次頁面加載時,使用 javascript 遍歷整個 dom 樹,對于 dom 中所有的 a 和 form 標簽后加入 token。這樣可以解決大部分的請求,但是對于在頁面加載之后動態(tài)生成的 html 代碼,這種方法就沒有作用,還需要程序員在編碼時手動添加 token。
該方法還有一個缺點是難以保證 token 本身的安全。特別是在一些論壇之類支持用戶自己發(fā)表內容的網站,黑客可以在上面發(fā)布自己個人網站的地址。由于系統(tǒng)也會在這個地址后面加上 token,黑客可以在自己的網站上得到這個 token,并馬上就可以發(fā)動 CSRF 攻擊。為了避免這一點,系統(tǒng)可以在添加 token 的時候增加一個判斷,如果這個鏈接是鏈到自己本站的,就在后面添加 token,如果是通向外網則不加。不過,即使這個 csrftoken 不以參數的形式附加在請求之中,黑客的網站也同樣可以通過 Referer 來得到這個 token 值以發(fā)動 CSRF 攻擊。這也是一些用戶喜歡手動關閉瀏覽器 Referer 功能的原因。
3-在 HTTP 頭中自定義屬性并驗證這種方法也是使用 token 并進行驗證,和上一種方法不同的是,這里并不是把 token 以參數的形式置于 HTTP 請求之中,而是把它放到 HTTP 頭中自定義的屬性里。通過 XMLHttpRequest 這個類,可以一次性給所有該類請求加上 csrftoken 這個 HTTP 頭屬性,并把 token 值放入其中。這樣解決了上種方法在請求中加入 token 的不便,同時,通過 XMLHttpRequest 請求的地址不會被記錄到瀏覽器的地址欄,也不用擔心 token 會透過 Referer 泄露到其他網站中去。
然而這種方法的局限性非常大。XMLHttpRequest 請求通常用于 Ajax 方法中對于頁面局部的異步刷新,并非所有的請求都適合用這個類來發(fā)起,而且通過該類請求得到的頁面不能被瀏覽器所記錄下,從而進行前進,后退,刷新,收藏等操作,給用戶帶來不便。另外,對于沒有進行 CSRF 防護的遺留系統(tǒng)來說,要采用這種方法來進行防護,要把所有請求都改為 XMLHttpRequest 請求,這樣幾乎是要重寫整個網站,這代價無疑是不能接受的
4-CC攻擊
4-1 CC攻擊的原理:
CC攻擊的原理就是攻擊者控制某些主機不停地發(fā)大量數據包給對方服務器造成服務器資源耗盡,一直到宕機崩潰。CC主要是用來消耗服務器資源的,每個人都有這樣的體驗:當一個網頁訪問的人數特別多的時候,打開網頁就慢了,CC就是模擬多個用戶(多少線程就是多少用戶)不停地進行訪問那些需要大量數據操作(就是需要大量CPU時間)的頁面,造成服務器資源的浪費,CPU長時間處于100%,永遠都有處理不完的連接直至就網絡擁塞,正常的訪問被中止。
4-2 CC攻擊的種類:
CC攻擊的種類有三種,
直接攻擊代理攻擊僵尸網絡攻擊直接攻擊主要針對有重要缺陷的WEB應用程序,一般說來是程序寫的有問題的時候才會出現這種情況,比較少見。僵尸網絡攻擊有點類似于 DDOS 攻擊了,從 WEB 應用程序層面上已經無法防御,所以代理攻擊是CC 攻擊者一般會操作一批代理服務器,比方說 100 個代理,然后每個代理同時發(fā)出 10 個請求,這樣 WEB 服務器同時收到 1000 個并發(fā)請求的,并且在發(fā)出請求后,立刻斷掉與代理的連接,避免代理返回的數據將本身的帶寬堵死,而不能發(fā)動再次請求,這時 WEB 服務器會將響應這些請求的進程進行隊列,數據庫服務器也同樣如此,這樣一來,正常請求將會被排在很后被處理,就象本來你去食堂吃飯時,一般只有不到十個人在排隊,今天前面卻插了一千個人,那么輪到你的機會就很小很小了,這時就出現頁面打開極其緩慢或者白屏。
4-3 CC攻擊與DDOS的區(qū)別
DDoS是針對IP的攻擊,而CC攻擊的是服務器資源。
5-DOS攻擊
DOS:中文名稱是拒絕服務,一切能引起DOS行為的攻擊都被稱為DOS攻擊。該攻擊的效果是使得計算機或網絡無法提供正常的服務。常見的DOS攻擊有針對計算機網絡帶寬和連通性的攻擊。 DOS是單機于單機之間的攻擊。
DOS攻擊的原理:首先攻擊者向被攻擊的服務器發(fā)送大量的虛假IP請求,被攻擊者在收到請求后返回確認信息,等待攻擊者進行確認,(此處需要擁有HTTP協(xié)議工作方式和TCP三次握手的基本知識)該過程需要TCP的三次握手,由于攻擊者發(fā)送的請求信息是虛假的,所以服務器接收不到返回的確認信息,在一段時間內服務器會處與等待狀態(tài),而分配給這次請求的資源卻沒有被釋放。當被攻擊者等待一定的時間后,會因連接超時而斷開,這時攻擊者在次發(fā)送新的虛假信息請求,這樣最終服務器資源被耗盡,直到癱瘓。
6-DDOS攻擊
DDoS攻擊就是分布式的拒絕服務攻擊,DDoS攻擊手段是在傳統(tǒng)的DoS攻擊基礎之上產生的一類攻擊方式。單一的DoS攻擊一般是采用一對一方式的,隨著計算機與網絡技術的發(fā)展,DoS攻擊的困難程度加大了。于是就產生了DDoS攻擊,它的原理就很簡單:計算機與網絡的處理能力加大了10倍,用一臺攻擊機來攻擊不再能起作用,那么DDoS就是利用更多的傀儡機來發(fā)起進攻,以比從前更大的規(guī)模來進攻受害者。常用的DDoS軟件有:LOIC。
在這里補充兩點:第一就是DDOS攻擊不僅能攻擊計算機,還能攻擊路由器,因為路由器是一臺特殊類型的計算機;第二是網速決定攻擊的好和快,比如說,如果你一個被限制網速的環(huán)境下,它們的攻擊效果不是很明顯,但是快的網速相比之下更加具有攻擊效果。
網頁題目:PHP安全問題匯總
文章地址:http://weahome.cn/article/cjsdjs.html