當前位置:首頁 » 編程語言 » SQL注入造成的危害包括
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

SQL注入造成的危害包括

發布時間: 2023-05-21 20:44:49

『壹』 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、資料庫信息加密
傳統的加解密方法大致分為三種:對稱加密、非對稱加密、不可逆加密。

『貳』 簡單分析什麼是SQL注入漏洞

實例:

正常提交內容張三

SELECT name,id from user WHERE name='張三'

SQL注入提交內容 張三' or '1'='1

SELECT name,id from user WHERE name='張三' or '1'='1'

因為'1'='1' 恆成立 所以會顯示user 表所有內容,如果再返回里加上密碼等 信息就嚴重泄漏了

『叄』 下列哪些選項屬於SQL注入的危害

SQL注入的危害

  • 資料庫信息泄漏:資料庫中存放的用戶的隱私信息的泄露。

  • 網頁篡改:通過操作資料庫對特定網頁進行篡改。

  • 網站被掛馬,傳播惡意軟體:修改資料庫一些欄位的值,嵌入網馬鏈接,進行掛馬攻擊。

  • 資料庫被惡意操作:資料庫伺服器被攻擊,資料庫的系統管理員帳戶被竄改。

  • 伺服器被遠程式控制制,被安裝後門。經由資料庫伺服器提供的操作系統支持,讓黑客得以修改或控制操作系統。

  • 破壞硬碟數據,癱瘓全系統

『肆』 如何防範SQL注入漏洞及檢測

以下是OMG我為大家收集整理的文章,希望對大家有所幫助。

SQL注入(SQLInjection)漏洞攻擊是目前網上最流行最熱門的黑客腳本攻擊方法之一,那什麼是SQL注入漏洞攻擊呢?它是指黑客利用一些Web應用程序(如:網站、論壇、留言本、文章發布系統等)中某些存在不安全代碼或SQL語句不縝密的頁面,精心構造SQL語句,把非法的SQL語句指令轉譯到系統實際SQL語句中並執行它,以獲取用戶名、口令等敏感信息,從而達到控制主機伺服器的攻擊方法。

1. SQL注入漏洞攻擊原理

1. 1 SQL注入漏洞攻擊實現原理

SQL(Structured Query Language)是一種用來和資料庫交互的語言文本。SQL注入的攻擊原理就是攻擊者通過Web應用程序利用SQL語句或字元串將非法的數據插入到伺服器端資料庫中,獲取資料庫的管理用戶許可權,然後將資料庫管理用戶許可權提升至操作系統管理用戶許可權,控制伺服器操作系統,獲取重要信息及機密文件。

SQL注入漏洞攻擊主要是通過藉助於HDSI、NBSI和Domain等SQL注入漏洞掃描工具掃描出Web頁面中存在的SQL注入漏洞,從而定位SQL注入點,通過執行非法的SQL語句或字元串達到入侵者想要的操作。下面以一段身份驗證的.NET代碼為例,說明一下SQL 注入攻擊的實現方法。

SqlConnectionnwConn = new SqlConnection((string)ConfigurationSettings.AppSettings["DBconnStrings"]); string queryStr = "SELECT userid,userpwd, username,type FROM users where userid='" + Txtusername.Text +"'";

DataSet userSet = new DataSet();

SqlDataAdapter userAdapter = newSqlDataAdapter(queryStr, nwConn);

userAdapter.Fill(userSet, "Users");

Session["UserID"] =Txtusername.Text.ToString();

Session["type"] =type.Text.ToString();

Response.Redirect("/Myweb/admin/login.aspx");

從上面的代碼中可以看出,程序在與資料庫建立連接得到用戶數據之後,直接將username的值通過session傳給login.aspx,沒有進行任何的過濾和處理措施, 直接用來構造SQL 語句, 其危險系數是非常高的, 攻擊者只要根據SQL 語句的編寫規則就可以繞過身份驗證,從而達到入侵的目的。

1. 2 SQL注入漏洞攻擊分析

SQL注入可以說是一種漏洞,也可以說是一種攻擊。當程序中的變數處理不當,沒有對用戶提交的數據類型進行校驗,編寫不安全的代碼,構造非法的SQL語句或字元串,都可能產生這個漏洞。

例如Web系統有一個login頁面,這個login頁面控制著用戶是否有權訪問,要求用戶輸入一個用戶名和口令,連接資料庫的語句為:

“select * from users where username = 'username' andpassword = 'password'”

攻擊者輸入用戶名為aa or 1=1口令為1234 or 1=1之類的內容。我們可以看出實際上攻擊者並不知道真正的用戶名、口令,該內容提交給伺服器之後,伺服器執行攻擊者構造出的SQL命令,但由於攻擊者輸入的內容非常特殊,所以最後得到的SQL命令變成:

“select * from users where username = 'aa' or 1=1 andpassword = '1234' or 1=1”

伺服器執行查詢或存儲過程,將用戶輸入的身份信息和資料庫users表中真實的身份信息進行核對,由於SQL命令實際上已被修改,存在永遠成立的1=1條件,因此已經不能真正驗證用戶身份,所以系統會錯誤地授權攻擊者訪問。

SQL 注入是通過目標伺服器的80埠進行的,是正常的Web訪問,防火牆不會對這種攻擊發出警告或攔截。當Web伺服器以普通用戶的身份訪問資料庫時,利用SQL注入漏洞就可能進行創建、刪除、修改資料庫中所有數據的非法操作。而當資料庫以管理用戶許可權的身份進行登錄時,就可能控制整個資料庫伺服器。

SQL注入的方法很多,在以手動方式進行攻擊時需要構造各種各樣的SQL語句,所以一般攻擊者需要豐富的經驗和耐心,才能繞過檢測和處理,提交語句,從而獲得想要的有用信息。這個過程需要花費很多的時間,如果以這種手動方式進行SQL注入漏洞攻擊,許多存在SQL注入漏洞的ASP、JSP、PHP、JAVA等網站就會安全很多了,不是漏洞不存在了,而是手動入侵者需要編程基礎,但現在攻擊者可以利用一些現成的黑客工具來輔助SQL注入漏洞攻擊,加快入侵的速度,使SQL注入變得輕而易舉。

由於SQL注入漏洞攻擊利用的是通用的SQL語法,使得這種攻擊具有廣泛性。理論上說,對於所有基於SQL語言的資料庫管理系統都是有效的,包括MSSQLServer、Oracle、DB2、Sybase和MySQL等。當然,各種系統自身的SQL擴展功能會有所不同,因此最終的攻擊代碼可能不盡相同。

1. 3 SQL注入漏洞攻擊過程

(1)繞過身份驗證

如一個login界面,需要輸入用戶名和口令,然後Post到另一個頁面,進行身份驗證,因此攻擊者只需在用戶名和口令的輸入框中都輸入aa or’1’=’1’的內容,那麼攻擊者就可以通過欺騙的驗證方式而直接進入下一個頁面,並擁有和正常登錄用戶一樣的全部特權。原因是什麼呢? 我們比較一下正常用戶登錄和攻擊者登錄時的兩種SQL語句:

1)正常用戶(如用戶名為admin,口令為1234567) :

SQL= " selectfrom users where username = ’admin’and password= ’1234567’ ";

2)攻擊者(用戶名和口令都為aa or’1’=’1’) :

SQL= " select * from users where username='aa or’1’=’1’'and password = ' aa or’1’=’1’'";

可以看到由and連接的兩個條件都被一個永遠成立的1=1所代替,執行的結果為true,資料庫會認為條件恆成立,會返回一個true,讓攻擊者以合法身份登錄進入下一個頁面。

(2)執行非法操作

如一個查詢頁面select1.asp? id=1,編程人員原本設計意圖是顯示id為1的查詢信息,而攻擊者利用程序中沒有對id內容進行檢查的機制,插入自己的代碼。

從select1.asp中摘錄一段關鍵代碼:

SQL= " select *from photo where photoid= 'id'";

可以看到,id沒有進行任何的處理,直接構成SQL語句並執行,而攻擊者在知道該系統資料庫中表名及欄位名的情況下,利用SQL語句特性(分號是將兩句SQL 語句分開的符號),直接向資料庫Tuser表中添加記錄:

select1.asp? id= 1;Insertinto Tuser (username,password,type) values ('hack','1234567','管理員'),然後攻擊者就可以直接用hack進行登錄了。通過這樣的方法,攻擊者還可以對系統做任何的事情,包括添加、刪除、修改系統資源的操作。

(3)執行系統命令

如果Web主機使用MSSQL資料庫管理系統,那麼攻擊者就可以用到xp_cmdshell這個擴展存儲過程,xp_cmdshell是一個非常有用的擴展存儲過程,用於執行系統命令,比如dir、net等,攻擊者可以根據程序的不同,提交不同的語句:

execmaster.dbo.xp_cmdshell " dir "; exec master.dbo.xp_cmdshell" net user hack 1234567 /add ";

execmaster.dbo.xp_cmdshell " net localgroup administrators hack /add ";

這樣就可以向Web主機系統中成功添加了一個管理員帳戶。

2. SQL注入漏洞攻擊的檢測方式及方法

2. 1檢測方式

SQL注入漏洞攻擊檢測分為入侵前的檢測和入侵後的檢測。入侵前的檢測,可以通過手工方式,也可以使用SQL注入漏洞掃描工具軟體。檢測的目的是為預防SQL注入漏洞攻擊,而對於SQL注入漏洞攻擊後的檢測,主要是針對審計日誌的查看,SQL注入漏洞攻擊成功後,會在Web Service和資料庫的審計日誌中留下“痕跡”。

2. 2檢測方法

(1)動態SQL檢查

動態的SQL語句是一個進行資料庫查詢的強大的工具,但把它和用戶輸入混合在一起就使SQL注入成為了可能。將動態的SQL語句替換成預編譯的SQL或者存儲過程對大多數應用程序是可行的。預編譯的SQL或者存儲過程可以將用戶的輸入作為參數而不是命令來執行,這樣就限制了入侵者的行動。當然,它不適用於存儲過程中利用用戶輸入來生成SQL命令的情況。在這種情況下,用戶輸入的SQL命令仍可能得到執行,資料庫仍然存在SQL注入漏洞攻擊的危險。

(2)有效性校驗

如果一個輸入框只可能包括數字,那麼要通過驗證確保用戶輸入的都是數字。如果可以接受字母,檢查是不是存在不可接受的字元,那就需要設置字元串檢查功能。確保應用程序要檢查以下字元:分號、等號、破折號、括弧以及SQL關鍵字。

(3)數據表檢查

使用SQL注入漏洞攻擊工具軟體進行SQL注入漏洞攻擊後,都會在資料庫中生成一些臨時表。通過查看資料庫中最近新建的表的結構和內容,可以判斷是否曾經發生過SQL注入漏洞攻擊。

(4)審計日誌檢查

在Web伺服器中如果啟用了審計日誌功能,則Web Service審計日誌會記錄訪問者的IP地址、訪問時間、訪問文件等信息,SQL注入漏洞攻擊往往會大量訪問某一個頁面文件(存在SQL注入點的動態網頁),審計日誌文件會急劇增加,通過查看審計日誌文件的大小以及審計日誌文件中的內容,可以判斷是否發生過SQL注入漏洞攻擊事件;另外還可以通過查看資料庫審計日誌,查詢某個時間段是否有非法的插入、修改、刪除操作。

(5)其他

SQL注入漏洞攻擊成功後,入侵者往往會添加特權用戶(如:administrator、root、sa等)、開放非法的遠程服務以及安裝木馬後門程序等,可以通過查看用戶帳戶列表、遠程服務開啟情況、系統最近日期產生的一些文件等信息來判斷是否發生過入侵。

3. SQL注入漏洞防範措施

SQL注入漏洞攻擊的防範方法有很多種,現階段總結起來有以下方法:

(1)數據有效性校驗。如果一個輸入框只可能包括數字,那麼要通過校驗確保用戶輸入的都是數字。如果可以接受字母,那就要檢查是不是存在不可接受的字元,最好的方法是增加字元復雜度自動驗證功能。確保應用程序要檢查以下字元:分號、等號、破折號、括弧以及SQL關鍵字。另外限製表單數據輸入和查詢字元串輸入的長度也是一個好方法。如果用戶的登錄名最多隻有10個字元,那麼不要認可表單中輸入10個以上的字元,這將大大增加攻擊者在SQL命令中插入有害代碼的難度。

(2)封裝數據信息。對客戶端提交的數據進行封裝,不要將數據直接存入cookie中,方法就是在編程的代碼中,插入session、if、try、else,這樣可以有效地防止攻擊者獲取cookie中的重要信息。

(3)去除代碼中的敏感信息。將在代碼中存在的用戶名、口令信息等敏感欄位刪除,替換成輸入框。

SQL=" select from users where username = ’admin’and password= ’1234567’ "

如:這樣顯然會暴露管理員的用戶名、口令信息。可以將其修改成:

SQL= " select * from users where username='" +Txtuser.Text + "' and userpwd='" + Textpwd.Text + "'"

這樣就安全了很多,入侵者也是不會輕易的就獲取到用戶名、口令信息。

(4)替換或刪除單引號。使用雙引號替換掉所有用戶輸入的單引號,這個簡單的預防措施將在很大程度上預防SQL注入漏洞攻擊,單引號時常會無法約束插入數據的Value,可能給予輸入者不必要的許可權。用雙引號替換掉單引號可以使大部分SQL注入漏洞攻擊失敗。 如:

“select* from users where username='" + admin + "' and userpwd='" + 1234567+ "'”

顯然會得到與

“select * from users where username='admin' and password= '1234567'”

相同的結果。

(5)指定錯誤返回頁面。攻擊者有時從客戶端嘗試提交有害代碼和攻擊字元串,根據Web Service給出的錯誤提示信息來收集程序及伺服器的信息,從而獲取想得到的資料。應在Web Service中指定一個不包含任何信息的錯誤提示頁面。

(6)限制SQL字元串連接的配置文件。使用SQL變數,因為變數不是可以執行的腳本,即在Web頁面中將連接資料庫的SQL字元串替換成指定的Value,然後將Web.config文件進行加密,拒絕訪問。

(7)設置Web目錄的訪問許可權。將虛擬站點的文件目錄禁止遊客用戶(如:Guest用戶等)訪問,將User用戶許可權修改成只讀許可權,切勿將管理許可權的用戶添加到訪問列表。

(8)最小服務原則。Web伺服器應以最小許可權進行配置,只提供Web服務,這樣可以有效地阻止系統的危險命令,如ftp、cmd、vbscript等。

(9)鑒別信息加密存儲。將保存在資料庫users表中的用戶名、口令信息以密文形式保存,也可以對users表進行加密處理,這樣可以大大增加對鑒別信息訪問的安全級別。

(10)用戶許可權分離。應盡可能的禁止或刪除資料庫中sa許可權用戶的訪問,對不同的資料庫劃分不同的用戶許可權,這樣不同的用戶只能對授權給自己的資料庫執行查詢、插入、更新、刪除操作,就可以防止不同用戶對非授權的資料庫進行訪問。

4. 結束語

SQL注入漏洞攻擊在網上非常普遍,許多ASP、PHP論壇和文章管理系統、下載系統以及新聞系統都存在這個漏洞。造成SQL注入漏洞攻擊的主要原因是開發人員在系統開發的過程中編程不規范,沒有形成良好的編程習慣,問題的解決只有依賴於規范編程。此外,也可以使用現有的SQL注入漏洞掃描器對整個網站中的關鍵代碼進行掃描,查找網站頁面中存在的SQL注入點。對於有問題的頁面,可以及時刪除或更新。本文通過對SQL注入漏洞攻擊的方法、原理以及攻擊實施過程進行了闡述和總結,並給出了一些常見的SQL注入漏洞攻擊防範的方法。

『伍』 淺析sql注入漏洞與防範措施誰寫的

這是一個比較激掘常見的題目,我可以給您提供一個淺析 SQL 注入漏洞和防範措施的參考:

一明伏核、 SQL 注入漏洞是什麼?

SQL 注入漏洞是指攻擊者通過輸入惡意的 SQL 代碼來實現對資料庫的非法訪問和操作的一種漏洞攻擊方式。攻擊者通過在表單等輸入框中注入 SQL 語句,即可繞過應用程序的認證和授權機制,獲取、更改、刪除等非法操作資料庫中的敏感數據。

二、 SQL 注入漏洞的影響及危害

1. 竊取數據:攻擊者可以通過 SQL 注入漏洞竊取系統中的敏感數據,如用戶名、密碼、支付信息等等。

2. 破壞數據:攻擊者通過 SQL 注入漏洞可以刪除、更改、破壞資料庫中的數據,致使系統服務不可用。

3. 破壞系統:攻擊者可通過 SQL 注入漏洞執行攻擊代碼,破壞系統和伺服器穩定性和安全性。

三、 SQL 注入漏洞防範措施

針對 SQL 注入漏洞的攻擊可能性,可以採取以下幾種防範措施:

1. 使用參數化的 SQL 查詢。使用預編譯語句能有效避免 SQL 注入攻擊。

2. 過濾用戶輸入數據。對於用戶輸入的數據進行校驗和過濾,例如過濾掉單引號、引號等特殊字元。

3. 使用安全的編程語言。使用一些安全的編程語言,例如 Java、Python、PHP 等語言,它們都提供了一些高級防範 SQL 注入 的 API。

4. 定期檢查和更新應用程序。更新應用程序可以修復已知的漏洞並增強系統的安全性,在檢查應用程序的漏洞時可以檢測 SQL 注入漏洞的存在。

5. 對數據和系統進行加密。加密資料庫中的數據和系統文件可以增強對敏感數據和保護系統的安全性。

總結:SQL 注入漏洞是一種比較危險的漏洞攻擊方式,為了保障系統安全,我們需要認真選擇開發語言、定期更新系統和應用程序,對用戶輸入的數據進行過濾和處理,以及加強數據和系統的安全。廳坦同時,也要提高開發人員的安全意識,從源頭上預防 SQL 注入漏洞的出現。

『陸』 簡單分析什麼是SQL注入漏洞

轉:

SQL注入,由於程序在實際使用中,為了管理龐大的數據信息,就會使用到資料庫。資料庫可以方便程序對所有數據信息進行統一的存儲和分類組織,便於查詢更新。用戶在使用程序時,程序可以自動通過對資料庫的查詢,將所獲得的信息按照一定格式反饋給用戶,同時用戶也是通過互動式的對話框提交給程序數據,從而使程序按照用戶想要的信息進行查詢,反饋給用戶想要的信息。
對於程序這種資料庫操作,先來看一段代碼:
strKeyword = Request ["keyword"];
sqlQuery = "SELECT * FROM Aritcles WHERE Keywords LIKE '%" +strKeyword + "%'";
這段代碼的主要目的是按照用戶提交的關鍵字Keyword,對軟體連接資料庫中的文件進行搜索,找出所有包含用戶關鍵字的文章來。假設此時,我們提交給軟體「hack」這個數據,這時,「hack」這個關鍵字就會被傳遞給Keyword關鍵變數。接下來看看代碼的執行情況,keyword獲得數據「hack」後,被賦值給strKeyword變數,然後strKeyword變數被放入查詢語句,此時的查詢語句表現為:"SELECT * FROM Aritcles WHERE Keywords LIKE '%hack%'",這個查詢語句的意思就是從資料庫Aritcles表中查詢出所有包含「hack」這個關鍵字的文章。注意「hack」這個單詞是我們提交給程序的,因此可以對其隨意修改的。於是,可以這樣修改,把它變為「hack'; DROP TABLE Aritcles; --」。
現在看看程序會怎樣處理這個外部關鍵字數據。首先,查詢語句變成了:「SELECT * FROM Aritcles WHERE Keywords LIKE '%hack%'; DROP TABLE Aritcles; --」,我們知道DROP TABLE語句是在資料庫操作中刪除一個指定的表的意思,現在那個查詢語句的意思就變了,以中間的分號為標志,分成兩個部分,首先還是正常的查出所有包含hack關鍵字的文章。但是接下來……
由於程序使用的資料庫是微軟的SQL SERVER,該資料庫支持多命令語句執行,這些資料庫操作的命令語句都是由分號分隔開,然後依次執行的。這里的「DROP TABLE Aritcles; --」是一個完全合法的命令語句,「--」符號是SQL SERVER資料庫特有注釋標識,資料庫不執行任何命令。這樣,當這段查詢語句執行時,就會去執行一個刪除Aritcles表的資料庫命令。
像這樣,通過控制傳遞給程序資料庫操作語句的關鍵變數來獲得惡意控製程序資料庫,從而獲取有用信息或者製造惡意破壞的,甚至是控制用戶計算機系統的漏洞,就稱之為「SQL注入漏洞」。
SQL注入漏洞完全是利用了將包含了某種目的的SQL語句,通過關鍵變數插入到程序中正常的資料庫操作語句里。程序一旦發生注入漏洞,就會引發一系列安全隱患。
SQL注入漏洞是不分語言的,無論用什麼語言開發的程序,只要涉及對資料庫的操作,都可能存在SQL注入漏洞。雖然有時會因為編寫語言的要求,或者程序設置環境的不同,導致SQL注入漏洞很難被常用的方法利用,但是總可以找到突破的方法。

2

下面以網站程序為例,看一看SQL注入漏洞最經常被利用的地方,也是危害最大的地方。
都知道對於一個網站來說,可以說資料庫存放著網站所有的信息,WEB應用程序完全是憑借資料庫中的信息進行正常的運行的。一個網站程序中,最關鍵的一個部分就是對用戶的合法性的判斷,也就是看訪問它的用戶是不是一個注冊的用戶。這個時候,就會要求輸入用戶名和密碼,然後根據輸入的信息查詢資料庫,判斷是否存在用戶,並檢查密碼是不是一致,如果一致則承認合法用戶,否則將給予非法提示。下面看一段常常出現在論壇程序中的用戶認證程序代碼:
(1)admin1 = trim(request("name"))
(2)password1 = trim(request("password"))
(3)Set rs = Server.CreateObject ("ADODB.Recordset")
(4)sql = "select * from userlogin where name='"&admin1&"' and password='"&password1&"'"
(5)rs.Open sql,conn,1,1
(6)if rs.eof and rs.bof then
(7)response.write"<SCRIPT language=JavaScript>alert('用戶名或密碼不正確!')"
(8)response.write"javascript:history.go(-1)</SCRIPT>"
(9)response.end
(10)else
(11)session("name")=rs("name")
(12)session("password")=rs("password")
(13)response.Redirect("default.asp")
(14)end if
這段程序的第1和第2行分別通過Request對象獲得用戶名和密碼,第3行是建立一個資料庫操作集對象,第4行就是將用戶名以及密碼同時作為查詢條件放入到userlogin表中進行查詢,第5到第14行就是根據查詢結果進行判斷,彈出警告窗口,或者重定向網頁。
假設資料庫中有個用戶guest,密碼123456,那麼該用戶登錄時,認證代碼中的第4行則變為:sql = "select * from userlogin where name='guest' and password='123456'",這是一個合法查詢語句,所以用戶能正常登錄,反之則登錄不了。
看起來這是一個比較嚴格的認證代碼,但是事實呢?
現在,我們用戶名提交「'or 1='1」,密碼也是一樣,同樣也會成為合法用戶,這是為什麼?
當我們提交表單後,代碼通過Request對象獲得提交的用戶名'or 1='1以及密碼'or 1='1後,直接將這些數據放入了第4行的查詢語句中,於是變成了這樣:sql = "select * from userlogin where name=''or 1='1' and password=''or 1='1'"。我們先看1='1',這個絕對永遠為真,如果你說假,那麼你回小學學數學吧,學好再來看吧,呵呵~注意在大馬前面還有一個or,這代表者1='1'是作為一個條件選擇語句放入資料庫查詢的,這樣無論查詢語句中的用戶名和密碼是否正確,都會因為or後面的1='1'代碼,導致查詢語句返回值永遠為真,這樣就是繞過了看似嚴格的用戶認證,獲得了合法的許可權。

『柒』 3大Web安全漏洞防禦詳解:XSS、CSRF、以及SQL注入解決方案

隨著互聯網的普及,網路安全變得越來越重要。Java等程序員需要掌握基本的web安全知識,防患於未然,下面列舉一些常見的安全漏洞,以及對應的防禦解決方案。

1.前端安全

2.後端安全

1.XSS簡介

跨站腳本(cross site script)簡稱為XSS,是一種經常出現在web應用中的計算機安全漏洞,也是web中最主流的攻擊方式。

XSS是指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,進而添加一些代碼,嵌入到web頁面中去,使別的用戶訪問都會執行相應的嵌入代碼。

2.XSS攻擊的危害

1、盜取用戶資料,比如:登錄帳號、網銀帳號等

2、利用用戶身份,讀取、篡改、添加、刪除企業敏感數據等

3、盜竊企業重要的具有商業價值的資料

4、非法轉賬

5、強制發送電子郵件

6、網站掛馬

7、控制受害者機器向其它網站發起攻擊

3.防止XSS解決方案

XSS的根源主要是沒完全過濾客戶端提交的數據 ,所以重點是要過濾用戶提交的信息。

1.CSRF簡介

CSRF(Cross-site request forgery)跨站請求偽造,也被稱為「One Click Attack」或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。

XSS利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF更具危險性。

2.CSRF攻擊的危害

主要的危害來自於,攻擊者盜用了用戶身份,發送惡意請求。比如:模擬用戶的行為發送郵件,發消息,以及支付、轉賬等財產安全。

3.防止CSRF的解決方案

1.簡介

SQL注入是比較常見的網路攻擊方式之一,主要是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字元串,實現無帳號登錄,甚至篡改資料庫。

2.SQL注入的危害

3.防止SQL注入的方式

通常情況下,SQL注入的位置包括:

(1)表單提交,主要是POST請求,也包括GET請求;

(2)URL參數提交,主要為GET請求參數;

(3)Cookie參數提交;

(4)HTTP請求頭部的一些可修改的值,比如Referer、User_Agent等;

4.簡要舉例

舉一個簡單的例子,select * from user where id=100 ,表示查詢id為100的用戶信息,如果id=100變為 id=100 or 2=2,sql將變為:select * from user where id=100 or 2=2,將把所有user表的信息查詢出來,這就是典型的sql注入。

5.防止SQL注入的解決方案

1)對用戶的輸入進行校驗,使用正則表達式過濾傳入的參數

2)使用參數化語句,不要拼接sql,也可以使用安全的存儲過程

3)不要使用管理員許可權的資料庫連接,為每個應用使用許可權有限的資料庫連接

4)檢查數據存儲類型

5)重要的信息一定要加密

總之就是既要做好過濾與編碼並使用參數化語句,也要把重要的信息進行加密處理,這樣sql注入漏洞才能更好的解決。

以上就是Web安全介紹,更多Redis系列、Spring Cloud、Dubbo等微服務、MySQL資料庫分庫分表等架構設計,具體請參考:

回復關鍵詞 【高並發】即可獲取!

『捌』 如何利用sql注入攻擊刪除文件

一、 SQL注入攻擊的簡單示例。
statement := "SELECT * FROM Users WHERE Value= " + a_variable + "
上面這條語句是很普通的一條SQL語句,他主要實現的功能就是讓用戶輸入一個員工編號然後查詢處這個員工的信息。但是若這條語句被不法攻擊者改裝過後,就可能成為破壞數據的黑手。如攻擊者在輸入變數的時候,輸入以下內容SA001』;drop table c_order--。那麼以上這條SQL語句在執行的時候就變為了SELECT * FROM Users WHERE Value= 『SA001』;drop table c_order--。
這條語句是什麼意思呢?『SA001』後面的分號表示一個查詢的結束和另一條語句的開始。c_order後面的雙連字元 指示當前行餘下的部分只是一個注釋,應該忽略。如果修改後的代碼語法正確,則伺服器將執行該代碼。系統在處理這條語句時,將首先執行查詢語句,查到用戶編號為SA001 的用戶信息。然後,數據將刪除表C_ORDER(如果沒有其他主鍵等相關約束,則刪除操作就會成功)。只要注入的SQL代碼語法正確,便無法採用編程方式來檢測篡改。因此,必須驗證所有用戶輸入,並仔細檢查在您所用的伺服器中執行構造 SQL命令的代碼。
二、 SQL注入攻擊原理。
可見SQL注入攻擊的危害性很大。在講解其防止辦法之前,資料庫管理員有必要先了解一下其攻擊的原理。這有利於管理員採取有針對性的防治措施。
SQL注入是目前比較常見的針對資料庫的一種攻擊方式。在這種攻擊方式中,攻擊者會將一些惡意代碼插入到字元串中。然後會通過各種手段將該字元串傳遞到SQLServer資料庫的實例中進行分析和執行。只要這個惡意代碼符合SQL語句的規則,則在代碼編譯與執行的時候,就不會被系統所發現。
SQL注入式攻擊的主要形式有兩種。一是直接將代碼插入到與SQL命令串聯在一起並使得其以執行的用戶輸入變數。上面筆者舉的例子就是採用了這種方法。由於其直接與SQL語句捆綁,故也被稱為直接注入式攻擊法。二是一種間接的攻擊方法,它將惡意代碼注入要在表中存儲或者作為原書據存儲的字元串。在存儲的字元串中會連接到一個動態的SQL命令中,以執行一些惡意的SQL代碼。
注入過程的工作方式是提前終止文本字元串,然後追加一個新的命令。如以直接注入式攻擊為例。就是在用戶輸入變數的時候,先用一個分號結束當前的語句。然後再插入一個惡意SQL語句即可。由於插入的命令可能在執行前追加其他字元串,因此攻擊者常常用注釋標記「—」來終止注入的字元串。執行時,系統會認為此後語句位注釋,故後續的文本將被忽略,不背編譯與執行。
三、 SQL注入式攻擊的防治。
既然SQL注入式攻擊的危害這么大,那麼該如何來防治呢?下面這些建議或許對資料庫管理員防治SQL注入式攻擊有一定的幫助。
1、 普通用戶與系統管理員用戶的許可權要有嚴格的區分。
如果一個普通用戶在使用查詢語句中嵌入另一個Drop Table語句,那麼是否允許執行呢?由於Drop語句關繫到資料庫的基本對象,故要操作這個語句用戶必須有相關的許可權。在許可權設計中,對於終端用戶,即應用軟體的使用者,沒有必要給他們資料庫對象的建立、刪除等許可權。那麼即使在他們使用SQL語句中帶有嵌入式的惡意代碼,由於其用戶許可權的限制,這些代碼也將無法被執行。故應用程序在設計的時候,最好把系統管理員的用戶與普通用戶區分開來。如此可以最大限度的減少注入式攻擊對資料庫帶來的危害。
2、 強迫使用參數化語句。
如果在編寫SQL語句的時候,用戶輸入的變數不是直接嵌入到SQL語句。而是通過參數來傳遞這個變數的話,那麼就可以有效的防治SQL注入式攻擊。也就是說,用戶的輸入絕對不能夠直接被嵌入到SQL語句中。與此相反,用戶的輸入的內容必須進行過濾,或者使用參數化的語句來傳遞用戶輸入的變數。參數化的語句使用參數而不是將用戶輸入變數嵌入到SQL語句中。採用這種措施,可以杜絕大部分的SQL注入式攻擊。不過可惜的是,現在支持參數化語句的資料庫引擎並不多。不過資料庫工程師在開發產品的時候要盡量採用參數化語句。
3、 加強對用戶輸入的驗證。
總體來說,防治SQL注入式攻擊可以採用兩種方法,一是加強對用戶輸入內容的檢查與驗證;二是強迫使用參數化語句來傳遞用戶輸入的內容。在SQLServer資料庫中,有比較多的用戶輸入內容驗證工具,可以幫助管理員來對付SQL注入式攻擊。測試字元串變數的內容,只接受所需的值。拒絕包含二進制數據、轉義序列和注釋字元的輸入內容。這有助於防止腳本注入,防止某些緩沖區溢出攻擊。測試用戶輸入內容的大小和數據類型,強制執行適當的限制與轉換。這即有助於防止有意造成的緩沖區溢出,對於防治注入式攻擊有比較明顯的效果。
如可以使用存儲過程來驗證用戶的輸入。利用存儲過程可以實現對用戶輸入變數的過濾,如拒絕一些特殊的符號。如以上那個惡意代碼中,只要存儲過程把那個分號過濾掉,那麼這個惡意代碼也就沒有用武之地了。在執行SQL語句之前,可以通過資料庫的存儲過程,來拒絕接納一些特殊的符號。在不影響資料庫應用的前提下,應該讓資料庫拒絕包含以下字元的輸入。如分號分隔符,它是SQL注入式攻擊的主要幫凶。如注釋分隔符。注釋只有在數據設計的時候用的到。一般用戶的查詢語句中沒有必要注釋的內容,故可以直接把他拒絕掉,通常情況下這么做不會發生意外損失。把以上這些特殊符號拒絕掉,那麼即使在SQL語句中嵌入了惡意代碼,他們也將毫無作為。
故始終通過測試類型、長度、格式和范圍來驗證用戶輸入,過濾用戶輸入的內容。這是防止SQL注入式攻擊的常見並且行之有效的措施。
4、 多多使用SQL Server資料庫自帶的安全參數。
為了減少注入式攻擊對於SQL Server資料庫的不良影響,在SQLServer資料庫專門設計了相對安全的SQL參數。在資料庫設計過程中,工程師要盡量採用這些參數來杜絕惡意的SQL注入式攻擊。
如在SQL Server資料庫中提供了Parameters集合。這個集合提供了類型檢查和長度驗證的功能。如果管理員採用了Parameters這個集合的話,則用戶輸入的內容將被視為字元值而不是可執行代碼。即使用戶輸入的內容中含有可執行代碼,則資料庫也會過濾掉。因為此時資料庫只把它當作普通的字元來處理。使用Parameters集合的另外一個優點是可以強制執行類型和長度檢查,范圍以外的值將觸發異常。如果用戶輸入的值不符合指定的類型與長度約束,就會發生異常,並報告給管理員。如上面這個案例中,如果員工編號定義的數據類型為字元串型,長度為10個字元。而用戶輸入的內容雖然也是字元類型的數據,但是其長度達到了20個字元。則此時就會引發異常,因為用戶輸入的內容長度超過了資料庫欄位長度的限制。
5、 多層環境如何防治SQL注入式攻擊?
在多層應用環境中,用戶輸入的所有數據都應該在驗證之後才能被允許進入到可信區域。未通過驗證過程的數據應被資料庫拒絕,並向上一層返回一個錯誤信息。實現多層驗證。對無目的的惡意用戶採取的預防措施,對堅定的攻擊者可能無效。更好的做法是在用戶界面和所有跨信任邊界的後續點上驗證輸入。如在客戶端應用程序中驗證數據可以防止簡單的腳本注入。但是,如果下一層認為其輸入已通過驗證,則任何可以繞過客戶端的惡意用戶就可以不受限制地訪問系統。故對於多層應用環境,在防止注入式攻擊的時候,需要各層一起努力,在客戶端與資料庫端都要採用相應的措施來防治SQL語句的注入式攻擊。
6、 必要的情況下使用專業的漏洞掃描工具來尋找可能被攻擊的點。
使用專業的漏洞掃描工具,可以幫助管理員來尋找可能被SQL注入式攻擊的點。不過漏洞掃描工具只能發現攻擊點,而不能夠主動起到防禦SQL注入攻擊的作用。當然這個工具也經常被攻擊者拿來使用。如攻擊者可以利用這個工具自動搜索攻擊目標並實施攻擊。為此在必要的情況下,企業應當投資於一些專業的漏洞掃描工具。一個完善的漏洞掃描程序不同於網路掃描程序,它專門查找資料庫中的SQL注入式漏洞。最新的漏洞掃描程序可以查找最新發現的漏洞。所以憑借專業的工具,可以幫助管理員發現SQL注入式漏洞,並提醒管理員採取積極的措施來預防SQL注入式攻擊。如果攻擊者能夠發現的SQL注入式漏洞資料庫管理員都發現了並採取了積極的措施堵住漏洞,那麼攻擊者也就無從下手了。

如何防範黑客入侵網站的幾種常見安全方法
• 本文的目的是告訴企業在建網站時如何打造一個防範黑客攻擊的安全網站
• 互聯網隨著時間的發展,它的優勢越來越來明顯,世界越來越多的企業通過這二十四小時不間斷的傳波平台,打造自己公司的網站,開展電子商務活動;由於互聯網的特殊性和復雜性,一旦你企業的網站接入互聯網後,你的企業網站便為一個公眾場所,任何人都可以上你的企業網站瀏覽信息,任何人(比如:黑客)都有可能對你的企業網站進行技術上測試,查找你的企業網站在程序設計上的漏洞,不論他目的是惡意還其它原因,你都無法制止他的行為,因為黑客在遠程電腦上實施操作。
• 建設一個有安全系數保證的網站,關系著一個企業的商業信譽問題,面臨日夜猖狂、日益肆虐的網路攻擊事件不斷發生,給自己的網站做一些最基本的安全防範措施是非常必要的。
• 非法字元過濾和轉換
• 黑客攻擊網站之前,先採用探路方式,通過網站的留言、論壇、搜索等系統,注入可執行的web腳本代碼和SQL語法,來達到入侵網站的目的;對網站所有互動式介面的文本輸入框(如:網站留言系統、BBS系統、blog系統、搜索系統、登陸系統等)的地方採取在客戶端非法字元過濾和轉換技術,通過非法字元過濾和轉換將可執行的惡意代碼變為可讀HTML代碼,使它基本失去了暴破網站的威力,又起到了保護網站程序源代碼不受破壞的作用。
• 建一個指定自定義出錯(Error)的信息頁面
• 好處在於防止網站設計源代碼的溢出,黑客在入侵網站的後台管理系統,往往在網頁地址欄輸入可執行的SQL語法和根據程序員為網頁命名的習慣輸入網址的文件名,一旦黑客採用這種方式,就會將黑客帶向指定自定義出錯(Error)的信息頁面。

• 拒絕Cookie驗證方式
• Cookie的好處在於管理員和注冊用戶登陸網站時Cookie會保存登陸信息,下次再登陸時Cookie會自動將這些信息保留在登陸的頁面輸入文本框中,其作用是為了方便登陸者,但也給黑客採集Cookie的信息提供了良機,所以應該拒絕採用客戶端Cookie驗證登陸方式,而改用通過伺服器驗證方式登陸並對賬號和密碼採用單向加密方式保存。
• 不要用自助建網站系統建你的企業網站
• 一些網站設計公司為了增加銷量降低成本(其實大部分客戶喜歡購買廉價的自助建網站系統),開發不同用途的自助建網站系統(如:網站內容管理、BBS、新聞發布、留言、博客等),同時為了爭奪市場、擴大產品知名度,往往兩種方式銷售產品:個人版可以免費下載;商業版則需要購買;其實兩個版本的網站在是同一種程序技術基礎開發出來的,商業版是授權驗證後可作商業用途,有技術支持和維護保證;黑客通過下載個人版,來潛心深研這些自助建網站系統的開放源代碼,從中找出程序漏洞,一旦發現了可攻擊的程序漏洞,通過搜索引擎平台檢索出同一型號版本自建網站系統,然後就發起攻擊;解決方式找有自主能力開發網站公司設計你的企業網站,通過將網站的設計源代碼封裝成「.dll」組件,這樣即保證網站設計上的安全性又保護了源代碼,又提高了網站的安全系數同時也降低了網站被入侵的危害程度,因為黑客攻陷網站往往是從研究網站源代碼開始並中找出程序漏洞。
• 解決Googel「暴庫」問題
• 一些程序員在開發網站喜歡用虛擬路徑方法調用資料庫,這就必須將資料庫保存在開通WWW服務的文件夾下,自然逃不過狡猾黑客的眼睛,一旦黑客破解了資料庫的真實保存位置,便可以從瀏覽器的地址欄打開和下載該資料庫,對網站的後果是非常危險的;要想確保你網站的資料庫不被黑客下載,只要採取將資料庫保存在非WWW服務的文件夾下,通過物理(真實)路徑方法調用資料庫,就可完全防止黑客下載你企業網站的資料庫。

• 建立robots文件
• 為了防止網站的重要文件夾(如:後台管理)和文件(如:純程序文件)不被搜索引擎所收錄,首先在網站根目錄下建一個「robots.txt」純文本文件,來防止網站的重要文件或其它敏感信息被搜索引擎所收錄;最大多搜索引擎平台都遵守robots協議;搜索引擎機器人訪問網站時,首先找到網站根目錄下robots文件,然後會讀取robots文件的內容,來確定它對網站收錄的范圍;robots文件可以說是對搜索引擎機器人收錄許可權的限制管理,從而避免將網站的重要文件或其它敏感信息暴露在網路上,在網站安全上起一個防禦鎖作用,robots文件可由網站設計者在遵守robots協議下,根據網站的實際情況自由編寫。
• 完全將杜絕黑客的攻擊和入侵是不可能的,完全在網站的每個介面過濾和轉換非法字元串是辦不到,比如,在文件上傳時,狡猾黑客會採取躲過過濾和轉換非法字元串的辦法,將可執行惡意腳本代碼保存「.gif」格式或「.jpg」格式來實施文件上傳漏洞攻擊,解決的方法是對所有上傳的文件先導入到「.txt」純文本文件讀一遍,判斷是否是可執行惡意腳本代碼,如果是就刪除,但是網站管理員要有web程序基礎;黑客入侵網站的方式變化多端,幾千種免費暴破網站的軟體,使你企業網站防不勝防,但是以上介紹幾種防禦措施對菜鳥黑客是可行的,對於一些資深黑客,他也要費一些精力和時間來暴破你企業網站,他會考慮值不值得?畢竟你的網站只是一個企業網站,不是銀行和證券交涉現金交易的網站(它們的程序設計安全系數更高),在大多數下情況,「大俠」黑客不會光顧你企業網站。

1、SQL注入漏洞的入侵
這種是ASP+ACCESS的網站入侵方式,通過注入點列出資料庫裡面管理員的帳號和密碼信息,然後猜解出網站的後台地址,然後用帳號和密碼登錄進去找到文件上傳的地方,把ASP木馬上傳上去,獲得一個網站的WEBSHELL。這個是黑鏈使用的前一部分,應該比較常用吧。現在網上賣webshell的太多了。
2、ASP上傳漏洞的利用
這種技術方式是利用一些網站的ASP上傳功能來上傳ASP木馬的一種入侵方式,不少網站都限制了上傳文件的類型,一般來說ASP為後綴的文件都不允許上傳,但是這種限制是可以被黑客突破的,黑客可以採取COOKIE欺騙的方式來上傳ASP木馬,獲得網站的WEBSHELL許可權。
3、後台資料庫備份方式獲得WEBSHELL
這個主要是利用網站後台對ACCESS資料庫進行資料庫備份和恢復的功能,備份資料庫路徑等變數沒有過濾導致可以把任何文件的後綴改成ASP,那麼利用網站上傳的功能上傳一個文件名改成JPG或者GIF後綴的ASP木馬,然後用這個恢復庫備份和恢復的功能把這個木馬恢復成ASP文件,從而達到能夠獲取網站WEBSHELL控制許可權的目的。
4、網站旁註入侵
這種技術是通過IP綁定域名查詢的功能查出伺服器上有多少網站,然後通過一些薄弱的網站實施入侵,拿到許可權之後轉而控制伺服器的其它網站。
下面這幾種我就聽不懂了,不過有點高技術的站長會看懂的。
5、sa注入點利用的入侵技術
這種是ASP+MSSQL網站的入侵方式,找到有SA許可權的SQL注入點,然後用SQL資料庫的XP_CMDSHELL的存儲擴展來運行系統命令建立系統級別的帳號,然後通過3389登錄進去,或者在一台肉雞上用NC開設一個監聽埠,然後用VBS一句話木馬下載一個NC到伺服器裡面,接著運行NC的反向連接命令,讓伺服器反向連接到遠程肉雞上,這樣遠程肉雞就有了一個遠程的系統管理員級別的控制許可權。
6、sa弱密碼的入侵技術
這種方式是用掃描器探測SQL的帳號和密碼信息的方式拿到SA的密碼,然後用SQLEXEC之類的工具通過1433埠連接到遠程伺服器上,然後開設系統帳號,通過3389登錄。然後這種入侵方式還可以配合WEBSHELL來使用,一般的ASP+MSSQL 網站通常會把MSSQL的連接密碼寫到一個配置文件當中,這個可以用WEBSHELL來讀取配置文件裡面的SA密碼,然後可以上傳一個SQL木馬的方式來獲取系統的控制許可權。
7、提交一句話木馬的入侵方式
這種技術方式是對一些資料庫地址被改成asp文件的網站來實施入侵的。黑客通過網站的留言版,論壇系統等功能提交一句話木馬到資料庫裡面,然後在木馬客戶端裡面輸入這個網站的資料庫地址並提交,就可以把一個ASP木馬寫入到網站裡面,獲取網站的WEBSHELL許可權。
8、論壇漏洞利用入侵方式
這種技術是利用一些論壇存在的安全漏洞來上傳ASP木馬獲得WEBSHELL許可權,最典型的就是,動網6.0版本,7.0版本都存在安全漏洞,拿7.0版本來說,注冊一個正常的用戶,然後用抓包工具抓取用戶提交一個ASP文件的COOKIE,然後用明小子之類的軟體採取COOKIE欺騙的上傳方式就可以上傳一個ASP木馬,獲得網站的WEBSHELL。

『玖』 Web安全問題解答

很多新手都覺得自己的電腦web經常被木馬侵襲,所以下面我為大家帶來電腦基礎知識學習之Web安全問題,讓你了解下如何安全的保護好自己的電腦。

1、什麼叫Web應用系統?

答:Web應用系統就是利用各種動態Web技術開發的,基於B/S(瀏覽器/伺服器)模式的事務處理系統。用戶直接面對的是客戶端瀏覽器,使用Web應用系統時,用戶通過瀏覽器發出的請求,其之後的事務邏輯處理和數據的邏輯運算由伺服器與資料庫系統共同完成,對用戶而言是完全透明的。運算後得到的結果再通過網路傳輸給瀏覽器,返回給用戶。比如:ERP系統、CRM系統以及常見的網站系統(如電子政務網站、企業網站等)都是Web應用系統。

2、為什麼Google把我的網站列為惡意網站

答:Google在對網站內容進行搜索時,同時也會檢查是否含有惡意軟體或代碼(這些惡意軟體或代碼可能威脅該網站的訪問者)。如果該網站存在這樣的惡意軟體或代碼,就會在用戶搜索到該網站時,加上一個標記:“該網站可能含有惡意軟體,有可能會危害您的電腦”。這將會使網站信譽受損,並導致潛在的用戶流失。

3、Web威脅為什麼難以防範

答:針對Web的攻擊已經成為全球安全領域最大的挑戰,主要原因有如下兩點:

1. 企業業務迅速更新,需要大量的Web應用快速上線。而由於資金、進度、意識等方面的影響,這些應用沒有進行充分安全評估。

2. 針對Web的攻擊會隱藏在大量正常的業務行為中,而且使用各種變形偽裝手段,會導致傳統的防火牆和基於特徵的入侵防禦系統無法發現和阻止這種攻擊。

4、黑客為什麼要篡改網站頁面

答:當黑客獲取網站的控制許可權後,往往會更改網站頁面,可能的動機有:

1. 宣稱政治主張;

2. 炫耀技術,建立“聲望”;

3. 宣洩情緒;

4. 經濟利益,通過網站釋放木馬,從而獲取經濟利益。

5、黑客實施網站掛馬的目的是什麼

答:網站掛馬的主要目的是控制訪問該網站的用戶的計算機,從而可以進一步獲取用戶的計算機隱私信息而獲利,或者將這些用戶的計算機作為“肉雞”,對 其它 伺服器或網路進行DDos攻擊。

6、為什麼我網站的資料庫表內容被大量替換?

答:如果排除了管理員誤操作的可能性,則可能是網站伺服器被自動化攻擊工具(如SQL注入工具等)攻擊的結果。目前已經有自動化的工具對網站進行攻擊,如果網站存在漏洞的話,攻擊工具能夠獲得對網站資料庫訪問的許可權。如果發現這種情況,應該仔細核查網站伺服器和資料庫伺服器日誌,找出更改記錄。

7、在Web威脅防禦中防火牆的優點和不足

答:防火牆可以過濾掉非業務埠的數據,防止非Web服務出現的漏洞,目前市場上可選擇的防火牆品牌也較多。但對於目前大量出現在應用層面上的SQL注入和XSS漏洞,防火牆無法過濾,因而無法保護Web伺服器所面臨的應用層威脅。

8、常見發布系統之IIS

答:IIS 是Internet Information Server的縮寫,是由微軟開發的一種Web伺服器(Web server)產品,用以支持HTTP、FTP和SMTP服務發布。 它主要運行在微軟的 操作系統 之上,是最流行的Web伺服器軟體之一。

9、常見Web伺服器之Apache

答:Apache是Web伺服器軟體。它可以運行在幾乎所有廣泛使用的計算機平台上。Apache源於NCSAhttpd伺服器,經過多次修改,已成為世界上最流行的Web伺服器軟體之一。

10、Apache是不是比IIS要安全

答:早期的IIS在安全性方面存在著很大的問題,如果使用默認設置,黑客可以輕松趁虛而入。不過在IIS6中,微軟公司對其安全方面進行了大幅改進。只要保證操作系統補丁更新及時,就可以將網站安全系數盡可能地提高。

Apache在安全方面一直做得比較好,更主要的原因是很多用戶都是在linux系統下使用Apache。相對於微軟的操作系統,Linux系統被發布的安全按漏洞更少一些。

從技術角度講,兩個Web伺服器的安全性沒有本質區別,一個完整的Web系統的安全性更取決於Web程序的安全性以及Web伺服器配置的正確性。

11、什麼叫應用防火牆

答:應用防火牆的概念在上個世紀九十年代就已經被提出,但在最近幾年才真正走向成熟和應用。應用防火牆的概念與網路防火牆相對,網路防火牆關注網路層的訪問控制,應用防火牆則關注應用層數據的過濾與控制。

12、什麼叫網站防篡改系統

答:網站防篡改系統通過實時監控來保證Web系統的完整性,當監控到Web頁面被異常修改後能夠自動恢復頁面。網站放篡改系統由於其設計理念的限制,對靜態頁面的防護能力比較好,對動態頁面的防護則先天不足。

13、我的Web伺服器被訪問速度變慢,經常出現連接失敗的現象,可能是什麼原因造成的呢?

答:這可能有兩個方面的情況,一種是網路方面的原因,如運營商的線路故障,或帶寬消耗型的DDOS攻擊;另外一種情況是伺服器方面的原因,如感染病毒,或資源消耗型的拒絕服務攻擊。

14、我的Web伺服器部署了木馬查殺軟體,為什麼還被掛了木馬?

答:所謂的網頁被掛馬,很多情況下並不是有木馬程序或代碼被放到了Web伺服器上,而是有一段跳轉代碼(本身不包含攻擊信息)被放在了Web伺服器上網頁中。當遠程用戶訪問帶有跳轉代碼的頁面時,將會執行這段代碼,從另外一個地址下載並執行木馬。所以,即使在Web伺服器上部署了木馬查殺軟體,也會由於木馬本身並不存在於伺服器上,而無法避免網站被掛馬。

15、我的Web伺服器前端部署了入侵防禦產品設備,入侵防禦產品設備中包含了幾百條的SQL注入攻擊防禦特徵庫,為什麼我的Web系統還是被SQL注入攻擊成功了呢?

答:SQL注入是一種沒有固定特徵的攻擊行為,對安全設備來說,就是屬於變種極多的攻擊行為。所以,基於數據特徵的SQL注入檢測 方法 是沒有辦法窮盡所有組合的,會存在大量的誤報、漏報可能。如果採用的入侵防禦產品設備採用的是基於數據特徵的檢測方法,即使包含了數百條SQL注入特徵庫,也會有漏報出現。

16、黑客為什麼喜歡攻擊網站?

答:Web業務已經成為當前互聯網最為流行的業務,大量的在線應用業務都依託於Web服務進行。並且一些大型網站的日訪問量可達百萬之巨,不論是直接攻擊網站(如網路銀行,在線游戲伺服器)還是通過網站掛馬竊取訪問者信息,都可以使黑客獲得直接的經濟利益。另外一方面,網站是機構的網路形象,通過攻擊篡改網站頁面,也可以得到最大范圍的名聲傳播。對於那些企圖出名的黑客,攻擊網站是一項不錯的選擇。

17、如何判斷自己的Web伺服器是否已經成為肉雞?

答:如果發現自己的Web伺服器上開啟了一些奇怪的進程,發現Web伺服器總是有大量從內往外的連接,發現Web伺服器不定時系統緩慢,諸如此類的現象,可使用木馬清除軟體進行檢查和查殺。

細分攻擊形式:

18、目前國內Web應用系統存在哪些最突出的安全問題?

答:Web應用程序的漏洞是很難避免的,系統的安全隱患主要在三方面:

首先是網路運維人員或安全管理人員對Web系統的安全狀況不清楚。哪些頁面存在漏洞,哪些頁面已經被掛馬,他們不能夠清晰的掌握,從而及時採取改正 措施 ;

其次,在安全設備的部署方面,沒有選用專業的、針對Web業務攻擊的防禦產品對網站進行保護,而是寄託於防火牆這種訪問控制類的網關安全設備;

另外,從安全響應來看,Web安全事件發生後的應急與處理也存在欠缺。沒有相應的頁面恢復系統,也沒有處理Web安全事件的專業安全服務團隊。很多單位沒有制定實時監控的網站安全管理制度。

19、什麼叫SQL注入

答:SQL注入就是利用現有應用程序,將惡意的SQL命令注入到網站後台資料庫引擎執行的能力。SQL注入利用的是正常的HTTP服務埠,表面上看來和正常的Web訪問沒有區別,隱蔽性極強,不易被發現。

20、SQL注入有哪些危害

答:SQL注入的主要危害包括:

 未經授權狀況下操作資料庫中的數據;

 惡意篡改網頁內容;

 私自添加系統帳號或者是資料庫使用者帳號;

 網頁掛木馬;

21、什麼叫XSS

答:跨站腳本攻擊(XSS)是攻擊者將惡意腳本提交到網站的網頁中,使得原本安全的網頁存在惡意腳本;或者是直接添加有惡意腳本的網頁並誘使用戶打開,用戶訪問網頁後,惡意腳本就會將用戶與網站的會話COOKIE及其它會話信息全部截留發送給攻擊者,攻擊者就可以利用用戶的COOKIE正常訪問網站。攻擊者有時還會將這些惡意腳本以話題的方式提交到論壇中,誘使網站管理員打開這個話題,從而獲得管理員許可權,控制整個網站。跨站腳本漏洞主要是由於沒有對所有用戶的輸入進行有效的驗證所造成的,它影響所有的Web應用程序框架。

22、XSS有哪些危害

答:XSS攻擊的危害包括:

 盜取各類用戶帳號,如機器登錄帳號、用戶網銀帳號、各類管理員帳號;

 控制企業數據,包括讀取、篡改、添加、刪除企業敏感數據的能力;

 盜竊企業重要的具有商業價值的資料;

 非法轉賬;

 強制發送電子郵件;

 網站掛馬;

 控制受害者機器向其它網站發起攻擊。

23、什麼叫Shellcode

答:Shellcode實際是一段代碼(也可以是填充數據),可以用來發送到伺服器,利用已存在的特定漏洞造成溢出,通稱“緩沖區溢出攻擊”中植入進程的代碼。這段代碼可以是導致常見的惡作劇目的的彈出一個消息框彈出,也可以用來刪改重要文件、竊取數據、上傳木馬病毒並運行,甚至是出於破壞目的的格式化硬碟等等。

24、什麼叫網站漏洞

答:隨著B/S模式被廣泛的應用,用這種模式編寫Web應用程序的程序員也越來越多。但由於開發人員的水平和 經驗 參差不齊,相當一部分的開發人員在編寫代碼的時候,沒有對用戶的輸入數據或者是頁面中所攜帶的信息(如Cookie)進行必要的合法性判斷,導致了攻擊者可以利用這個編程漏洞來入侵資料庫或者攻擊Web應用程序的使用者,由此獲得一些重要的數據和利益。

25、什麼叫木馬

答:木馬(Trojan)這個名字來源於古希臘 傳說 ,在互聯網時代它通常是指通過一段特定的程序(木馬程序)來控制另一台計算機。木馬通常有兩個可執行程序:一個是客戶端,即控制端,另一個是服務端,即被控制端。木馬的設計者為了防止木馬被發現,而採用多種手段隱藏木馬。木馬的服務一旦運行並被控制端連接,其控制端將享有服務端的大部分操作許可權,例如給計算機增加口令,瀏覽、移動、復制、刪除文件,修改注冊表,更改計算機配置等。

26、什麼叫網站掛馬

答:“掛馬” 就是黑客入侵了一些網站後,將自己編寫的網頁木馬嵌入被黑網站的主頁中。當訪問者瀏覽被掛馬頁面時,自己的計算機將會被植入木馬,黑客便可通過遠程式控制制他們的計算機來實現不可告人的目的。網頁木馬就是將木馬和網頁結合在一起,打開網頁的同時也會運行木馬。最初的網頁木馬原理是利用IE瀏覽器的ActiveX控制項,運行網頁木馬後會彈出一個控制項下載提示,只有點擊確認後才會運行其中的木馬。這種網頁木馬在當時網路安全意識普遍不高的情況下還是有一點威脅的,但是其缺點顯而易見,就是會出現ActiveX控制項下載提示。現在很少會有人去點擊那莫名其妙的ActiveX控制項下載確認窗口了。在這種情況下,新的網頁木馬誕生了。這類網頁木馬通常利用IE瀏覽器的漏洞,在運行的時候沒有絲毫提示,因此隱蔽性極高。

27、什麼叫DOS./DDOS攻擊?

答:DoS即Denial Of Service,拒絕服務的縮寫。DoS是指利用網路協議實現的缺陷來耗盡被攻擊對象的資源,目的是讓目標計算機或網路無法提供正常的服務或資源訪問,使目標系統服務系統停止響應甚至崩潰。在此攻擊中並不包括侵入目標伺服器或目標網路設備。這些被大量消耗的服務資源包括網路帶寬、文件系統空間容量、開放的進程或者允許的連接。這種攻擊會導致資源的匱乏,無論計算機的處理速度多快、內存容量多大、網路帶寬有多高,都無法避免這種攻擊帶來的後果。

DDoS(Distributed Denial Of Service)又把DoS又向前發展了一大步,這種分布式拒絕服務攻擊是黑客利用在已經被侵入並已被控制的、不同的高帶寬主機(可能是數百,甚至成千上萬台)上安裝大量的DoS服務程序,它們等待來自中央攻擊控制中心的命令。中央攻擊控制中心再適時啟動全體受控主機的DoS服務進程,讓它們對一個特定目標發送盡可能多的網路訪問請求,形成一股DoS洪流沖擊目標系統,猛烈地DoS攻擊同一個網站。被攻擊的目標網站會很快失去反應而不能及時處理正常的訪問甚至系統癱瘓崩潰。

28、什麼叫網路釣魚

答:網路釣魚(Phishing‎,又名釣魚法或釣魚式攻擊)是通過傳播“聲稱來自於銀行或其他知名機構”的欺騙信息,意圖引誘受害者泄漏出敏感信息(如用戶名、口令、帳號 ID 、 ATM PIN 碼或信用卡詳細信息)的一種攻擊方式。最典型的網路釣魚攻擊將受害者引誘到一個與其目標網站非常相似的釣魚網站上,並獲取受害者在此網站上輸入的個人敏感信息。通常這個攻擊過程不會讓受害者警覺。它是“社會工程攻擊”的一種形式。

29、什麼叫網路蠕蟲

答:一般認為:蠕蟲病毒是一種通過網路傳播的惡性病毒,它除具有病毒的一些共性外,同時具有自己的一些特徵。如:不利用文件寄生(有的只存在於內存中)、對網路造成拒絕服務,以及與黑客技術相結合,等等。蠕蟲病毒主要的破壞方式是大量的復制自身,然後在網路中傳播,嚴重佔用有限的網路資源,最終引起整個網路的癱瘓,使用戶不能通過網路進行正常的工作。每一次蠕蟲病毒的爆發都會給全球經濟造成巨大損失,因此它的危害性是十分巨大的。有一些蠕蟲病毒還具有更改用戶文件、將用戶文件自動當附件轉發的功能,更是嚴重的地危害到用戶的 系統安全 。

30、什麼叫僵屍網路

答:僵屍網路(英文名稱叫BotNet),是互聯網上受到黑客集中控制的一群計算機,往往被黑客用來發起大規模的網路攻擊。如:分布式拒絕服務攻擊(DDoS)、海量垃圾郵件等。同時,黑客控制的這些計算機所保存的信息也都可以被黑客隨意“取用”。因此,不論是對網路安全運行還是用戶數據安全的保護,僵屍網路都是極具威脅的隱患。然而,發現一個僵屍網路是非常困難的,因為黑客通常遠程、隱蔽地控制分散在網路上的“僵屍主機”,這些主機的用戶往往並不知情。因此,僵屍網路是目前互聯網上最受黑客青睞的作案工具。

31、什麼是ARP攻擊

答:ARP是地址解析協議,是一種將IP地址轉化為MAC地址的協議。在網路中,當A主機需要向B主機發送報文時,會先查詢本地的ARP緩存表,找到與B主機IP地址對應的MAC地址後,進行數據傳輸。如果未找到,則會發送一個廣播ARP請求報文,請求對應B主機IP的B回應MAC地址。這個廣播包會被整個廣播域中所有主機收到,但只有B主機會發現IP地址對應自己,才會將MAC地址回應給A。此時A收到這個回應並更新自己的ARP緩存,進行下一步的數據傳輸。ARP攻擊應當叫做ARP欺騙,就是冒充網關地址對網路中主機給出ARP查詢回應,使得本來是A->網關的數據走向,變成A->攻擊者->網關。

32、ARP攻擊的危害有哪些?

答:ARP攻擊的危害主要有兩個方面。從ARP攻擊的原理來看,這種攻擊使得受害主機的所有網路數據都將通過攻擊者進行轉發。這樣一來,要竊取信息或控制流量就變得輕而易舉。另一方面,由於ARP緩存會不斷刷新,有的時候,真正的網關會偶爾“清醒”。當真正的網關參與到數據包轉發中來時,由於做了一個切換動作,可能會有頻繁的短暫掉線現象。所以,如果Web伺服器所在網路中發生了ARP攻擊,將導致Web伺服器不可訪問。

細分攻擊介質:

33、WEB應用系統(網站)會面臨來自哪些方面的安全問題

答:網站面臨的安全問題是方方面面的,主要可概括為以下四個方面:

1)操作系統、後台資料庫的安全問題

這里指操作系統和後台資料庫的漏洞,配置不當,如弱口令等等,導致黑客、病毒可以利用這些缺陷對網站進行攻擊。

2)Web發布系統的漏洞

Web業務常用的發布系統(即Web伺服器),如IIS、Apache等,這些系統存在的安全漏洞,會給入侵者可乘之機。

3)Web應用程序的漏洞

主要指Web應用程序的編寫人員,在編程的過程中沒有考慮到安全的因素,使得黑客能夠利用這些漏洞發起對網站的攻擊,比如SQL注入、跨站腳本攻擊等等。

4)自身網路的安全狀況

網站伺服器所處的網路安全狀況也影響著網站的安全,比如網路中存在的DoS攻擊等,也會影響到網站的正常運營。

34、Web程序漏洞是怎麼形成的

答:Web站點之所以存在如此眾多的安全漏洞,是由下列所示的這些原因造成的:

1、 大部分的中小型網站都是使用某個建站模塊建設的,而這些通用的建站模塊不僅本身存在各種安全漏洞,同時一些使用它們的建站人員根本沒有在建站完成後對站點進行安全加固。

2、 Web站點開發人員對安全不夠重視,在編寫網頁時,沒有對用戶的輸入進行驗證,沒有對數據的大小、類型和字元串進行規范,沒有限制API函數對系統資源的使用,以及對Web伺服器沒有進行相應的資源限制,引起拒絕服務攻擊。

3、 管理員對Web伺服器主機系統及Web應用程序本身配置不當,一些中小企業自己管理的Web站點根本沒有足夠的技術人員來管理它們的安全。

4、 當Web站點是託管在某個電信機房時,對它們進行的遠程管理存在安全風險。

5、 Web站點管理員本身技術水平的限制,對各種針對Web站點的安全攻擊不了解,也沒有端正工作態度,沒能對站點進行認真的安全加固,以及進行日常的安全檢查。

6、 Web站點所處網路大環境的安全設計不合理,以及沒有將安全防範工作融入到站點整個生命周期的各個階段。

7、 企業領導不夠重視,在Web站點的安全防範方面投入的資金太少或不合理,沒有制定一個有效的Web站點安全防範策略,明確Web站點日常管理流程,也沒有對Web站點的管理人員和工作人員進行不斷的安全培訓。

35、黑客主要利用哪些方法對網站進行數據竊取和修改

答:黑客需要使用擁有一定許可權的用戶帳戶才能對網站進行數據竊取和修改,所以可能造成用戶許可權泄漏或提升的漏洞,都可以被黑客利用來進行攻擊,如SQL注入,溢出漏洞、暴力猜解等。

36、目前對Web伺服器威脅較大的SQL注入工具有哪些?

答:網上常見的SQL注入工具有“啊D SQL注入工具”、pangolin、NBSI、HDSI、“管中窺豹注入工具”等。

37、目前對Web伺服器威脅較大的XSS攻擊工具有哪些?

答:網上常見的XSS攻擊工具有sessionIE、Webscan、XSS Inject Scanner 等。

38、怎樣應對Web業務安全事件

答:應對Web業務安全事件,從根本上的解決辦法就是對Web應用程序源代碼進行代碼檢查和漏洞修復,但是這會影響正常Web業務運行,而且費用較高。比較有效的解決方案是通過專業的Web業務安全檢查工具或服務來檢查網站安全狀況,部署專業的Web安全產品。比如基於行為檢測的入侵防禦產品。同時在管理上,要求網管人員實時對網站進行監測,一旦發現網頁被篡改等問題立刻進行頁面恢復、刪除惡意腳本等工作。

39、如何防禦SQL注入

答:要想從根本上解決XSS攻擊,就要對Web應用程序源代碼進行檢查,發現安全漏洞進行修改。但是這種方法在實際中給用戶帶來了不便,如:需要花費大量的人力財力、可能無法找到當時的網站開發人員、需要網站下線等。對代碼進行修改後,由於增加了過濾條件和功能,同時也給伺服器帶來了計算壓力。通常的解決方法是在資料庫伺服器前端部署入侵防禦產品。SQL注入攻擊具有變種多、隱蔽性強等特點,傳統的特徵匹配檢測方式不能有效地進行防禦,需要採用“基於攻擊手法的行為監測”的入侵防禦產品才能夠精確地檢測到SQL注入攻擊。

40、如何防禦XSS

答:要想從根本上解決XSS攻擊,就要對Web應用程序源代碼進行檢查,發現安全漏洞進行修改。但是這種方法在實際中給用戶帶來了不便,如:需要花費大量的人力財力;可能無法找到當時的網站開發人員、需要網站下線等。對代碼進行修改後,由於增加了過濾條件和功能,同時也給伺服器帶來了計算壓力。通常的解決方法是在資料庫伺服器前端部署入侵防禦產品。XSS攻擊具有變種多、隱蔽性強等特點,傳統的特徵匹配檢測方式不能有效地進行防禦,需要採用基於攻擊手法的行為監測的入侵防禦產品產品才能夠精確地檢測到XSS攻擊。

41、如何發現網站掛馬

答:伺服器被掛馬,通常情況下,若出現諸如“彈出頁面”,則可以比較容易發現,發現防病毒軟體告警之類,則可以發現伺服器被掛馬;由於漏洞不斷更新,掛馬種類時刻都在變換,通過客戶端的反映來發現伺服器是否被掛馬往往疏漏較大;正確的做法是經常性的檢查伺服器日誌,發現異常信息;經常檢查網站代碼,藉助於專業的檢測工具來發現網頁木馬會大大提高工作效率和准確度。