Maison  >  Article  >  développement back-end  >  Sécurité de l'interface PHP : quatre solutions pour le chiffrement de l'interface PHP

Sécurité de l'interface PHP : quatre solutions pour le chiffrement de l'interface PHP

不言
不言original
2018-08-18 18:01:2111826parcourir

Ce que cet article vous apporte concerne la sécurité de l'interface PHP : quatre solutions pour le cryptage de l'interface PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

En tant que codeur Internet, que vous soyez un front-end ou un back-end, vous devez avoir une certaine compréhension des requêtes http, connaître les caractéristiques de http et comprendre clairement ce qu'est une requête et une réponse. sont en http, sachez pourquoi il y a des cookies, des sessions, ainsi que la signification et la nécessité des codes de vérification sur les sites Web. Parce que discuter de la sécurité des interfaces APP, c'est discuter de la sécurité des requêtes HTTP.

Généralement côté PC, nous utilisons des cookies cryptés pour identifier les membres et maintenir les sessions cependant, les cookies appartiennent à la fonction de stockage local du navigateur ; Le côté APP ne peut pas être utilisé, nous devons donc identifier les membres via les paramètres du jeton et comment gérer ce jeton ?

Tout d'abord, permettez-moi de parler des quatre solutions que j'ai utilisées avant de chiffrer cette interface :

Option 1
Avec le développement d'APP Les gens sont d'accord sur un algorithme de combinaison md5 spécifique, puis comparez les deux extrémités si elles sont identiques, autorisez, sinon, refusez
Cependant, cela est également dangereux si le programme APP est décompilé, ces algorithmes convenus seront exposés. . , notamment dans l'application Android, avec l'algorithme, il est tout à fait possible de simuler la demande d'interface et de réussir la vérification

Option 2
Le mot de passe de la table d'appartenance à la base de données a ; un mot de passe aléatoire Et une valeur md5 doublement cryptée ; lorsque l'utilisateur se connecte, je renvoie l'uid et le mot de passe correspondants du membre. Bien que le mot de passe soit en texte brut, les autres ne peuvent pas se connecter s'ils le connaissent. et chaque fois que l'interface est demandée user_id=333&token=aa37e10c7137ac849eab8a2d5020568f, le jeton correspondant à l'uid actuel peut être rapidement trouvé via l'uid de la clé primaire, puis comparé
Mais cette idée est trop yang trop simple Bien que la personne qui capture le ; Le paquet ne peut pas se connecter au membre via le mot de passe chiffré, cependant. Une fois que vous connaissez ce jeton, à moins que l'utilisateur ne modifie le mot de passe, vous pouvez toujours utiliser ce jeton pour faire fonctionner l'interface correspondante du membre

; Option 3
Utilisant un algorithme de cryptage symétrique, le cryptage L'algorithme effectue un cryptage sensible au temps sur uid+网站公钥 et est disponible dans un certain délai. Lorsque le membre se connecte avec succès, le serveur crypte l'ID et le renvoie au client. Le client apporte ce paramètre à chaque fois qu'il demande l'interface, et le serveur s'authentifie par décryptage
Cependant, cela est également dangereux. Car, pour se protéger de l'extérieur, on ne peut pas se protéger de l'intérieur. J'ai entendu dire que la panne de Ctrip était cette fois due à une opération malveillante du personnel interne qui a démissionné. Si le personnel malveillant interne connaît les règles de l'algorithme correspondantes, il peut toujours faire fonctionner les membres concernés via l'interface même s'il ne dispose pas des autorisations de base de données

Option 4
Demander lorsque les membres se connectent ; Connectez-vous à l'interface, puis le serveur renvoie un token au client. La règle pour générer le token est 网站公钥 + 当前uid + 当前时间戳 + 一段随机数 Double cryptage Selon les besoins, décidez si vous souhaitez mettre le token dans le cache et attendez une période de. temps pour expirer automatiquement, ou placez-le dans la base de données (si vous souhaitez le mettre dans la base de données, créez une table séparée pour enregistrer l'heure de connexion et de déconnexion de l'utilisateur) et modifiez-la lorsque l'utilisateur se déconnecte pour garantir que le jeton ne peut être utilisé qu'entre la déconnexion et la connexion manuelles de l'utilisateur.
Pour garantir la sécurité, les utilisateurs doivent être autorisés à se déconnecter automatiquement dans un certain délai ; cette solution, combinée à la gestion des autorisations Linux et de la base de données, peut empêcher la protection externe et interne

Précautions pour le développement ; d'autres interfaces

  1. Il est préférable d'utiliser les données au format JSON car JSON a de meilleures performances multiplateformes. Lors de la génération de JSON, faites attention aux deux formats de json : objet (dictionnaire) et tableau ; il n'existe pas de foreach similaire en PHP dans les langages de développement mobile, mais ne peut traverser que des tableaux. Nom de la clé pour obtenir la valeur de la clé.

  2. Que ce soit une réussite ou un échec. L'interface doit fournir des informations claires sur l'état des données et ne peut pas renvoyer NULL. Si NULL est renvoyé, elle plantera du côté IOS.

Recommandations associées :

Comment PHP implémente la génération et l'identification de code QR (code)

Code d'implémentation php pour exporter des fichiers Excel au format csv

Comment implémenter l'édition de tableaux en temps réel avec php et ajax (code joint)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn