Advance Member
|
小弟另外又有問題了,要再次麻煩版上熱心大大
----以下是題目-----
請舉例說明下列程式有何安全上之漏洞?並說明如何修補該安全漏洞。
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 *
FROM WebUsers
WHERE Username = ’ ;DROP TABLE WebUsers-- AND
Password = ’’
----以下是小弟的問題------
做到這種題目,小弟的第一個反應是錯愕,怎樣下手都不知道
我想這應該是我對程式語言不熟的原因(總覺得我像肉片一樣在SQL裝熟)
離題了∼∼
第一個問題:解答第一點,為什麼輸入了Aa’ OR TRUE OR’的指令,就不產生任何驗證,那這整句話指令要怎樣解釋?Aa有代表什麼意思嗎?
第二個問題:針對解答第二點,針對;DROP TABLE WebUsers--AND Password = ’’
的指令,小弟只知道在SQL中,「--」帶表示註解,所以用戶密碼因為被下注解而不會驗證,那用戶帳號的驗證是因為指令下了DROP,所以不會驗證嗎?另外在這指令中,Drop前面的分號在這邊有特殊意義嗎?因為小弟沒辦法理解為什麼要加分號
第三個問題:在SQL指令中,代表文字是不是都要用這符號 ' ' 代表?
抱歉一下又問了很多蠢問題,還煩請諸位大大幫小弟解惑,感恩
__________________
|