主題: SQL 的問題
瀏覽單個文章
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
引用:
作者dabochi
1.這個安全漏洞如果以在下寫程式的經驗 要根治建議是直接掛Stored Procedure或是掛Transaction上去 不在程式下定義sql條件式-不過這個方式100%不會是考試的解答就是xp
2.'"&~&"'是sql下表示變數的方式 但是sql很蠢 解讀變數的方式是把變數代表的東西填進去之後再解讀整個字串.所以當填Aa’ OR TRUE OR’進去之後 sql在解讀時會把後面的Password = = ’ Aa’ OR TRUE OR’解讀為不管對錯都會回傳eof;另外一個;DROP TABLE WebUsers--也是因為同一個問題 sql會以";"為分界將sql切成兩個條件式,並在"If not rs.eof() then ‘user connected successfully’ end if"進行驗證前就將Table WebUsers整個刪除


非也非也!

小弟不才雖然數年沒碰資料庫,然竊以為,此題用 procedure 或 transcation 來解,不免讓人有用牛刀殺雞之譏。
此題語法將 username 與 password 放一起做判斷,很明顯的會發生 SQL Injection 的問題,最簡單的解決方式,就是把 username 與 password 的判斷分開來做處理。
此題開頭以 dim 宣告 sql 變數,很明顯的是類 VB 式語言,所以出題老師應該有寫過 ASP。
如果您不清楚為什麼 username & password 放在一起判斷會有 SQL Injection 的問題,請找孤狗大神請教,這已經是老掉牙的基本觀念了。

這是個人五六年前寫 SQL 的經驗,不過我想這種基本觀念應該不會變化太多。
     
      
__________________
滿招損 謙受益
舊 2008-05-18, 05:36 PM #31
回應時引用此文章
darkangel離線中