¿Lo usas bien? El poder oculto de !RAW en Oracle APEX
Introducción
¿Alguna vez en Oracle APEX el HTML se veía como texto plano? ¿Has visto que los valores sustituidos pierden símbolos, comillas o se escapan automáticamente?
Oracle APEX incluye una forma poderosa de mantener los valores originales sin que se escapen o modifiquen automáticamente: el uso de !RAW.
Esta notación permite mantener los valores tal cual fueron generados, lo cual es clave en URLs dinámicas, JavaScript, redirecciones y cuando trabajas con firmas digitales o tokens.
En este artículo:
- Te explico qué hace y cómo funciona
!RAWen sustituciones de Oracle APEX. - Verás un ejemplo empresarial real con enlaces de aprobación firmados.
- Te mostraré errores comunes y cómo evitarlos.
Este artículo es útil para desarrolladores APEX, especialistas en seguridad, y arquitectos de soluciones que crean apps dinámicas donde el valor exacto sí importa.
Tabla de Contenido
- ¿Qué es
!RAWen Oracle APEX? - Sintaxis y contexto de uso
- Ejemplo real: enlace firmado con token de aprobación
- Consideraciones de seguridad y formato
- Buenas prácticas
- Conclusión y recurso extra
1. ¿Qué es !RAW en Oracle APEX?
Oracle APEX, por defecto, escapa caracteres especiales en sustituciones tipo &ITEM. para evitar problemas en HTML, JavaScript y otros contextos.
Cuando necesitas que el valor se mantenga exactamente igual —sin comillas, sin codificación HTML, sin backslashes— debes usar &ITEM!RAW. o #COLUMN_NAME!RAW#.
Esto es crítico cuando:
- Construyes URLs con tokens o firmas.
- Insertas valores en scripts JavaScript.
- Insertas datos en JSON o XML sin codificación.
2. Sintaxis y contexto de uso
Sustitución de ítems:
&MY_ITEM. -- escapado
&MY_ITEM!RAW. -- sin escape
Sustitución de columnas:
#NOMBRE_COLUMNA# -- escapado
#NOMBRE_COLUMNA!RAW# -- sin escape
Contextos típicos:
- En HTML: etiquetas
<a href="..."> - En JavaScript: construcción de objetos dinámicos
- En URLs: paso de parámetros firmados o codificados
3. Ejemplo real: enlace firmado con token de aprobación
Supón que generas un enlace con firma SHA-256 para aprobación de solicitudes. El link contiene ID, TIMESTAMP y un TOKEN generado en backend.
SELECT
'f?p=APP:PAGE::' || :APP_SESSION ||
'::NO::P1_ID,P1_TOKEN:' || id || ',' || token AS enlace
FROM solicitudes
En tu reporte APEX, creas una columna con el enlace generado, usando:
<a href="#ENLACE!RAW#">Aprobar solicitud</a>
🔒 Si usas #ENLACE# sin !RAW, los símbolos como &, =, % o : se codifican y el link se rompe.
🎯 Resultado: el link funciona, se mantiene exacto, y lleva al usuario directamente al flujo de aprobación con seguridad.
4. Consideraciones de seguridad y formato
!RAWno valida ni escapa nada, así que no debes usarlo con datos provenientes del usuario sin sanitizar.- Idealmente, sólo se usa con valores generados por PL/SQL backend o consultas controladas.
- Siempre valida el token o firma en la página de destino para evitar manipulación.
5. Buenas prácticas
✅ Usa !RAW sólo cuando sepas que el valor no necesita escape.
✅ Aplica validación del lado servidor si el valor contiene firmas, tokens o identificadores sensibles.
✅ Documenta en tu equipo cuándo usar !RAW y cuándo no.
✅ Para JavaScript, considera envolver con APEX_ESCAPE.JAVASCRIPT_LITERAL si el valor puede venir del usuario.
✅ En links generados, audita que no se generen XSS al permitir ejecución de código arbitrario.
6. Conclusión
El uso de !RAW en Oracle APEX te permite construir aplicaciones más dinámicas y seguras, siempre que entiendas bien su propósito.
No es una función mágica, pero usada correctamente te permite:
- Construir enlaces firmados
- Insertar scripts dinámicos sin errores
- Evitar escapes HTML automáticos que rompen tu lógica
Es una herramienta más en tu arsenal como desarrollador profesional de APEX.
🎓 ¿Quieres aprender más?
👉 Ver cursos en Aprendiz Academy
https://app.aprendiz.academy/ords/r/aprendiz/aprendiz-academy/home

Social List