Seit APEX Version 5.1 können ja nun zusätzliche Standard-Prüfungen für die Items durchgeführt werden. Diese sind:
- Whitelist for a-z 0-9 Nur Zeichen und Zahlen sind erlaubt (Leider sind auch keine Umlaute möglich)
- Blacklist HTML Command Characters (<> '')
- Blacklist &<>"/;*|=% and --
- Blacklist &<>"/;*|=% or -- and new line
Wenn das aber alles nicht passt, können wir uns eine eigene Validation schreiben:
DECLARE
stmt VARCHAR2(32000);
v_sqlerrm varchar2(32000);
BEGIN
FOR c IN (SELECT PAGE_ID, PAGE_NAME, ITEM_NAME
FROM APEX_APPLICATION_PAGE_ITEMS
WHERE application_id=:APP_ID and page_id=:APP_PAGE_ID ) LOOP
stmt:=q'!BEGIN
IF instr(v('!'||c.item_name||q'!'),'<')>0 OR
instr(v('!'||c.item_name||q'!'),'>')>0 OR
instr(v('!'||c.item_name||q'!'),'^')>0 OR
instr(v('!'||c.item_name||q'!'),'&')>0 OR
instr(v('!'||c.item_name||q'!'),'"')>0 OR
instr(v('!'||c.item_name||q'!'),chr(39))>0
THEN
RAISE_APPLICATION_ERROR(-20500,'Ungültige Zeichen verwendet (^<>&")');
END IF;
EXCEPTION WHEN OTHERS THEN
IF sqlcode=-20500 then raise; end if;
END; !';
commit;
EXECUTE IMMEDIATE stmt;
END LOOP;
RETURN true;
EXCEPTION WHEN OTHERS THEN
v_sqlerrm:=sqlerrm;
RETURN false;
END;
Wenn jetzt jemand in irgendein Item eines der Zeichen <>'" &^ einträgt, wird diese Eingabe abgewiesen.