① 如何通過IP過濾防禦DDoS攻擊
DDoS攻擊由來已久,但如此簡單粗暴的攻擊手法時至今日卻依然有效,並已成為困擾各大網站穩定運營的「頭號敵人」。
防DDoS攻擊可別小瞧對抗其有效手段之一的IP過濾
利用IP過濾抵禦DDoS攻擊
今天,隨著大量可連網智能設備的加速普及,這些智能設備被暴露出諸多的安全漏洞,甚至變成了DDoS攻擊大軍中的一員,就像此前將半個美國網路搞癱的Mirai僵屍網路攻擊一樣。
不過,在Mirai源代碼被蓄意公開之前,可連網智能設備被用於大規模DDoS攻擊的情況並不多見。可是現在的情況在Mirai源代碼公開後,顯然已經發生了巨大變化,不法黑客掌控可聯網設備的僵屍網路迅速拓張了其規模與攻擊威力。這時一旦這些設備或網路受到危害並用於惡意目的,企業將無法進行有效的防護。
這時,企業可以如果部署有一個可以持續監測並主動過濾受僵屍網路控制IP地址的網關,通過與威脅情報聯動,持續更新不良IP地址資料庫,就會掌握哪些IP地址已經被僵屍網路所控制或被其他惡意軟體入侵。
當來自這些惡意IP地址的流量抵達網關時,銳速雲能夠以高達10GB的線速自動過濾掉惡意流量,防止其到達防火牆,大大提升防火牆和相關安全解決方案的效率。這樣將極大減少防火牆等周邊保護工具和網路自身的工作負載,將企業遭受攻擊的風險降至最低。
在抵禦DDoS攻擊時,利用這種IP過濾的方式,至少能夠將1/3的惡意流量進行過濾,這可為企業網路防護節省出大量的投資成本,並提升網路的整體防禦能力。
而且通過過濾、攔截惡意IP地址還可阻止企業網路中那些已遭入侵的設備與黑客的指揮與控制中心進行通訊,防止這些設備被用作其他DDoS攻擊的幫凶,也能及時遏制潛在的數據泄露。
② 如何避免路由器攻擊九大方法
也就是說任何人都可以在其區域網上使用且僅能用於內部的IP地址。這些特定的IP地址是不允許用在公網上的。但在將路由器用於互聯網上的通信時,它還使用另外一個不同的IP地址,即公網IP地址。路由器的管理員無法控制公網IP地址,它是由把路由器連接到互聯網的ISP提供的。 這樣一來,除非做到公網IP僅能被互聯網上的計算機找到,而私有IP地址僅能被區域網上的計算機看到,這樣才能夠築起一道屏障,否則黑客們便可能登錄進路由器,進而危及到整個區域網的設備。 就像網路操作系統一樣,路由器操作系統也需要更新,以便糾正編程錯誤、軟體瑕疵和緩存溢出的問題。要經常向你的路由器廠商查詢當前的更新和操作系統的版本。 2. 修改默認口令:據卡內基梅隆大學的計算機應急反應小組稱,80%的安全事件都是由於較弱或者默認的口令引起的。避免使用普通的口令,並且使用大小寫字母混合的方式作為更強大的口令規則。3. 禁用HTTP設置和SNMP(簡單網路管理協議): 你的路由器的HTTP設置部分對於一個繁忙的網路管理員來說是很容易設置的。但是,這對路由器來說也是一個安全問題。如果你的路由器有一個命令行設置,禁用HTTP方式並且使用這種設置方式。如果你沒有使用你的路由器上的SNMP,那麼你就不需要啟用這個功能。思科路由器存在一個容易遭受GRE隧道攻擊的SNMP安全漏洞。 4. 封鎖ICMP(互聯網控制消息協議)ping請求: ping和其它ICMP功能對於網路管理員和黑客都是非常有用的工具。黑客能夠利用你的路由器上啟用的ICMP功能找出可用來攻擊你的網路的信息。 5. 禁用來自互聯網的telnet命令: 在大多數情況下,你不需要來自互聯網介面的主動的telnet會話。如果從內部訪問你的路由器設置會更安全一些。 6. 禁用IP定向廣播: IP定向廣播能夠允許對你的設備實施拒絕服務攻擊。一台路由器的內存和CPU難以承受太多的請求。這種結果會導致緩存溢出。 7. 禁用IP路由和IP重新定向: 重新定向允許數據包從一個介面進來然後從另一個介面出去。你不需要把精心設計的數據包重新定向到專用的內部網路。 8. 包過濾: 包過濾僅傳遞你允許進入你的網路的那種數據包。許多公司僅允許使用80埠(HTTP)和110/25埠(電子郵件)。此外,你可以封鎖和允許IP地址和范圍。9. 禁用不必要的服務: 無論是路由器、伺服器和工作站上的不必要的服務都要禁用。思科的設備通過網路操作系統默認地提供一些小的服務,如echo(回波), chargen(字元發生器協議)和discard(拋棄協議)。這些服務,特別是它們的UDP服務,很少用於合法的目的。但是,這些服務能夠用來實施拒絕服務攻擊和其它攻擊。包過濾可以防止這些攻擊。
③ DDOS幾種常見攻擊方式的原理及解決辦法
題主是想問,如果遇到DDOS攻擊,應該如何解決吧?
DDOS攻擊,叫做分布式拒絕服務攻擊,指通過過大的各種正常流量,大量佔用伺服器處理資源或網路資源,從而使用戶無法正常的連接到伺服器,達成訪問。當然,DDOS攻擊只是一種總的攻擊方式,最終的結果就是讓用戶無法正常訪問相應服務。
PC當前可以正常訪問server,並且server對PC提供服務需要佔用上行帶寬1M。那麼server理論上可以同時對100名正常用戶提供服務。
此時hacker希望針對server進行DDOS攻擊,那為了不暴露自己的身份,hacker不會使用自己的IP進行攻擊,他會各種世界各地的肉雞,各種各樣的IP對server進行攻擊,但是這種攻擊並不是向server注入什麼病毒木馬,而是正常的訪問server的服務,但是他們並不好好訪問,而是登錄之後立刻下線,然後再次登錄,再次下線,通過這樣的方式來佔用server的上行帶寬以及server連接數,導致正常的PC無法進行正常訪問,這個就是DDOS攻擊的模式,當然,DDOS攻擊有很多種不同的方式,比如帶寬佔用、TCP飢餓攻擊、ping of death等,這里就不一一列舉了。
那麼如何解決DDOS攻擊呢?
在這里列舉幾種常見的解決方式:
1、硬體防火牆
現在很多的下一代防火牆都帶有DDOS攻擊防治的功能,在設備出口處設置閾值針對於業務類型的閾值,比如門戶型網站伺服器,用戶登錄之後需要做的只是一些圖片、文檔的查閱,每一個IP向伺服器發送的流量是很有限的,可能只有幾十K的速率,那這時我們就可以針對於每一個訪問IP設置一個閾值,如果一個IP接入伺服器的速率超過100K,就將其暫時放入黑名單中,拒絕其後續的訪問,然後在一段時間之後進行黑名單解除。這樣的話,就可以避免大部分的DDOS攻擊。
2、無防火牆的環境
如果企業沒有防火牆,只有路由器做網關,如何防治DDOS?這時要基於攻擊方式來做區分:
如果是用登錄連接數作為攻擊方式的話,我們可以在伺服器上,針對於同一IP在一段時間內進行登錄次數進行閾值的設置,例如,1分鍾之後同一個IP登錄超過5次,則暫時將該IP放入黑名單,拒絕其訪問,一段時間之後再解禁即可。
如果是用流量擁堵的方式來進行攻擊的話,則可以通過更換伺服器IP的方式來暫時解決,然後在上游設備上將原有IP地址的下一跳置為空,也就是做一條空路由,這樣就可以暫時解決DDOS流量攻擊,當然,這是治標不治本的,最好的辦法就是增加帶寬,或者做伺服器的負載均衡。
總而言之,DDOS作為當前internet中最毒瘤的攻擊方式,幾乎無法完全避免,畢竟你有張良計,我有過牆梯,如果攻擊方有錢,無限制的攻擊你,你其實也沒有太好的辦法,所以,建議通過硬體防火牆預防DDOS攻擊,有些錢還是不能省的。
④ 如何阻止DDOS攻擊
步驟/方法
(1)定期掃描
要定期掃描現有的網路主節點,清查可能存在的安全漏洞,對新出現的漏洞及時進行清理。骨幹節點的計算機因為具有較高的帶寬,是黑客利用的最佳位置,因此 對這些主機本身加強主機安全是非常重要的。而且連接到網路主節點的都是伺服器級別的計算機,所以定期掃描漏洞就變得更加重要了。
(2)在骨幹節點配置防火牆
防火牆本身能抵禦Ddos攻擊和其他一些攻擊。在發現受到攻擊的時候,可以將攻擊導向一些犧牲主機,這樣可以保護真正的主機不被攻擊。當然導向的這些犧牲主機可以選擇不重要的,或者是linux以及unix等漏洞少和天生防範攻擊優秀的系統。
(3)用足夠的機器承受黑客攻擊
這是一種較為理想的應對策略。如果用戶擁有足夠的容量和足夠的資源給黑客攻擊,在它不斷訪問用戶、奪取用戶資源之時,自己的能量也在逐漸耗失,或許未等用戶被攻死,黑客已無力支招兒了。不過此方法需要投入的資金比較多,平時大多數設備處於空閑狀態,和目前中小企業網路實際運行情況不相符。
(4)充分利用網路設備保護網路資源
所謂網路設備是指路由器、防火牆等負載均衡設備,它們可將網路有效地保護起來。當網路被攻擊時最先死掉的是路由器,但其他機器沒有死。死掉的路由器經重 啟後會恢復正常,而且啟動起來還很快,沒有什麼損失。若其他伺服器死掉,其中的數據會丟失,而且重啟伺服器又是一個漫長的過程。特別是一個公司使用了負載 均衡設備,這樣當一台路由器被攻擊死機時,另一台將馬上工作。從而最大程度的削減了Ddos的攻擊。
(5)過濾不必要的服務和埠
可以使用Inexpress、Express、Forwarding等工具來過濾不必要的服務和埠,即在路由器上過濾假IP。比如Cisco公司的 CEF(Cisco Express Forwarding)可以針對封包Source IP和Routing Table做比較,並加以過濾。只開放服務埠成為目前很多伺服器的流行做法,例如WWW伺服器那麼只開放80而將其他所有埠關閉或在防火牆上做阻止策略。
(6)檢查訪問者的來源
使用Unicast Reverse Path Forwarding等通過反向路由器查詢的方法檢查訪問者的IP地址是否是真,如果是假的,它將予以屏蔽。許多黑客攻擊常採用假IP地址方式迷惑用戶, 很難查出它來自何處。因此,利用Unicast Reverse Path Forwarding可減少假IP地址的出現,有助於提高網路安全性。
(7)過濾所有RFC1918 IP地址
RFC1918 IP地址是內部網的IP地址,像10.0.0.0、192.168.0.0 和172.16.0.0,它們不是某個網段的固定的IP地址,而是Internet內部保留的區域性IP地址,應該把它們過濾掉。此方法並不是過濾內部員工的訪問,而是將攻擊時偽造的大量虛假內部IP過濾,這樣也可以減輕Ddos的攻擊。
(8)限制SYN/ICMP流量
用戶應在路由器上配置SYN/ICMP的最大流量來限制SYN/ICMP封包所能佔有的最高頻寬,這樣,當出現大量的超過所限定的SYN/ICMP流量 時,說明不是正常的網路訪問,而是有黑客入侵。早期通過限制SYN/ICMP流量是最好的防範DOS的方法,雖然目前該方法對於Ddos效果不太明顯了, 不過仍然能夠起到一定的作用。
⑤ 如何有效的防止DDOS攻擊
有效的防止DDOS攻擊的方法:
1、採用高性能的網路設備
首先要保證網路設備不能成為瓶頸,因此選擇路由器、交換機、硬體防火牆等設備的時候要盡量選用知名度高、口碑好的產品。
2、盡量避免NAT的使用
無論是路由器還是硬體防護牆設備要盡量避免採用網路地址轉換NAT的使用,因為採用此技術會較大降低網路通信能力,其實原因很簡單,因為NAT需要對地址來回轉換,轉換過程中需要對網路包的校驗和進行計算,因此浪費了很多CPU的時間。
3、充足的網路帶寬保證
網路帶寬直接決定了能抗受攻擊的能力,假若僅僅有10M帶寬的話,無論採取什麼措施都很難對抗現在的ddos攻擊,當前至少要選擇100M的共享帶寬。
(5)方法過濾攻擊擴展閱讀
DDOS攻擊方式
1、SYN Flood攻擊
SYN Flood攻擊是當前網路上最為常見的DDoS攻擊,它利用了TCP協議實現上的一個缺陷。通過向網路服務所在埠發送大量的偽造源地址的攻擊報文,就可能造成目標伺服器中的半開連接隊列被占滿,從而阻止其他合法用戶進行訪問。
2、UDP Flood攻擊
UDP Flood是日漸猖厥的流量型DDoS攻擊,原理也很簡單。常見的情況是利用大量UDP小包沖擊DNS伺服器或Radius認證伺服器、流媒體視頻伺服器。由於UDP協議是一種無連接的服務,在UDP Flood攻擊中,攻擊者可發送大量偽造源IP地址的小UDP包。
3、ICMP Flood攻擊
ICMP Flood攻擊屬於流量型的攻擊方式,是利用大的流量給伺服器帶來較大的負載,影響伺服器的正常服務。由於目前很多防火牆直接過濾ICMP報文。因此ICMP Flood出現的頻度較低。
4、Connection Flood攻擊
Connection Flood是典型的利用小流量沖擊大帶寬網路服務的攻擊方式,這種攻擊的原理是利用真實的IP地址向伺服器發起大量的連接。並且建立連接之後很長時間不釋放,佔用伺服器的資源,造成伺服器上殘余連接(WAIT狀態)過多,效率降低,甚至資源耗盡,無法響應其他客戶所發起的鏈接。
⑥ 如何防範SQL注入式攻擊
SQL注入攻擊的危害很大,而且防火牆很難對攻擊行為進行攔截,主要的SQL注入攻擊防範方法,具體有以下幾個方面。
1、分級管理
對用戶進行分級管理,嚴格控制用戶的許可權,對於普通用戶,禁止給予資料庫建立、刪除、修改等相關許可權,只有系統管理員才具有增、刪、改、查的許可權。
2、參數傳值
程序員在書寫SQL語言時,禁止將變數直接寫入到SQL語句,必須通過設置相應的參數來傳遞相關的變數。從而抑制SQL注入。數據輸入不能直接嵌入到查詢語句中。同時要過濾輸入的內容,過濾掉不安全的輸入數據。或者採用參數傳值的方式傳遞輸入變數,這樣可以最大程度防範SQL注入攻擊。
3、基礎過濾與二次過濾
SQL注入攻擊前,入侵者通過修改參數提交and等特殊字元,判斷是否存在漏洞,然後通過select、update等各種字元編寫SQL注入語句。因此防範SQL注入要對用戶輸入進行檢查,確保數據輸入的安全性,在具體檢查輸入或提交的變數時,對於單引號、雙引號、冒號等字元進行轉換或者過濾,從而有效防止SQL注入。
當然危險字元有很多,在獲取用戶輸入提交參數時,首先要進行基礎過濾,然後根據程序的功能及用戶輸入的可能性進行二次過濾,以確保系統的安全性。
4、使用安全參數
SQL資料庫為了有效抑制SQL注入攻擊的影響。在進行SQLServer資料庫設計時設置了專門的SQL安全參數。在程序編寫時應盡量使用安全參數來杜絕注入式攻擊,從而確保系統的安全性。
5、漏洞掃描
為了更有效地防範SQL注入攻擊,作為系統管理除了設置有效的防範措施,更應該及時發現系統存在SQL攻擊安全漏洞。系統管理員可以采購一些SQL漏洞掃描工具,通過專業的掃描工具,可以及時的掃描到系統存在的相應漏洞。
6、多層驗證
現在的網站系統功能越來越龐大復雜。為確保系統的安全,訪問者的數據輸入必須經過嚴格的驗證才能進入系統,驗證沒通過的輸入直接被拒絕訪問資料庫,並且向上層系統發出錯誤提示信息。同時在客戶端訪問程序中驗證訪問者的相關輸入信息,從而更有效的防止簡單的SQL注入。但是如果多層驗證中的下層如果驗證數據通過,那麼繞過客戶端的攻擊者就能夠隨意訪問系統。因此在進行多層驗證時,要每個層次相互配合,只有在客戶端和系統端都進行有效的驗證防護,才能更好地防範SQL注入攻擊。
7、資料庫信息加密
傳統的加解密方法大致分為三種:對稱加密、非對稱加密、不可逆加密。
⑦ js用什麼函數過濾非法字元防止跨站腳本攻擊
test
如:抄<input type="text" id="txtceshi" /><input type="button" onclick="yanzheng()" value="ceshi" />
<script type="text/javascript">
function yanzheng() {
var ce = txtceshi.value;//獲取文本框的值
var ze = /[^0-9]+/; //只能是數字,這里可以在網上找到一些正則替換成你想要的表達式
if (ze.test(ce)) {
alert("數據不合法!");
}
}
</script>
⑧ 有幾種防止遠程桌面被人攻擊的方法
必須禁止的服務
1.NetMeeting Remote Desktop Sharing:允許受權的用戶通過NetMeeting在網路上互相訪問對方。這項服務對大多數個人用戶並沒有多大用處,況且服務的開啟還會帶來安全問題,因為上網時該服務會把用戶名以明文形式發送到連接它的客戶端,黑客的嗅探程序很容易就能探測到這些賬戶信息。
2.Universal Plug and Play Device Host:此服務是為通用的即插即用設備提供支持。這項服務存在一個安全漏洞,運行此服務的計算機很容易受到攻擊。攻擊者只要向某個擁有多台Win XP系統的網路發送一個虛假的UDP包,就可能會造成這些Win XP主機對指定的主機進行攻擊(DDoS)。另外如果向該系統1900埠發送一個UDP包,令「Location」域的地址指向另一系統的chargen埠,就有可能使系統陷入一個死循環,消耗掉系統的所有資源(需要安裝硬體時需手動開啟)。
3.Messenger:俗稱信使服務,電腦用戶在區域網內可以利用它進行資料交換(傳輸客戶端和伺服器之間的Net Send和Alerter服務消息,此服務與Windows Messenger無關。如果服務停止,Alerter消息不會被傳輸)。這是一個危險而討厭的服務,Messenger服務基本上是用在企業的網路管理上,但是垃圾郵件和垃圾廣告廠商,也經常利用該服務發布彈出式廣告,標題為「信使服務」。而且這項服務有漏洞,MSBlast和Slammer病毒就是用它來進行快速傳播的。
4.Terminal Services:允許多位用戶連接並控制一台機器,並且在遠程計算機上顯示桌面和應用程序。如果你不使用Win XP的遠程式控制制功能,可以禁止它。
5.Remote Registry:使遠程用戶能修改此計算機上的注冊表設置。注冊表可以說是系統的核心內容,一般用戶都不建議自行更改,更何況要讓別人遠程修改,所以這項服務是極其危險的。
6.Fast User Switching Compatibility:在多用戶下為需要協助的應用程序提供管理。Windows XP允許在一台電腦上進行多用戶之間的快速切換,但是這項功能有個漏洞,當你點擊「開始→注銷→快速切換」,在傳統登錄方式下重復輸入一個用戶名進行登錄時,系統會認為是暴力破解,而鎖定所有非管理員賬戶。如果不經常使用,可以禁止該服務。或者在「控制面板→用戶賬戶→更改用戶登錄或注銷方式」中取消「使用快速用戶切換」。
7.Telnet:允許遠程用戶登錄到此計算機並運行程序,並支持多種 TCP/IP Telnet客戶,包括基於 UNIX 和 Windows 的計算機。又一個危險的服務,如果啟動,遠程用戶就可以登錄、訪問本地的程序,甚至可以用它來修改你的ADSL Modem等的網路設置。除非你是網路專業人員或電腦不作為伺服器使用,否則一定要禁止它。
8.Performance Logs And Alerts:收集本地或遠程計算機基於預先配置的日程參數的性能數據,然後將此數據寫入日誌或觸發警報。為了防止被遠程計算機搜索數據,堅決禁止它。
9.Remote Desktop Help Session Manager:如果此服務被終止,遠程協助將不可用。
10.TCP/IP NetBIOS Helper:NetBIOS在Win 9X下就經常有人用它來進行攻擊,對於不需要文件和列印共享的用戶,此項也可以禁用。
可以禁止的服務
以上十項服務是對安全威脅較大的服務,普通用戶一定要禁用它。另外還有一些普通用戶可以按需求禁止的服務:
1.Alerter:通知所選用戶和計算機有關系統管理級警報。如果你未連上區域網且不需要管理警報,則可將其禁止。
2.Indexing Service:本地和遠程計算機上文件的索引內容和屬性,提供文件快速訪問。這項服務對個人用戶沒有多大用處。
3.Application Layer Gateway Service:為Internet連接共享和Internet連接防火牆提供第三方協議插件的支持。如果你沒有啟用Internet連接共享或Windows XP的內置防火牆,可以禁止該服務。
4.Uninterruptible Power Supply:管理連接到計算機的不間斷電源,沒有安裝UPS的用戶可以禁用。
5.Print Spooler:將文件載入到內存中以便稍後列印。如果沒裝列印機,可以禁用。
6.Smart Card:管理計算機對智能卡的讀取訪問。基本上用不上,可以禁用。
7.Ssdp Discovery Service:啟動家庭網路上的upnp設備自動發現。具有upnp的設備還不多,對於我們來說這個服務是沒有用的。
8.Automatic Updates:自動從Windows Update網路更新補丁。利用Windows Update功能進行升級,速度太慢,建議大家通過多線程下載工具下載補丁到本地硬碟後,再進行升級。
9.Clipbook:啟用「剪貼板查看器」儲存信息並與遠程計算機共享。如果不想與遠程計算機進行信息共享,就可以禁止。
10.Imapi Cd-burning Com Service:用Imapi管理CD錄制,雖然Win XP中內置了此功能,但是我們大多會選擇專業刻錄軟體,另外如果沒有安裝刻錄機的話,也可以禁止該服務。
11.Workstation:創建和維護到遠程服務的客戶端網路連接。如果服務停止,這些連接都將不可用。
12.Error Reporting Service:服務和應用程序在非標准環境下運行時,允許錯誤報告。如果你不是專業人員,這個錯誤報告對你來說根本沒用。
參考資料:http://www.jd-bbs.com/archiver/?tid-957720.html
⑨ 如何防止xss攻擊,需要過濾什麼
XSS攻擊通常是指黑客通過"HTML注入"篡改了網頁,插入了惡意的腳本,從而在用戶瀏覽網頁時,控制用戶瀏覽器的一種攻擊。
一、HttpOnly防止劫取Cookie
HttpOnly最早由微軟提出,至今已經成為一個標准。瀏覽器將禁止頁面的Javascript訪問帶有HttpOnly屬性的Cookie。目前主流瀏覽器都支持,HttpOnly解決是XSS後的Cookie支持攻擊。
我們來看下網路有沒有使用。
未登錄時的Cookie信息
可以看到,所有Cookie都沒有設置HttpOnly,現在我登錄下
發現在個叫BDUSS的Cookie設置了HttpOnly。可以猜測此Cookie用於認證。
下面我用PHP來實現下:
<?php
header("Set-Cookie: cookie1=test1;");
header("Set-Cookie: cookie2=test2;httponly",false);
setcookie('cookie3','test3',NULL,NULL,NULL,NULL,false);
setcookie('cookie4','test4',NULL,NULL,NULL,NULL,true);
?>
<script>
alert(document.cookie);
</script>
js只能讀到沒有HttpOnly標識的Cookie
二、輸入檢查
輸入檢查一般是檢查用戶輸入的數據中是否包含一些特殊字元,如<、>、'、"等,如果發現存在特殊字元,則將這些字元過濾或者編碼。
例如網站注冊經常用戶名只允許字母和數字的組合,或者郵箱電話,我們會在前端用js進行檢查,但在伺服器端代碼必須再次檢查一次,因為客戶端的檢查很容易繞過。
網上有許多開源的「XSS Filter」的實現,但是它們應該選擇性的使用,因為它們對特殊字元的過濾可能並非數據的本意。比如一款php的lib_filter類:
$filter = new lib_filter();
echo $filter->go('1+1>1');
它輸出的是1,這大大歪曲了數據的語義,因此什麼情況應該對哪些字元進行過濾應該適情況而定。
三、輸出檢查
大多人都知道輸入需要做檢查,但卻忽略了輸出檢查。
1、在HTML標簽中輸出
如代碼:
<?php
$a = "<script>alert(1);</script>";
$b = "<img src=# onerror=alert(2) />";
?>
<div><?=$b?></div>
<a href="#"><?=$a?></a>
這樣客戶端受到xss攻擊,解決方法就是對變數使用htmlEncode,php中的函數是htmlentities
<?php
$a = "<script>alert(1);</script>";
$b = "<img src=# onerror=alert(2) />";
?>
<div><?=htmlentities($b)?></div>
<a href="#"><?=htmlentities($a)?></a>
2、在HTML屬性中輸出
<div id="div" name ="$var"></div>
這種情況防禦也是使用htmlEncode
在owasp-php中實現:
$immune_htmlattr = array(',', '.', '-', '_');
$this->htmlEntityCodec->encode($this->immune_htmlattr, "\"><script>123123;</script><\"");
3、在<script>標簽中輸出
如代碼:
<?php
$c = "1;alert(3)";
?>
<script type="text/javascript">
var c = <?=$c?>;
</script>
這樣xss又生效了。首先js變數輸出一定要在引號內,但是如果我$c = "\"abc;alert(123);//",你會發現放引號中都沒用,自帶的函數都不能很好的滿足。這時只能使用一個更加嚴格的JavascriptEncode函數來保證安全——除數字、字母外的所有字元,都使用十六進制"\xHH"的方式進行編碼。這里我採用開源的owasp-php方法來實現
$immune = array("");
echo $this->javascriptCodec->encode($immune, "\"abc;alert(123);//");
最後輸出\x22abc\x3Balert\x28123\x29\x3B\x2F\x2F
4、在事件中輸出
<a href="#" onclick="funcA('$var')" >test</a>
可能攻擊方法
<a href="#" onclick="funcA('');alter(/xss/;//')">test</a>
這個其實就是寫在<script>中,所以跟3防禦相同
5、在css中輸出
在owasp-php中實現:
$immune = array("");
$this->cssCodec->encode($immune, 'background:expression(window.x?0:(alert(/XSS/),window.x=1));');
6、在地址中輸出
先確保變數是否是"http"開頭,然後再使用js的encodeURI或encodeURIComponent方法。
在owasp-php中實現:
$instance = ESAPI::getEncoder();
$instance->encodeForURL(『url』);
四、處理富文體
就像我寫這篇博客,我幾乎可以隨意輸入任意字元,插入圖片,插入代碼,還可以設置樣式。這個時要做的就是設置好白名單,嚴格控制標簽。能自定義 css件麻煩事,因此最好使用成熟的開源框架來檢查。php可以使用htmlpurify
五、防禦DOM Based XSS
DOM Based XSS是從javascript中輸出數據到HTML頁面里。
<script>
var x = "$var";
document.write("<a href='"+x+"'>test</a>");
</script>
按照三中輸出檢查用到的防禦方法,在x賦值時進行編碼,但是當document.write輸出數據到HTML時,瀏覽器重新渲染了頁面,會將x進行解碼,因此這么一來,相當於沒有編碼,而產生xss。
防禦方法:首先,還是應該做輸出防禦編碼的,但後面如果是輸出到事件或腳本,則要再做一次javascriptEncode編碼,如果是輸出到HTML內容或屬性,則要做一次HTMLEncode。
會觸發DOM Based XSS的地方有很多:
document.write()、document.writeln()、xxx.innerHTML=、xxx.outerHTML=、innerHTML.replace、document.attachEvent()、window.attachEvent()、document.location.replace()、document.location.assign()
⑩ 輸入參數過濾可以預防以下哪些攻擊
輸入參數過濾可以預防以下哪些攻擊()
A.SQL注入、跨站腳本、緩沖區溢出
B.SQL注入、跨站腳本、DNS毒葯
C.SQL注入、跨站請求偽造、網路竊聽
D.跨站請求偽造、跨站腳本、DNS毒葯
答案:B