


Stratégie de sécurité du développement de la plateforme publique WeChat
Mar 03, 2017 am 10:11 AMBien que le serveur qui gère les requêtes WeChat se trouve en backend du serveur WeChat, les problèmes de sécurité ne peuvent toujours pas être sous-estimés.
Résumez globalement les aspects suivants, en espérant attirer l'attention.
1. Configurez un jeton très complexe et essayez de masquer l'URL de l'adresse du service
URL?: l'adresse du lien pour le traitement des demandes WeChat
Jeton?: identifiant d'identité de l'utilisateur
Lorsque vous postulez pour devenir développeur ou modifiez l'URLToken, WeChat accédera à l'URL via la requête Get et vérifiera la signature, qui nécessite le jeton.
Le processus équivaut à une poignée de main. Si la poignée de main réussit, une communication ultérieure peut être effectuée.
Dangers rencontrés?:
1. Si l'URL et le jeton sont piratés, ils seront directement liés à d'autres. les comptes publics. Les services peuvent être volés directement. Bien entendu, pour certains comptes de type publicitaire, cela n'est pas rentable. Cependant, s'il s'agit d'un compte public qui fournit certaines applications ou services et fournit des services gratuits à d'autres comptes, cela augmentera inévitablement la pression sur le serveur et entra?nera certains risques.
2. Si l'URL est crackée, même si le jeton n'est pas cracké. Certains criminels peuvent attaquer l’URL. Bien entendu, il n’est pas facile d’être ciblé par des pirates. Haha
Suggestions?:
1. Essayez de vous assurer que l'URL du service n'a aucune relation directe avec la fourniture d'informations ou de pages Web. Pour éviter cela, l'URL du service est calculée en fonction de l'URL.
2. Vous pouvez utiliser la redirection d'URL pour masquer certaines informations de chemin.
3. Déterminez la source de la demande dans le service, s'il s'agit d'une demande du serveur WeChat. Cela peut être déterminé en fonction de l'URL demandée et les autres demandes ne seront pas traitées.
4. Valeur du jeton, essayez d'être aussi complexe que possible.
2. Il est recommandé d'effectuer une vérification de signature pour chaque demande
Après avoir défini l'URL ou le jeton, WeChat soumettra une demande d'obtention pour accéder à notre service backend. Une fois la vérification réussie, toutes les autres demandes WeChat sont soumises via POST.
Ainsi, dans le code, nous jugeons souvent s'il faut effectuer une vérification de signature en fonction de la méthode de requête. Dans les exemples précédents, cela a également été utilisé?:
?///?<summary> ????????///?處理請求,產(chǎn)生響應(yīng) ????????///?</summary> ????????///?<returns></returns> ????????public?string?Response() ????????{ ????????????string?method?=?Request.HttpMethod.ToUpper(); ????????????//驗證簽名 ????????????if?(method?==?"GET") ????????????{ ????????????????if?(CheckSignature()) ????????????????{ ????????????????????return?Request.QueryString[ECHOSTR]; ????????????????} ????????????????else ????????????????{ ????????????????????return?"error"; ????????????????} ????????????} ????????????//處理消息 ????????????if?(method?==?"POST") ????????????{ ????????????????return?ResponseMsg(); ????????????} ????????????return?"無法處理"; ????????}
Bien que d'autres requêtes WeChat soient soumises en POST, leur URL également contient des informations de signature, et nous devons également effectuer une authentification par signature. Par conséquent, pour des raisons de sécurité, il est recommandé d’effectuer une authentification par signature à chaque demande.
Basé sur ce principe, nous modifions le code comme suit :
/// <summary> /// 處理請求,產(chǎn)生響應(yīng) /// </summary> /// <returns></returns> public string Response() { string method = Request.HttpMethod.ToUpper(); //驗證簽名 if (method == "GET") { if (CheckSignature()) { return Request.QueryString[ECHOSTR]; } else { return "error"; } } //處理消息 if (method == "POST") { //驗證簽名 if (CheckSignature()) { return ResponseMsg(); } } return "無法處理"; }
Algorithme de signature CheckSignature() , ici je n'entrerai plus dans les détails, pour plus de détails, voir : Construction du cadre de base pour le développement du compte public WeChat
3 Vous pouvez vérifier la demande en fonction de ToUserName
Habituellement notre. le compte public correspond à un openId, qui peut être obtenu lors du traitement des messages. Cet openId est fixe et les informations d'identité de l'expéditeur peuvent être déterminées sur cette base. De cette fa?on, les messages invalides ou les tromperies peuvent être très bien filtrés. Je ne traiterai que les messages qui m'ont été envoyés. Même si l'URL et le jeton sont piratés, le service back-end peut toujours être garanti et ne fournir des services que pour notre compte public.
/// <summary> /// 是否是發(fā)給我的呢 /// </summary> /// <param name="toUserName">接受者</param> /// <returns>bool</returns> private bool IsSentToMe(string toUserName) { return string.Equals(toUserName,Context.OpenID,StringComparison.OrdinalIgnoreCase); }
4. AppId et AppSecret
S'il s'agit d'un compte de service, il existe des fonctions avancées. , et Ces fonctionnalités avancées nécessitent des informations d'identification de développeur?: AppId et AppSecret.
Vous pouvez obtenir ACCESS_TOKEN basé sur AppId et AppSecret, et vous pouvez gérer des fonctions avancées basées sur ACCESS_TOKEN, telles que des menus personnalisés.
ACESS_TOKEN a un délai d'expiration, généralement 7200S. Cependant, AppId et AppSecret sont générés aléatoirement par le système et n'ont pas de délai d'expiration. S'ils doivent être modifiés, vous devez vous connecter à la plateforme de gestion de compte public WeChat pour les réinitialiser.
Pour obtenir l'Access_Token, demandez l'URL suivante via Get
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxxx&secret=xxxx.
Après avoir obtenu l'Access_Token, vous pouvez utiliser certaines interfaces avancées
Par exemple?:
Créez un menu personnalisé via la méthode de requête http?: POST (veuillez utiliser le protocole https)
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
Spécifique Pour la mise en ?uvre, voir?: Menu personnalisé de développement de compte public WeChat
ACCESS_TOKEN est obtenu via la méthode get, qui n'est en fait pas très s?re. Si quelqu'un le vole, il peut modifier le lien de la coutume. menu et changez-le Remplacez-le par des liens publicitaires, ou des liens plus maléfiques, et votre serveur deviendra directement une machine à viande pour les autres. Il faut donc assurer la sécurité du serveur. Pour des raisons de sécurité, il est recommandé de réinitialiser AppId et AppSecret (la page de service en arrière-plan de la plateforme publique WeChat) de temps en temps. Le plus important est d'assurer la sécurité du serveur autorisé. Pour plus de détails, voir Five.
5. Assurer la sécurité du serveur
Il existe de nombreux facteurs pour la sécurité du serveur, tels que?: assurer la sécurité du réseau, configurer des pare-feu, installer un logiciel antivirus, restreindre certains ports, etc. nos exigences habituelles en matière de sécurité du serveur. Il y a beaucoup d’informations, je n’entrerai donc pas dans les détails ici.
Pour plus de stratégies de sécurité de développement de plateforme publique WeChat et d'articles connexes, veuillez prêter attention au site Web PHP chinois?!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)