2012-04-04 5 views
1

Я определил роль и предоставил ей только подключение к базе данных и выполнение определенной хранимой процедуры. Пользователи этой роли могут видеть тело процедуры при выполнении этого запроса;Скрытие тела хранимой процедуры?

select * from ALL_SOURCE where NAME = 'procedureName'; 

Процедура принимает параметр VARCHAR2 и использует его с помощью запроса выбора. Это проблема безопасности? Должен ли я скрыть его каким-либо образом или избежать параметра?

ответ

2

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

Если ваша хранимая процедура реализует некоторую бизнес-логику, которую вы считаете проприетарной, вы можете потенциально wrap the code, чтобы она была запутана в словаре данных. Однако если вы это сделаете, убедитесь, что ваш исходный код находится в исходном коде, потому что нет способа развернуть код после его завершения (строго говоря, существуют различные методы, которые злоумышленник может использовать для восстановления большей части если они действительно захотели, но это достаточно безопасно).

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