Points à garder à l'esprit lors du développement de pages Web avec ASP. Les amis qui utilisent ASP peuvent consulter les étapes.
1. Ne vous fiez jamais à la taille appropriée des saisies utilisateur ou aux caractères appropriés. Les entrées des utilisateurs doivent toujours être validées avant de les utiliser pour prendre des décisions. Votre meilleure option consiste à créer un composant COM+ que vous pouvez appeler à partir d’une page ASP pour valider la saisie de l’utilisateur. Vous pouvez également utiliser la méthode Server.HTMLEncode, la méthode Server.URLEncode ou l'un des exemples de code au bas de cette page.
2. Ne créez pas la chaîne de connexion à la base de données dans la page ASP en concaténant la chaîne saisie par l'utilisateur. Les utilisateurs malveillants peuvent accéder à la base de données en insérant du code dans leur entrée. Si vous utilisez une base de données SQL, utilisez une procédure stockée pour créer la chaîne de connexion à la base de données.
3. N'utilisez pas le nom de compte d'administrateur SQL par défaut, sa. Tous ceux qui utilisent SQL savent que le compte sa existe. Créez un autre compte de gestion SQL avec un mot de passe sûr et sécurisé et supprimez le compte sa.
4. Avant de stocker les mots de passe des utilisateurs clients, veuillez utiliser un algorithme de hachage, un encodage base64 ou utiliser Server.HTMLEncode ou Server.URLEncode pour encoder ces mots de passe. Vous pouvez également utiliser l'un des exemples de code au bas de cette page pour vérifier les caractères du secret client.
5. Ne placez pas de noms de compte ou de mots de passe administratifs dans des scripts d'administration ou des pages ASP.
6. Ne prenez pas de décisions dans votre code basées sur les en-têtes de requête, car les données d'en-tête peuvent être falsifiées par des utilisateurs malveillants. Encodez toujours les données de la requête avant de les utiliser ou vérifiez les caractères qu'elles contiennent à l'aide de l'exemple de code ci-dessous.
7. Ne stockez pas de données de sécurité dans des cookies et ne masquez pas les champs de saisie dans les pages Web.
Utilisez toujours Secure Sockets Layer (SSL) avec les applications basées sur des sessions pour éviter le risque d'envoyer des cookies de session sans les chiffrer. Si le cookie de session n'est pas chiffré, un utilisateur malveillant peut utiliser un cookie de session dans une application pour accéder à une autre application dans le même processus.
8. Lors de l'écriture d'applications ISAPI, de filtres ou d'objets COM+, soyez conscient des débordements de tampon dus à la taille des variables et des données. Soyez également conscient des problèmes de canonisation qui peuvent résulter de l'interprétation, comme l'interprétation des chemins absolus comme des chemins relatifs ou des URL.
9. Lorsqu'une application ASP exécutée dans un cloisonnement monothread (STA) passe à un cloisonnement multithread (MTA), le jeton d'emprunt d'identité devient obsolète. Cela peut entraîner l'exécution de l'application sans emprunt d'identité, lui permettant ainsi de s'exécuter efficacement avec l'identité du processus pouvant autoriser l'accès à d'autres ressources. Si vous devez changer de modèle de thread, désactivez et désinstallez l'application avant d'effectuer la modification.
exemple de code
Cet exemple de code contient une fonction qui supprime les caractères potentiellement dangereux d'une chaîne envoyée à la fonction. Dans les deux exemples ci-dessus, spécifiez la page de codes pour garantir un encodage correct. L'exemple suivant utilise Microsoft Visual Basic® Scripting Edition (VBScript) :
<%@ LANGUAGE=VBScript %> <% Réponse.CodePage = 1252 Response.Write (Bonjour et RemoveBadCharacters (Request.Form (UserName))) Response.Write(<BR>C'est pourquoi vous avez reçu une erreur :) Fonction RemoveBadCharacters(strTemp) Dim regEx Définir regEx = Nouvelle RegExp regEx.Pattern = [^/s/w] regEx.Global = Vrai RemoveBadCharacters = regEx.Replace(strTemp, ) Fonction de fin %> |
L'exemple suivant utilise Microsoft JScript® :
<%@ LANGUAGE=JScript %> <% Réponse.CodePage = 1252 ; Response.Write(Bonjour, + RemoveBadCharacters(Request.Form(UserName))); Response.Write(<BR>C'est pourquoi vous avez reçu une erreur :); fonction RemoveBadCharacters(strTemp) { strTemp = strTemp.replace(/[^/s/w]/g,); retourner strTemp ; } %> |