2

axpata ビジネス コネクタを介して安全に呼び出す方法はありますか

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 から呼び出す方がよいでしょうか?

4

2 に答える 2

2

すべてのケースをカバーしたことを確認する方法はありません...

ExecuteStmtの使用は、おそらく間違ったアプローチです。selectなどをAxaptaメソッド(パラメーターを使用)に記述してから、そのメソッドを呼び出す必要があります。

于 2009-05-18T07:13:32.580 に答える
-2

たとえば、「to \」を置換する必要があります

string salesId = someObject.Text.Replace("'", "\\'");
于 2009-05-18T04:14:14.403 に答える