viernes, 23 de junio de 2017

Encrypt URL Parameters: Site Key para compartir enlaces con parámetros cifrados basados en Web Panel

Bueno hoy el objetivo fue cifrar los parámetros usados en los Web Panels de Genexus para evitar la manipulación de los mismos y adicionalmente poder compartir estos enlaces (Ej: Por un correo electrónico como un enlace).

Así que a buscar y probar. Basándonos en la Wiki de Genexus (enlace) respecto a este tema tenemos que existen dos formas de cifrar los parámetros:
  1. Basado en Web Session (Session Key): es decir que se usan características de la sesión del usuario para cifrar los parámetros. En la wiki recalca que es el más seguro pero ya que depende de los valores de la sesión y cookies del usuario el cifrado es diferente para cada sesión.
  2. Basado en una key por el sitio (Site Key): menos segura pero permite poder compartir los enlaces generados ya que el mismo cifrado es usado en todo la aplicación Web.
Para cifrar los parámetros use la segunda opción configurándola de la siguiente manera:
  1. En las propiedades del Ambiente de la KB se usa la propiedad Encrypt URL Parameters usando la opción Site Key.


  2. Rebuild de toda la KB para que se compile el uso de parámetros cifrados en todos los objetos pertinentes.
Para generar mi propia "key" y brindar mayor seguridad y administración a mi site y no usar la key por defecto de Genexus se usó los siguientes pasos:
  1. Generar un llave o dos (según la documentación de Genexus, ver SAC 29369, una es usada para cifrar los parámetros de conexión a la Base de datos y la otra para el cifrado de los parámetros) mediante la función GetEncryptionKey() (ver doc respectivo de la función para más detalles). 
  2. Crear el archivo de texto plano Application.Key (ubicarla en la raiz de la KB, del proyecto, para que el archivo web.config pueda ser actualizado con los parámetros respectivos cifrados y en la carpeta Web del modelo generado para que las clases respectivas puedan descifrar los parámetros).
  3. Editar el archivo creado con las "keys" generadas.


  4. Compilar y probar, si observan el archivo web.config tendrá un nuevo cifrado ya que se alteraron las "keys respectivas" y ya no se usan las que genera Genexus por defecto.
Para generar de forma automática los enlaces cifrados para poder compartirlos, se usó el método Link del objeto recibiendo los parámetros respectivos.

&Var = &urlsite + Link(WebPanel, &param1, &param2)

o

&Var = &urlsite + WebPanel.Link(&param1, &param2)

En la captura pueden observar el cifrado de los parámetros llamando una Transacción.


Quedó pendiente para una próxima entrada el cifrado manual de los parámetros (ver enlace).

Si desean configurar una clase (dll) y no un archivo que controle las "keys" ver el SAC 29874.

No hay comentarios:

Publicar un comentario