2012-03-20 1 views
0

У меня есть некоторый код, который использует метод ExecuteStmt на объекте Axapta при использовании Business Connector, например, так:Axapta.ExecuteStmt - Это безопасно?

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

Это прекрасно работает, но это будет на сайте общественного облицовочного, так это хороший способ доступа к данным и защищен ли он от SQL Injection? Поскольку я читал, что этот оператор будет использовать ключевое слово «forcePlaceholders», которое будет параметризовать запрос, поскольку он не содержит соединение?

+0

Также посмотрите на ответ: http://stackoverflow.com/a/876547/4509 –

+0

Откуда приходит идентификатор? Возможно ли, что я могу изменить его на ''; DROP TABLE Студенты; - '? –

ответ

1

Я бы сказал, нет. это по-прежнему вызывает реакцию sql.

+0

Вы правы, я только что попробовал «дружественную» SQL-инъекцию, передав: S215 * '|| % 1.SalesId LIKE '* S209 как id, и он возвратил все s215 и все результаты s209 – CallumVass

 Смежные вопросы

  • Нет связанных вопросов^_^