請問 Delphi 在 sql injection 所做的努力? |
答題得分者是:sryang
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
關於 sql injection
MS 的新開發工具 2005 對於此種攻擊,只要不去自行組合 SQL ,而使用其設計的代入方式,MS 宣稱可以降低被 sql injection 攻擊的成功率 (到 100% ???) 請問,是否知道這方面,Delphi 的因應之道,在 ParamByName 的方式下,並沒有做任何的檢查 (Delphi 2006 以前,2007 就不知道囉) Query.SQL := 'select * from db where NO = :NO'; Query.ParamByName('xxx').AsXXXX := 'yyyy'; <--- 並未檢查是否有 「'」、「;」、「--」等關鍵符號 這樣,除了自己來做處理防範以外,是否有因應的方法 還請知道的人提供一下資料,不論是詳細的說明,或是簡單的一個相關連結,都很感謝 |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
就個人的經驗,以 Delphi 5 + ADO Express + SQL Server 來說,
既然已經用了 ParamByName,那麼 「'」、「;」、「--」等關鍵符號就會變成參數的值了,並不會變成 SQL 命令的一部分喔 而使用 Delphi 5 BDE SQL Server 的話,參數內容會是SQL 命令的一部分, 不過字串參數會自動用單引號包起來,數字參數硬要輸入文字的話,會發生字串轉數字轉換錯誤的 所以使用 SQL Server 可以安心,不過用其他資料庫我就不清楚了 ===================引 用 syntax 文 章=================== 關於 sql injection MS 的新開發工具 2005 對於此種攻擊,只要不去自行組合 SQL ,而使用其設計的代入方式,MS 宣稱可以降低被 sql injection 攻擊的成功率 (到 100% ???) 請問,是否知道這方面,Delphi 的因應之道,在 ParamByName 的方式下,並沒有做任何的檢查 (Delphi 2006 以前,2007 就不知道囉) Query.SQL := 'select * from db where NO = :NO'; Query.ParamByName('xxx').AsXXXX := 'yyyy'; <--- 並未檢查是否有 「'」、「;」、「--」等關鍵符號 這樣,除了自己來做處理防範以外,是否有因應的方法 還請知道的人提供一下資料,不論是詳細的說明,或是簡單的一個相關連結,都很感謝
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |