Problemas de seguridad del proyecto: cifrado y descifrado SM4

Se recomienda ver este artículo junto con el artículo vinculado a continuación.

http://t.csdn.cn/tjmeS

Los problemas de seguridad del proyecto han sido investigados por personas todo el tiempo. Cuando los parámetros de empalme como ?status se pasan en la ruta del front-end, el valor del parámetro es muy llamativo en la barra de ruta del navegador, y es fácil ser modificado maliciosamente. Por ejemplo, el usuario no tiene permisos de edición. Pero aquellos que estén interesados ​​pueden cambiar la vista para editar modificando el valor del estado del parámetro, y luego cambiar la identificación del parámetro de ruta de consulta. El front-end generalmente usa los parámetros anteriores para habilitar el permiso del botón de página, y también llama a la interfaz para realizar la función de acuerdo con la identificación.

De hecho, si se trata de un terminal móvil, la situación anterior también ocurrirá. Cuando estaba haciendo el desarrollo de la cuenta oficial antes, a menudo copiaba la ruta de la página en la esquina superior derecha y luego cambiaba el valor del parámetro para probar la función. Más tarde, a través de algunos juicios, si aparecieron los tres puntos en la esquina superior derecha, se resolvió ocultando las funciones relevantes. Acerca de ocultar los botones de función en la esquina superior derecha, la documentación oficial del desarrollador de WeChat debe estar claramente escrita. Podemos habilitar esta función. en la página especificada.

En el proyecto, colocaremos parte de la información devuelta por el backend en el almacenamiento de sesión o en el almacenamiento local, lo que también traerá problemas de seguridad.

Cómo resolver problemas de seguridad al desarrollar proyectos en el lado web, el siguiente es el método que estoy usando en mi proyecto actual.

1. Use el cifrado SM4: agregue dos parámetros al encabezado de la solicitud, uno es el token más el ID de usuario más la marca de tiempo más la ruta de la solicitud actual, el otro es la marca de tiempo de la solicitud, la consulta predeterminada es juntar dos parámetros , md5 cifra y descifra la información del usuario.

  // Obtener la fecha y hora actual en formato extendido ISO 8601 new Date(Date.now()).toISOString() 

2. Después de pasar los parámetros al backend, el backend descifra y luego juzga si el usuario tiene la autoridad para modificar y consultar el contenido de la página actual, evitando así operaciones maliciosas por parte de personas interesadas.

3. Todos los datos de respuesta transmitidos desde el back-end al front-end están encriptados, y el front-end SM4 se usa después del descifrado.

4. Cómo cifrar y descifrar los extremos delantero y trasero:

Consulte el proyecto gitee

Puede haber un problema con el archivo base64js.js. Npm instalo base64-js yo mismo y luego lo introduzco en SM4Util.js.

var base64js = require('base64-js');

1. En el front-end, el interceptor de solicitudes axios puede obtener lo que queremos, como la ruta y los parámetros de la interfaz, y podemos cifrarlo aquí.

Vue.prototype.$http.interceptors.request.use(config => {

  // console.log('config的路径,参数 :>> ', config.url,config.data);
// 加密 SM4Util.sm4ECBEncrypt(需要加密的字符串, 密钥)
config.headers.随便起的名称={加密后的参数};
  return config;
});

2. Realice un descifrado unificado de la respuesta en el interceptor de respuesta Vue.prototype.$http.interceptors.response.use y luego devuélvalo;

Supongo que te gusta

Origin blog.csdn.net/aZHANGJIANZHENa/article/details/130679226
Recomendado
Clasificación