2012-03-20 17 views
0

私はそうのようなビジネスコネクタを使用した場合のAxaptaオブジェクトにExecuteStmtメソッドを使用していくつかのコードを、持っている:Axapta.ExecuteStmt - 安全ですか?

AxaptaRecord record = (AxaptaRecord)ax.CreateAxaptaRecord("SalesTable"); 
record.ExecuteStmt("select * from %1 where %1.SalesId == '" + id + "'"); 
while (record.Found) 
{ 
    // do stuff 
} 

これは正常に動作しますが、公共の対面ウェブサイト上になるだろうので、これがありますデータへのアクセスの良い方法であり、SQLインジェクションから安全ですか?私はこの文がjoinを含んでいないので、クエリをパラメータ化する "forcePlaceholders"キーワードを使用することを読んだので、

+0

また、答えを見て:http://stackoverflow.com/a/876547/4509 –

+0

'id'はどこから来たのですか?私はそれを ''に変える可能性はあるのか? DROP TABLE学生; - '? –

答えて

1

私はいいえと言います。これは依然としてSQLインジェクションを引き起こします。

+0

あなたはそうです、私はちょうど "フレンドリー" SQLインジェクションを渡して試しました:S215 * '|| %1.SalesId LIKE '* S209をIDとして返し、すべてのs21​​5とすべてのs209の結果を返しました – CallumVass

関連する問題