AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / Editores / Editor de análisis  / Modelo Lógico de Datos
  • Presentación
  • Definir un elemento de contraseña en la editor de análisis
  • Definir un elemento de contraseña de forma dinámica (mediante programación)
  • Definir un elemento de contraseña a través de una consulta
  • Manejo de un elemento de tipo Contraseña
  • Comparaciones
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Los elementos de "Contraseña" se utilizan para almacenar de forma segura las contraseñas mediante el uso de una sal y un algoritmo hash.
El principio es muy sencillo:
  • El usuario proporciona una contraseña en forma de cadena.
  • Esta cadena se almacena en un elemento "Contraseña"..
  • El motor HFSQL añade capas de seguridad. La contraseña (es decir, la cadena) es salada y con hash, y el resultado de estos procesos se almacenará en el archivo de datos.
    • El salado consiste en añadir una cadena aleatoria (sal) a la cadena proporcionada.
    • El resultado se convierte en hash.
HFSQL sólo almacena los siguientes elementos en el archivo de datos:
  • la sal utilizada,
  • el resultado del hash,
  • el tipo de algoritmo utilizado.
Con estos datos, resulta imposible reconstruir la cadena original. Por lo tanto, los datos se almacenan de forma segura.
Para comprobar una contraseña, basta con comparar el valor introducido por el usuario con el contenido del elemento Contraseña. HFSQL ejecutará los mismos procesos que los utilizados para almacenar los datos. A continuación, comparará el nuevo resultado con el resultado almacenado.
Para utilizar este tipo de elementos en sus proyectos existentes:
  • en el análisis associated con su proyecto, cambie el tipo de elemento utilizado para almacenar las contraseñas. El elemento "Texto" se convierte en un elemento "Contraseña.
  • actualice sus datos a través de la modificación de datos de automatic. La modificación de datos de automatic salará y hará un hash de la cadena en el artículo.
  • si es necesario, haga algunos ajustes en su código. Para comprobar una contraseña, basta con comparar el elemento HFSQL con una cadena. Por ejemplo, el código será:
    IF EDT_Password = LoginCredentials.Password THEN
    // Password OK
    ELSE
    // Wrong password
    END
Definir un elemento de contraseña en la editor de análisis
Para crear un elemento de contraseña en editor de análisis:
  1. Cree un nuevo campo en la ventana de descripción de los campos del archivo de datos (opción "Descripción de los campos" en el menú contextual del archivo de datos en el editor.
  2. Seleccione el tipo de "Contraseña"..
  3. Indicar las diferentes opciones del artículo:
    • Función de derivación utilizada para el hash.
    • Algoritmo Hash utilizado para la sal.
    • Número de Iteraciones: número de iteraciones de hash. Se recomienda establecer un valor entre 10 000 y 30 000.
    • Longitud del resultado (en bits): Longitud de la salida del hash. La clave (expresada en bits) debe ser un múltiplo de 8, mayor de 160 bits y menor de 2048 bits. Se recomienda utilizar una clave de 256 o 512 bits.
  4. Valide.
Observación: Estas operaciones también pueden realizarse en un elemento de texto existente para convertirlo en un elemento "Contraseña".
Definir un elemento de contraseña de forma dinámica (mediante programación)
Para describir un artículo a través de la programación, debe utilizar una variable de tipo "Artículo description". La description de un artículo es validada por HDescribeItem.
Para describir un elemento "Contraseña":
  1. Declarar una variable de tipo Artículo description.
  2. Describir el artículo utilizando diferentes propiedades (para más detalles, véase Artículo description).
  3. Utilice las propiedades específicas de la description de un elemento "Contraseña".:
    • La propiedad escribir a máquina debe estar definida como hItemSecurePassword.
    • El spDerivation Property se utiliza para definir la función de derivación de claves utilizada para el hash.
    • El spHash Property se utiliza para definir el algoritmo de salado.
    • El spIterationCount Property se utiliza para definir el número de iteraciones del algoritmo hash.
    • La spSize Property se utiliza para definir la longitud de salida del hash.
  4. Validar la description de cada elemento (HDescribeItem).
Definir un elemento de contraseña a través de una consulta
Para definir un elemento de contraseña en una tabla mediante una consulta SQL, es necesario ejecutar una consulta "ALTER TABLE" con el parámetro SECUREPASSWORD .
Recordatorio: La sentencia ALTER TABLE se utiliza para crear o modificar la estructura de una tabla existente.
Ejemplo: Consulta para añadir un elemento:
ALTER TABLE test2 ADD spTest2 SECUREPASSWORD
Ejemplo: Consulta para cambiar el tipo de un elemento:
ALTER TABLE test2 ALTER text TYPE SECUREPASSWORD
Manejo de un elemento de tipo Contraseña
El uso de un elemento de contraseña tiene implicaciones específicas:
  • Modificación de datos de automatic: Un elemento de texto puede convertirse en un elemento de contraseña, pero un elemento de contraseña no puede convertirse en otro tipo.
  • Se permite NULL en los elementos de la contraseña.
  • Un elemento que contenga una cadena vacía ("") será sometido a hash y luego a salazón.
  • Las consultas son compatibles con los archivos de datos que contienen elementos de la contraseña. El elemento es de sólo lectura y no admite ninguna operación específica. Se admiten las siguientes operaciones:
    • equality, diferencia,
    • NULL, COUNT, IN, STRINGDECODE, CASE, NULLIF
  • Importar: Puede importar cadenas JSON, de texto, XML y XLS en un elemento de la contraseña. La cadena será automáticamente hash y salada.
  • Exportar:
    • Exportar a CSV, XLS: el elemento Contraseña está representado por la cadena "*****".
    • Exportación a JSON, XML: el elemento de la contraseña no se exporta.
  • No se puede definir un elemento de contraseña como clave (o índice).
  • No se puede mostrar el valor de un elemento de contraseña. En arrays, se sustituirá automáticamente por "*****".
  • Los valores de Default son los siguientes:
    • PBKDF2
    • SHA2_256
    • Número de Iteraciones : 20 000
    • Longitud de la salida : 256

Comparaciones

Un elemento de contraseña sólo puede compararse con una cadena.
No es posible comparar dos elementos de la contraseña
Ejemplo:
// Compare a Password item with a string
LoginCredentials.Password = "hello"
IF NOT HAdd(LoginCredentials) THEN
Trace(HErrorInfo())
END
 
HReadFirst(LoginCredentials)
IF LoginCredentials.Password = "hello" THEN
Trace("Password OK")
ELSE
Trace("The passwords do not match")
END
Ejemplo de código incorrecto:
// You cannot compare an item
// of type Password with a variable of type password
 
oSP is SecurePassword
oSP.Hash = MDPS_SHA2_256
oSP.IterationCount = 10000
oSP.Size = 256
oSP = "hello"
 
LoginCredentials.Password = "hello"
IF NOT HAdd(LoginCredentials) THEN
Trace(HErrorInfo())
END
 
HReadFirst(LoginCredentials)
IF LoginCredentials.Password = oSP THEN
Trace("Password OK")
ELSE
Trace("The passwords do not match")
END
Versión mínima requerida
  • Versión 27
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 30/10/2022

Señalar un error o enviar una sugerencia | Ayuda local