Les bases de la sécurité des applications Web

Je suis assez doué pour créer des applications web et je sais comment transférer des données vers et depuis un client/serveur, etc. Mais j’ai besoin d’aide pour apprendre à rendre les échanges de données plus sécurisés. C’est la raison pour laquelle je suis un peu effrayé à l’idée de publier les applications web que je crée. Je voulais savoir quels sont les astuces pour comprendre et à apprendre comment sécuriser les transferts de données avec votre application web ? sécuriser les transferts de données avec votre application web ? Des choses comme une meilleure authentification par exemple et la création de meilleurs logins.

Vous pouvez poster n’importe quelle suggestion, mais juste pour votre information, je code principalement mes applications web avec Javascript et PHP. De plus, je transfère mes données en utilisant JSON ou XML.

  • Ne jamais faire directement confiance aux données de l’utilisateur
  • Encryptez les mots de passe Hash et salt plutôt que de les stocker en texte clair.
  • N’essayez pas de créer votre propre système d’authentification : il est si facile de se tromper par des moyens subtils et incontrôlables, et vous n’avez pas le choix et vous ne vous en rendriez compte qu’après avoir été piraté.
  • Se renseigner sur l’injection SQL et comment la prévenir
  • Utilisez le protocole SSL/HTTPS pour vous connecter et pour toutes les pages où des données sensibles sont saisies (comme les informations relatives aux cartes de crédit).
  • Les services ne doivent pas avoir d’accès au système ou à l’administrateur
  • Suivre les meilleures pratiques du SQL
  • Inclure des fonctions d’audit, de journalisation et de reporting
  • Analyser le code source
  • Comment résister au détournement de session
  • Éviter les scripts intersites (XSS)
  • Éviter les contrefaçons de requêtes intersites (XSRF)
  • Désactiver les messages d’erreur détaillés pour les utilisateurs finaux
  • Disposer d’un plan de réponse aux incidents de sécurité
  • Maintenez votre (vos) système(s) à jour avec les derniers correctifs.
  • Assurez-vous que les informations de connexion à votre base de données sont sécurisées.
  • Tenez-vous informé des dernières techniques d’attaque et des vulnérabilités affectant votre plate-forme.

Ne vous fiez pas aux données saisies par l’utilisateur.

La validation des types de données et du formatage attendus est essentielle pour éviter les injections SQL et les attaques de type Cross-Site Scripting (XSS).

Je vous recommande de suivre les conseils suivants pour sécuriser vos applications web:

  • Échapper le contenu fourni par l’utilisateur pour éviter les attaques XSS.
  • Utiliser des procédures SQL ou stockées paramétrées pour éviter les attaques par injection de code SQL.
  • Exécuter le serveur web en tant que compte non privilégié pour minimiser les attaques sur le système d’exploitation.
  • Configurer les répertoires du serveur web avec un compte non privilégié, là encore, pour minimiser les attaques contre le système d’exploitation.
  • Configurer des comptes non privilégiés sur le serveur SQL et les utiliser pour l’application afin de minimiser les attaques sur la base de données.

Voici quelques exemples de ce que je préfère :

  • Filtrer les données saisies, échapper les données de sortie pour se prémunir contre les attaques par XSS ou par injection de code SQL.
  • Utiliser des prepared statements pour les requêtes de base de données (attaques par injection SQL)
  • Désactiver les comptes d’utilisateurs inutilisés sur votre serveur pour éviter les attaques par force brute des mots de passe
  • Supprimer les informations relatives à la version d’Apache de l’en-tête HTTP (ServerSignature=Off, ServerTokens=ProductOnly)
  • Exécutez votre serveur web dans une prison chroot pour limiter les dégâts en cas de contamination.