是否有注射安全的方式通過axpata業務接口調用注射安全調用IAxaptaRecord.ExecuteStmt()
string salesId = someObject.Text;
IAxaptaRecord salesLine = ax.CreateRecord("SalesLine");
salesLine.ExecuteStmt("select * from %1 where %1.SalesId == '" + salesId + "'");
如果someObject.Text設置爲以下,我是那麼脆弱的X ++代碼注入:
"SomeSalesOrder' || %1.SalesId == 'SomeOtherOrder"
有沒有辦法參數化查詢,或者倒不如寫都直接x中的數據訪問代碼++,然後調用與COM?
我正在尋找由框架處理,以處理所有的特殊情況,不只是我給 – holz 2009-05-18 04:52:44
的例子,您可以創建IAxaptaRecord擴展方法是像「ExecuteParametizedStmt一個參數化方法(查詢字符串,params對象[]) 這將接受由預計的String.format格式的查詢,並建立它的方式,對變量(比如逃逸) – 2009-05-20 00:12:32
整個問題是處理逃逸執行所需的工作之後正確。如果查詢是「select * from%1.Id == {0}」(其中{0}應該是一個int),然後傳入「42 || 1 == 1」,則注入將在I用你給的方法逃脫了。 我不知道所有的x的邊緣情況++注射在這裏,所以我不想寫我自己的逃逸方法。因爲如果我這樣做的話,我很可能會錯過一些東西,而且只有在它爲時已晚時纔會發現它。這是一個面向公衆的網絡應用程序,有很多機密信息,所以我需要100%認爲沒有注射風險。 – holz 2009-05-20 12:04:42