Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

256
Vistas
Node Express Regex para detectar caracteres no válidos

Estamos utilizando el módulo Node Crypto y Express para proporcionar una cadena de consulta y ofuscar el nombre del formulario.

 'use strict'; var algorithm = 'aes-256-ctr' , crypto = require('crypto') ; var enc = function(string, key){ var cipher = crypto.createCipher(algorithm, key); var buff = Buffer.from(string, 'utf8'); return Buffer.concat([cipher.update(buff), cipher.final()]).toString('hex').toUpperCase(); }; var dec = function(string, key){ var decipher = crypto.createDecipher(algorithm, key); var buff = Buffer.from(string, 'hex'); return Buffer.concat([decipher.update(buff), decipher.final()]).toString('utf8'); };

Lo más probable es que la clave utilizada sea un GUID de sesión aleatoria, por lo que las cadenas de consulta solo serán válidas mientras esa sesión sea válida.

El problema que veo es que si un GUID de sesión es diferente al que codificó la cadena, la función aún descifrará la cadena hexadecimal, pero el resultado no será válido.

¿Hay una cadena de expresiones regulares (para detectar si se devolvieron caracteres no válidos en la cadena) o alguna otra forma de determinar si se usó una clave diferente para decodificar la cadena que no sea su clave original?

Pronto crearé un middleware rápido que analizará cada solicitud entrante y determinará si es necesario descifrar o no la solicitud.consulta o la solicitud y tratará de determinar si la cadena de consulta se descifró correctamente.

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Esto es lo que haría. Si tiene una cadena que desea cifrar y puede saber que la ha descifrado correctamente después, en lugar de cifrar una cadena simple como 'abc' , puede cifrar una representación JSON de un objeto como {string: 'abc'} - que será una cadena: '{"string":"abc"}'

Puede codificar una cadena como esta con una función como:

 let encode = string => JSON.stringify({string});

Ahora encode('abc') devuelve una cadena: '{"string":"abc"}'

Cuando descifra una cadena y JSON.parse() y da como resultado un objeto que tiene una propiedad de string , entonces puede estar bastante seguro de que no es basura aleatoria.

Después de descifrar, puede decodificar el resultado con una función como esta:

 let decode = json => { try { return JSON.parse(json).string; } catch (e) {} };

que devolverá la cadena correcta para un JSON correcto, pero no definida para un JSON no válido.

Por supuesto, puede hacer algo así de muchas maneras diferentes, pero esta es una forma bastante simple para la cual no necesitaría cambiar tanto su código.

Para una solución más robusta, puede usar JWT:

  • https://jwt.io/
about 4 years ago · Santiago Trujillo Denunciar

0

El método habitual para garantizar que se utiliza la clave correcta y/o que se han modificado los datos cifrados es cifrar la MAC. Eso significa usar una derivación de la clave de cifrado para HMAC los datos cifrados y agregar el resultado de HMAC a los datos cifrados. Al descifrar los datos cifrados (menos el resultado de HMAC) se vuelve a ejecutar a través de HMAC con la clave derivada y se compara con el valor de HMAC que se agregó. Si eso tiene éxito, descifre los datos; de lo contrario, la clave o los datos son incorrectos.

Todo esto puede ser una sobrecarga inaceptable. Una alternativa es agregar un pequeño elemento de datos (un canario ) a los datos antes del cifrado y después del descifrado verificar el valor. Pero esto no es seguro contra algunos ataques.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda