Создать триггер при компиляции - PullRequest
1 голос
/ 16 октября 2019

Чтобы предотвратить внедрение SQL, я хочу проверить все параметры процедур, пользовательских функций и пакетов Varchar.

Можно ли создать триггер при компиляции или создании новой хранимой процедуры или пользовательской функции для принудительного применения? все разработчики, чтобы добавить эту проверку? Для проверки параметра мне нужно вызвать пользовательскую функцию, которая проверяет и очищает каждый параметр типа Varchar.

1 Ответ

1 голос
/ 16 октября 2019

Может быть отправной точкой:

CREATE OR REPLACE TRIGGER ddl_trigger
BEFORE CREATE OR ALTER
ON SCHEMA

DECLARE
 sql_text ora_name_list_t;
 v_sysevent VARCHAR2(32767);
 v_sql_text VARCHAR(32767);
 i        PLS_INTEGER;


BEGIN

 i := sql_txt(sql_text);

  select ora_sysevent,
         sql_text(1)
    into v_sysevent,
         v_sql_text
    from dual;

 dbms_output.put_line('Event: ' || v_sysevent);
 dbms_output.put_line('DDL: ' || v_sql_text);

END ddl_trigger;
/

v_sql_text содержит текст выполняемого ddl. Возможно, вы могли бы просмотреть v_sql_text, чтобы убедиться, что запрашиваемые вами процедуры проверки вызываются.

...