PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
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離線中  
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
引用:
作者Devil
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了


正解,整個討論串看下來,感覺 Devil 兄是有真才實料的。
 
__________________
滿招損 謙受益
舊 2008-05-18, 05:43 PM #32
回應時引用此文章
darkangel離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是11:44 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。