Риск внедрения 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, тогда никакого риска нет.