線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1358
推到 Plurk!
推到 Facebook!

請問 Delphi 在 sql injection 所做的努力?

答題得分者是:sryang
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-11-01 00:50:00 IP:61.64.xxx.xxx 訂閱
關於 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-11-02 17:41:38 IP:59.125.xxx.xxx 訂閱
就個人的經驗,以 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/
系統時間:2024-05-17 13:29:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!