主題: SQL 的問題
瀏覽單個文章
Devil
Power Member
 

加入日期: Jan 2001
您的住址: Taipei
文章: 503
引用:
作者s0510510
小弟另外又有問題了,要再次麻煩版上熱心大大

----以下是題目-----
請舉例說明下列程式有何安全上之漏洞?並說明如何修補該安全漏洞。
Dim sql
Sql=”SELECT *
FROM WebUsers
WHERE Username = = ’’’& username &’’’ AND
Password = = ’’’ & password &’’’’’
Set rs=Conn.OpenRecordset(sql)
If not rs.eof() then ‘user connected successfully’
end if

----以下是解答------
(1)攻擊者在密碼檔部分輸入Aa’ OR TRUE OR’,而程序如不過輸入做任何檢查和過濾,將會導致密碼失去效用。所以當攻擊者只要知道用戶帳號,就可以任何用戶登錄,進行違法行為。
SELECT *
FROM WebUsers
WHERE Username = = ’Bob’ AND
Password = = ’ Aa’ OR TRUE OR’
(2)攻擊者把帳戶名設為’;DROP TABLE WebUsers--,將會刪除WebUser表均被刪除。
SELECT *
FR...

1.就是很單純的[隱碼攻擊],你可以試著將Aa’ OR TRUE OR’帶入整個SQL Command看看會組合成什麼樣子的句子,結果可以解讀為,它將會使WHERE的條件式為true
可以上網找找看[隱碼攻擊],[SQL Injection]的資料
他的原理是,許多網頁程式設計師,喜歡使用連接字串的方式來撰寫SQL Command
這樣就給了攻擊者一個機會,讓他們可以在網頁上的文字方塊內輸入SQL Command並且執行
所以,千萬不要使用連接字串的方式撰寫SQL Command,而採用Parameter帶入參數的方法
2.Drop是屬於SQL DDL,作用在於刪除,分號是在於它要分段SQL Command,所以,分號之前是一段SQL Command,分號之後又是另一段SQL Command了
__________________
舊 2008-05-18, 05:22 PM #30
回應時引用此文章
Devil離線中