Problèmes de sécurité du projet - Chiffrement et déchiffrement SM4

Il est recommandé de consulter cet article avec l'article lié ci-dessous

http://t.csdn.cn/tjmeS

Les problèmes de sécurité du projet ont été recherchés par des personnes tout le temps. Lorsque des paramètres de raccordement tels que ?status sont passés sur le chemin frontal, la valeur du paramètre est très accrocheuse sur la barre de chemin du navigateur, et il est facile d'être modifié de manière malveillante. Par exemple, l'utilisateur n'a pas les autorisations d'édition. Mais ceux qui sont intéressés peuvent changer le voir pour éditer en modifiant la valeur du paramètre status, puis changer l'id du paramètre query path. Le frontal utilise généralement les paramètres ci-dessus pour activer l'autorisation du bouton de page, et appelle également l'interface pour réaliser la fonction en fonction de l'identifiant.

En fait, s'il s'agit d'un terminal mobile, la situation ci-dessus se produira également. Lorsque je faisais auparavant du développement de compte officiel, je copiais souvent le chemin de la page dans le coin supérieur droit, puis je modifiais la valeur du paramètre pour tester la fonction. Plus tard, à travers certains jugements, si les trois points dans le coin supérieur droit sont apparus, cela a été résolu en masquant les fonctions pertinentes. À propos du masquage des boutons de fonction dans le coin supérieur droit, la documentation officielle du développeur WeChat doit être clairement écrite. Nous pouvons activer cette fonction sur la page indiquée.

Dans le projet, nous mettrons certaines informations renvoyées par le backend dans le stockage de session ou le stockage local, ce qui apportera également des problèmes de sécurité

Comment résoudre les problèmes de sécurité lors du développement de projets côté Web, voici la méthode que j'utilise dans mon projet actuel.

1. Utilisez le cryptage SM4 - ajoutez deux paramètres à l'en-tête de la demande, l'un est le jeton plus l'ID utilisateur plus l'horodatage plus le chemin de la demande actuelle, l'autre est l'horodatage de la demande, la requête par défaut consiste à assembler deux paramètres , md5 chiffre et déchiffre les informations de l'utilisateur.

  // Récupère l'horodatage actuel au format étendu ISO 8601 new Date(Date.now()).toISOString() 

2. Une fois les paramètres transmis au backend, le backend décrypte puis juge si l'utilisateur a le pouvoir de modifier et d'interroger le contenu de la page en cours, empêchant ainsi les opérations malveillantes par les personnes intéressées.

3. Toutes les données de réponse transmises du back-end au front-end sont chiffrées et le front-end SM4 est utilisé après le déchiffrement.

4. Comment chiffrer et déchiffrer les front-end et back-end :

Consulter le projet de gîte

Il peut y avoir un problème avec le fichier base64js.js.J'installe npm base64-js moi-même, puis je l'introduis dans SM4Util.js.

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

1. Sur le front-end, l'intercepteur de requête axios peut obtenir ce que nous voulons, comme le chemin et les paramètres de l'interface, et nous pouvons le chiffrer ici.

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

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

2. Effectuez un décryptage unifié de la réponse dans l'intercepteur de réponse Vue.prototype.$http.interceptors.response.use, puis renvoyez-le ;

Je suppose que tu aimes

Origine blog.csdn.net/aZHANGJIANZHENa/article/details/130679226
conseillé
Classement