Si vous êtes propriétaire ou développeur d’un site Web, vous êtes probablement au courant de la menace des pirates informatiques. Il existe de nombreuses manières de protéger votre site Web ASP ou PHP contre les attaques de pirates, allant de mesures de sécurité faibles à des mesures de sécurité strictes. Vous découvrirez ici les moyens les plus courants et les plus efficaces de ralentir les pirates informatiques qui utilisent des méthodes telles que les attaques par injection SQL et XSS (script intersite) via la chaîne de requête URL et les entrées de formulaire. Deux types généraux de techniques de blocage des pirates sont abordés, notamment les pages d'erreur personnalisées et la validation des entrées. Ces méthodes sont assez simples pour que vous puissiez le faire vous-même avec des connaissances de base en codage. Votre meilleure stratégie serait de combiner autant de petits obstacles que possible.

Pas

  1. 1 Les sites Web pilotés par une base de données SQL sont en danger.
  2. 2 Toute page Web transmettant des paramètres à une base de données peut être vulnérable aux attaques. Cela inclut les paniers d'achat en ligne ou tout autre site Web ayant un formulaire de connexion, de recherche, etc. Tout site Web piloté par une base de données SQL est exposé aux pirates informatiques susceptibles de pénétrer dans la base de données. Habituellement, ces portes arrière sont présentes dans les chaînes de requête d'URL et les entrées de formulaire, telles que les formulaires de connexion, les formulaires de recherche ou d'autres zones de texte de saisie utilisateur pouvant communiquer avec une base de données.
  3. 3 Obtenez un aperçu de base du piratage.
    • En règle générale, un pirate peut saisir des caractères fictifs dans la chaîne de requête URL ou dans une zone de texte. La fausse entrée est alors interprétée en tant que SQL plutôt que des données utilisateur ordinaires et est exécutée par la base de données non méfiante. En conséquence, le site Web peut casser et afficher une erreur, permettant au pirate de glaner des informations privées sur la base de données. Pire encore, les scripts dangereux du pirate peuvent être exécutés sur la base de données, entraînant des failles de sécurité et / ou des dommages permanents.
  4. 4 Comprendre comment les pirates informatiques le font.
    • Le premier objectif d’un pirate informatique est d’essayer à plusieurs reprises de casser un site Web, ce qui entraîne l’affichage de diverses erreurs précieuses qui donnent des détails sur les bases de données privées. De cette façon, il peut avoir un aperçu de la structure de la base de données et créer une carte ou une empreinte de toutes ses tables et colonnes. Le deuxième objectif du pirate informatique est de manipuler la base de données en exécutant des scripts de manière malveillante. Avec le contrôle de la base de données, le pirate peut éventuellement voler des numéros de carte de crédit, effacer des données ou les infecter avec des virus, entre autres choses désagréables. Essentiellement, l'URL querystring et textbox sont les deux portes arrière d'une base de données. Obtenir des erreurs et manipuler les portes arrière sont les deux méthodes utilisées par les pirates pour détruire une base de données.
  5. 5 Comprenez comment pirater votre propre site Web.
    • Voyons comment un pirate informatique peut s’introduire dans un site Web. En utilisant la première technique décrite, il peut pirater la chaîne de requête de l’URL et provoquer une erreur. Vous pouvez faire un test simple pour pirater votre propre site Web via la chaîne de requête URL. Tout ce que vous avez à faire est de taper quelque chose d'autre directement dans la barre d'adresse à la fin de votre chaîne de requête.
  6. 6Tapez votre URL comme dans l'exemple suivant et appuyez sur Entrée: http://www.mywebsite.com/bookreports.asp?reportID=21
  7. 7Maintenant, ajoutez simplement un seul devis à la fin de la chaîne de requête et appuyez sur Entrée: http://www.mywebsite.com/bookreports.asp?reportID=21 '
  8. 8Générer une erreur
  9. 9Comme prévu, vous avez peut-être réussi à casser votre site Web et à recevoir une erreur comme suit.
  10. 10Type d'erreur:
  11. 11Fournisseur Microsoft OLE DB pour pilotes ODBC (0x80040E14)
  12. 12[Microsoft] [Pilote ODBC SQL Server] [SQL Server] guillemets non fermés avant la chaîne de caractères 'AND users.userID = reports.reportsID'.
  13. 13/bookreports.asp, ligne 20
  14. 14 Le guillemet simple provoque une erreur de guillemet non fermé et maintenant les noms de table et les noms de colonne à secret unique de votre base de données sont publiquement visibles. Après avoir généré une série d'erreurs précieuses, un pirate informatique peut rassembler des détails de bases de données privées qui l'aideront à percer et à détruire la base de données.
  15. 15Masquer les erreurs du site.
  16. 16 La solution la plus efficace pour éviter que les informations confidentielles de votre base de données ne tombent entre les mains d’un pirate informatique consiste à configurer une page d’erreur personnalisée pour votre site Web. De cette façon, un pirate informatique ne verra jamais de message d'erreur détaillé. Si vous ne faites rien d'autre, c'est la première chose que chaque site Web doit avoir. Sinon, vous donnez au pirate une invitation ouverte à votre base de données et lui proposez pratiquement toutes les informations dont il a besoin pour lancer une attaque.
  17. 17Configurer les pages d'erreur personnalisées.
  18. 18 Certains services d'hébergement utilisent automatiquement des pages d'erreur personnalisées pour protéger votre sécurité. Pour configurer votre propre page d'erreur personnalisée, vous devrez consulter votre hébergeur pour obtenir des instructions. Généralement, vous allez créer une nouvelle page HTML à votre goût et qui dit quelque chose de court et de bon, comme "Désolé, la page que vous avez demandée n'est pas disponible". Ensuite, enregistrez-le sous le nom error404.htm et téléchargez-le sur votre serveur. En suivant les instructions de votre hôte, vous allez modifier les paramètres du site Web pour pointer vers la nouvelle page d'erreur. Cela empêchera de nombreux pirates de droit dans leurs voies.
  19. 19Manipulez la chaîne de requête URL.
  20. 20 Outre la pêche aux erreurs, un pirate informatique peut entrer un code encore plus dangereux qu'une simple citation simple dans la chaîne de requête URL. Dans un effort pour exécuter des scripts malveillants sur une base de données, divers codes créatifs sont utilisés, tels que% 20HAVING% 201 = 1 ou peut-être% 20; arrêt sans attente - ou bien pire. Une fois que le pirate est capable d'exécuter des scripts, la base de données vulnérable est comme un mastic entre leurs mains. Le pirate n'a jamais à connaître la connexion à la base de données ou la chaîne de connexion car il utilise la chaîne de requête URL qui a déjà une connexion ouverte.
  21. 21http: //www.mywebsite.com/bookreports.asp? ReportID = 21 '; drop table myTablename--
  22. 22Votre table est définitivement supprimée.
  23. 23Manipuler l'entrée du formulaire.
  24. 24 L'autre point d'entrée le plus courant en dehors de la chaîne de requête URL est l'entrée de formulaire. Un pirate peut manipuler n'importe quelle zone de texte dans un formulaire HTML. Un champ de recherche ou un formulaire de connexion avec un nom d'utilisateur et un mot de passe sont tous des cibles principales. Le pirate peut entrer des caractères fictifs dans la zone de texte et soumettre le formulaire. L'entrée est ensuite interprétée en tant que SQL plutôt que des données utilisateur ordinaires et exécutée par la base de données. Encore une fois, cette attaque provoquera soit une erreur afin de pouvoir glaner des informations privées sur votre base de données, soit d'insérer des scripts dangereux et de détruire la base de données.
  25. 25Fred '; drop table myTablename--
  26. 26Votre table est définitivement supprimée.
  27. 27Bloquer l'entrée contenant du code malveillant.
  28. 28 À ce jour, vous avez probablement une bonne idée des dégâts qu’un pirate peut causer et vous êtes prêt à faire tout ce qui est nécessaire pour les arrêter. Le premier moyen d'empêcher un pirate de manipuler la chaîne de requête URL et les zones de texte consiste à bloquer leur saisie. Mais, comment déterminez-vous qui ils sont, ce qu'ils vont saisir et si oui ou non? Malheureusement, vous ne pouvez pas savoir. Donc, vous devez supposer que toute saisie de l'utilisateur pourrait être potentiellement dangereuse. Un dicton courant dans le monde de la programmation est que ALL INPUT EST EVIL. Ainsi, il doit être traité avec prudence. Tout le monde doit être vérifié à chaque fois pour s'assurer que le code dangereux ne pénètre pas. Ceci est réalisé en vérifiant toutes les entrées soumises via une chaîne de requête ou un formulaire, puis en rejetant ou en supprimant les caractères dangereux avant qu'ils atteignent la base de données. Si cela semble poser beaucoup de problèmes, vous avez raison. Mais c'est le prix que nous payons pour protéger nos sites Web et nos bases de données contre la colère des pirates informatiques. Il est de votre responsabilité en tant que webmaster de vous assurer que seules des entrées propres et sûres sont autorisées à entrer dans votre base de données.
  29. 29Validation des entrées
  30. 30 Pour vérifier si l'entrée entrée dans la chaîne de requête URL ou la zone de texte est sûre, nous pouvons utiliser des règles de validation des entrées. En d'autres termes, l'utilisation du code ASP sur une page Web peut valider les données collectées à partir de la chaîne de requête ou du formulaire pour vous assurer qu'il ne contient que des caractères sécurisés. Une fois que l'entrée est considérée comme sûre, elle peut être stockée dans une nouvelle variable, insérée dans la chaîne SQL et envoyée à la base de données. Pour plus de détails sur la validation,
  31. 31Le cycle de lavage et de rinçage.
  32. 32 La validation des entrées doit être un processus en deux parties, comme un cycle de lavage et de rinçage. Nous voulons nettoyer toutes les entrées en vérifiant d'abord les caractères sûrs et en vérifiant les chaînes incorrectes. Voir les ressources à la fin de cet article pour une discussion plus approfondie sur cette méthode.
  33. 33Filtrer les caractères
  34. 34Une autre méthode qui peut être utilisée conjointement avec les deux fonctions ci-dessus, mais qui est considérée comme très faible lorsqu'elle est utilisée seule, consiste à assainir l'entrée en filtrant ou en s'échappant.
  35. 35 Une menace bien connue est le guillemet simple ou l'apostrophe car il rompt l'instruction SQL. Voici un exemple ASP qui rend le guillemet simple inoffensif, en le remplaçant par deux guillemets simples.
  36. 36'doublez les guillemets simples
  37. 37new Safe String = replace (searchInput, "'", "")
  38. 38 Parmi les autres variantes de la fonction de remplacement, citons la suppression de la balise de script et son remplacement par un espace. Ou bien, filtrez les caractères tels que le signe dollar $ entre guillemets "point-virgule et apostrophe" les angles gauche et droit <> les parenthèses gauche et droite () le signe # et l'esperluette &. Ou convertissez ces caractères en leurs entités HTML.
  39. 39N'oubliez pas d'utiliser une solution adaptée à votre site Web ou de consulter un professionnel.
  40. 40 Enfin, il existe quelques autres mesures de sécurité que vous pouvez rechercher et explorer vous-même. Rappelez-vous qu'un pirate peut facilement enregistrer une copie de votre page Web, puis modifier le code HTML et le javascript, puis télécharger à nouveau la page. Par conséquent, il est préférable de ne jamais utiliser le javascript seul pour la validation des entrées car il peut être facilement supprimé, et plutôt de dupliquer toute validation de script java avec la validation ASP. De plus, les champs de saisie cachés constituent une menace de la même manière, car ils peuvent facilement être modifiés pour inclure un code bidon. Les autres astuces incluent: Ne jamais divulguer d’indices sur votre base de données, y compris rendre vos noms de champs d’entrée identiques aux noms de champs de la base de données. Toujours définir une longueur maximale pour les entrées et tronquer l'excédent.
  41. 41 Si vous souhaitez poursuivre des techniques de sécurité plus avancées, consultez les ressources à la fin de cet article. Les sujets abordés incluent les stratégies de mot de passe, le dépassement de tampon, les noms de colonne et de table de création, les alias de nom de table, les types de données de configuration et de vérification, les procédures stockées avec paramètres et les fichiers journaux.