Риск внедрения SQL-кода при подключении к AS/400 с использованием JTOpen

Мы используем JTOpen для подключения к нашей машине AS/400, и я пытаюсь решить проблему уязвимости внедрения SQL-кода при использовании этого типа интеграции.

Обратите внимание, что мы используем только часть программы вызова API, а не соединение jdbc.

Я не программист RPG и не знаю, каковы риски с точки зрения внедрения SQL-кода в код, и при этом я не знаю, останавливает ли API-интерфейс JTOpen подобные атаки.

После небольшого поиска я обнаружил, что, тем не менее, можно делать SQL-инъекции в программы RPGLE, когда они не используют хранимые процедуры. Поэтому мой вопрос таков: возможно ли это сделать через API JTOpen.

Нужно ли программно проверять SQL-инъекции во всех вызовах JTOpen API?

2 ответа

Я не Java-гуру, поэтому я просто буду использовать здесь псевдо-код.

Исходя из моего понимания, вы можете использовать динамический SQL, но просто не объединяйте оператор where вместе.

Так string = "select * from table where key = " + id совершенно неправильно. Вы можете, однако, сделать что-то похожее на

string = "select * from table where key = @id";
build connection
add parameter to assign value to @id
execute command

Хотя лучше будет использовать хранимые процедуры.

Если вы не используете JDBC, единственная причина, по которой вам нужно будет проверить наличие SQL-инъекций, - это если вы используете динамический SQL в программах, вызываемых на хосте с использованием JT400.

Если программы, запущенные на хосте, не используют динамический SQL, тогда никакого риска нет.

Другие вопросы по тегам