Site icon Astra Security Blog

Un guide pas à pas sur la sécurité PHP

En 2020, plus de 79% du langage côté serveur était PHP. La plupart d’entre eux sont des systèmes de gestion de contenu, notamment des sites de commerce électronique et WordPress. Comme il s’agit d’un langage de programmation très utilisé pour les sites Web, y compris Facebook et Wikipedia, il est constamment menacé d’attaques et d’exploitations. La sécurité PHP est devenue très importante pour protéger les sites Web et les plates-formes contre les cyber-attaques et les piratages.

En raison de l’avancement des cyberattaques et techniques de piratage, les risques d’attaques sont devenus plus grands. Pour ajouter à cela, PHP est également fragile. Un petit bogue ou une erreur de codage peut rendre votre Site Web PHP vulnérable et sujettes aux attaques.

Après avoir déployé tant d’efforts pour construire un Site Web PHP piraté est la dernière chose dans l’esprit de quiconque. Mais pour vraiment rendre votre pile technologique PHP impénétrable et inattaquable, vous devez assurer une sécurité à toute épreuve.

Pour vous aider, nous avons rassemblé ce guide de sécurité PHP complet. Ce guide vous aidera à identifier Menaces de sécurité PHP et des moyens de renforcer la sécurité de votre site Web. Il dispose également de mesures de sécurité efficaces que vous pouvez suivre pour garder sa sécurité intacte.

Tout cela dans une minute, mais d’abord, regardons ces Statistiques de piratage PHP.

Quelques statistiques sur la sécurité PHP

Menaces et correctifs de sécurité PHP

Au fil des ans, les pirates ont inventé des moyens intelligents de tromper et de contourner chaque petite fonctionnalité d’un site Web PHP. Certaines des attaques les plus populaires contre les pirates sont:

1. Injection SQL

Injection SQL est une forme d’attaque très courante qui représente environ les deux tiers de toutes les attaques Web. Avec un code incorrect ou inefficace conduisant à une attaque par injection SQL, une violation de données peut se produire, entraînant la fuite de détails importants tels que les détails de la carte de crédit et les informations d’identification, pour n’en nommer que quelques-uns. Cela peut également compromettre un serveur Web entier. Voici un exemple d’extrait de code non sécurisé:

Un attaquant peut envoyer une requête qui sera exécutée avec la requête, comme ci-dessous:

La requête ci-dessus modifiera le code comme suit:

En utilisant des scripts similaires au code ci-dessus, les attaquants peuvent accéder à toutes les tables de données et informations sensibles.

La solution à cela est d’utiliser des requêtes SQL paramétrées et des objets de données PHP (PDO). L’utilisation de requêtes paramétrées permettra à la base de données de différencier les données des parties de requête. Ainsi, il peut alors traiter les deux parties séparément. PDO est inclus dans PHP version 5.1 et ultérieure, et vous pouvez l’utiliser pour exécuter des extraits préparés dans votre code.

Pour protéger davantage votre site Web, vous pouvez procéder comme suit:

2. Traversée du répertoire

Dans cette attaque, on peut afficher ou exécuter des fichiers et des dossiers cruciaux qui devraient être inaccessibles à tout le monde sauf aux administrateurs. Ces fichiers peuvent résider en dehors des dossiers racine et avec des autorisations de fichier incorrectes ou une erreur de codage, ces fichiers peuvent être vulnérables à un accès non autorisé. L’exemple de code ci-dessous permettra les requêtes qui peuvent accéder aux fichiers:

Si un attaquant entre “/ etc / passwd” comme argument, il retournera ce fichier car il est accessible à tous. Pour éviter cela, vous devez appliquer les autorisations appropriées en fonction du statut de l’utilisateur.

3. Scripts intersites (attaques XSS)

XSSles vulnérabilités sont très courantes et cela rend cette attaque largement utilisée. Dans cette attaque, des scripts côté client sont insérés dans la sortie d’une page Web, puis ces scripts sont exécutés sur le système de l’utilisateur. Les attaquants utilisent cette attaque pour voler des informations, des informations d’identification ou des cookies, pour n’en nommer que quelques-uns. Les attaques XSS sont également courantes sur les sites Web qui affichent des données externes.

L’extrait de code vulnérable suivant peut être exploité pour lancer une attaque XSS:

Lorsque l’attaquant passe des codes tels que <script> alert («XSS»); </script> à cette page Web, il sera exécuté et affichera «XSS». Cela montre comment des codes malveillants externes peuvent être injectés et exécutés pour causer des dommages.

Vous pouvez empêcher de telles attaques en suivant les étapes ci-dessous:

4. Falsification de demandes intersites

Attaques de falsification de requêtes intersites se font du côté de l’utilisateur et exploitent la confiance que les pages Web ont sur les utilisateurs. Les utilisateurs disposant de privilèges plus élevés font face aux menaces les plus élevées. Cette attaque est moins populaire que d’autres et est donc plus dangereuse. La protection de votre site Web contre de telles attaques est également plus compliquée que celles mentionnées ci-dessus. Lorsque les utilisateurs se connectent à un site Web, ils reçoivent certains privilèges tels que l’accès à des pages non disponibles pour d’autres. En utilisant ces privilèges, les attaquants peuvent concevoir des requêtes HTTP qui sont ensuite exécutées par la page Web. Les attaquants peuvent utiliser cette technique pour accéder à la base de données ou extraire des informations importantes.

Les étapes de sécurité PHP ci-dessous vous aideront à prévenir de telles attaques:

5. Stockage des mots de passe

Avec l’augmentation des cas de vol d’informations d’identification et de vidage de données sur le Dark Web, le stockage sécurisé d’informations d’identification telles que les mots de passe est devenu beaucoup plus important. Les attaquants peuvent exploiter des vulnérabilités telles que l’injection SQL ou les attaques XSS et accéder aux mots de passe stockés sur le site Web. En cas de violation de la sécurité, il est important de s’assurer que les attaquants sont incapables de décoder les mots de passe et de causer des dommages supplémentaires. Il existe deux façons importantes de stocker des mots de passe en toute sécurité, en utilisant un algorithme de hachage et du sel.

L’algorithme de hachage le plus courant est MD5 et c’est le plus rapide. Cependant, il est facile et rapide de craquer. Vous pouvez utiliser la fonction password_hash () au lieu de MD5, car elle est plus sécurisée. Cette fonction génère un hachage de soixante caractères basé sur BCRYPT (algorithme CRYPT_BLOWFISH). Il accepte trois paramètres: le mot de passe, l’algorithme de hachage (utilise par défaut BCRYPT) et une valeur facultative telle que le coût. Vous pouvez vérifier le mot de passe haché en utilisant password_verify ().

Salt est une chaîne aléatoire qui est ajoutée au mot de passe avant de le hacher. Un sel long et aléatoire rendra effectivement les méthodes de craquage inefficaces. Quelques autres conseils de sécurité PHP pour garantir que les mots de passe sont stockés en toute sécurité:

Guide connexe – Sels PHP et hachage de mot de passe

6. Détournement de session

Détournement de session Les attaques sont la forme la plus courante d’attaques de session. Cette attaque comprend l’accès à la session d’un utilisateur sans méfiance, puis le lancement d’autres attaques. Une fois le piratage réussi, l’attaquant peut effectuer toutes les tâches pour lesquelles l’utilisateur d’origine avait l’autorisation. Dans le cas où la session de l’utilisateur devait se connecter à ses comptes bancaires, les attaquants peuvent effectuer des virements ou reprendre entièrement le compte. Cette attaque peut également fournir un accès à des réseaux à l’échelle de l’entreprise, au cas où la session appartient à un employeur d’une organisation.

Cette attaque peut être effectuée en ayant simplement l’identifiant de session. Pour éviter les attaques de piratage de session, les sites Web doivent vérifier quelques détails dans la requête HTTP et les analyser pour identifier une session authentique. Les attaquants trompent le site Web en transmettant de telles informations qui sont ensuite interprétées comme authentiques et permettent à la session de se poursuivre. Un moyen efficace d’arrêter de telles attaques est de rechercher de tels champs qui seront difficiles à générer pour l’attaquant. Ces champs peuvent ensuite être utilisés pour vérifier l’authenticité de la session. Des champs tels que user-agent sont difficiles à répliquer par un attaquant. En outre, vérifier les détails de l’emplacement et les informations du navigateur et les faire correspondre avec les données historiques peut fournir des informations sur la session en cours.

Afin de ne pas affecter l’expérience utilisateur, si, dans le doute, les sites Web peuvent demander une entrée de mot de passe pour s’authentifier. Les utilisateurs apprécieront la précaution supplémentaire et le système ne bloquera pas un utilisateur authentique.

7. Fixation de session

Lors de la fixation de session, l’attaquant envoie à l’utilisateur un identifiant de session valide, puis l’utilise pour accéder au site Web. L’attaquant crée une session puis attend qu’un utilisateur utilise l’ID de session de l’attaquant pour se connecter au site Web. Ensuite, le site Web considérera la session comme authentique et permettra à l’attaquant d’utiliser cette session sans aucune interruption.

Si un site Web extrait des identifiants de session à partir d’URL ou de formulaires, il est facile pour les attaquants d’utiliser cette méthode d’attaque. Dans ce cas, l’utilisateur n’a qu’à cliquer sur le lien, et le site Web ajoutera alors l’ID de session de l’attaquant à l’utilisateur. Cela peut également être fait avec les cookies en le définissant sur l’ID de session de l’attaquant.Il existe deux façons principales d’arrêter de telles attaques:

Données de session exposées

Si vous utilisez un serveur partagé, vos sessions peuvent être stockées dans un magasin de sessions partagé. Si tel est le cas avec votre serveur, les sessions de votre site Web sont vulnérables à un accès non autorisé. En cela, avec le code ci-dessous, les attaquants peuvent facilement accéder à la session stockée dans le dossier «/ tmp» par défaut:

Il s’agit d’une simple requête PHP qui peut utiliser les privilèges du serveur pour accéder et lire les fichiers. Pour éviter cela, vous pouvez utiliser les directives safe_mode mais comme cela ne fonctionne que pour PHP, les attaquants peuvent utiliser d’autres langages pour ce faire. Une meilleure solution consiste à éviter d’utiliser un magasin de sessions partagé. Stockez les données dans une base de données dotée d’informations d’identification d’accès uniques liées à votre compte. Pour ce faire, vous pouvez utiliser la fonction session_set_save_handler () pour remplacer la gestion par défaut des sessions par PHP par vos propres fonctions.

Guide connexe – Clickjacking en PHP

Attaques XML

Pour cette attaque, les attaquants exploitent la fonction d’analyse des entrées XML. Si l’analyseur XML est faiblement configuré, il analysera une entrée XML en référence à des sources externes. Il existe deux vulnérabilités majeures qui peuvent être exploitées: XML External Entity et XPath Injection. Ces attaques forment une base pour d’autres attaques telles que les exploits d’inclusion de fichiers distants.XPath Injection est similaire à SQL Injection mais est applicable aux documents XML. Comme ce type d’attaque est rare, il y a comparativement moins de fonctions et de mécanismes intégrés pour s’en protéger. Vous pouvez utiliser un ensemble de caractères sur liste blanche pour vous assurer que les caractères indésirables ou spéciaux ne sont pas acceptés.

Conseils et astuces de sécurité PHP

La sécurité est un élément essentiel du développement et, tout comme les attaques ont évolué au fil du temps, la sécurité doit également évoluer pour suivre le rythme. La sécurité d’un site Web n’est pas seulement importante pour le propriétaire du site Web, mais également pour les utilisateurs qui risquent leurs informations en cas de cyber-attaques. Nous devons comprendre quelques points concernant la sécurité pour nous permettre de prendre les mesures appropriées:

Comme indiqué ci-dessus, la sécurité PHP est toujours menacée, mais elle peut être abordée si nous implémentons quelques protocoles de sécurité essentiels et suivons les directives. Voici quelques conseils de sécurité qui vous aideront à renforcer la sécurité PHP:

Validation des entrées

Pour la sécurité PHP, la validation des données côté client ne suffit pas. Il peut être facilement percé, par exemple, si un attaquant supprime un JavaScript du code source d’un site Web puis soumet un formulaire sans aucune vérification, il ne sera pas détecté s’il n’y a pas de validation côté serveur. Cela ouvre la voie à des attaques telles que les attaques SQL Injection, XSS ou CSRF. La validation côté utilisateur et côté serveur est essentielle pour la sécurité PHP.

Liste noire

Liste noire peuvent être contournés par les attaquants par des méthodes d’essai et d’erreur. Il ne protège pas toujours contre les entrées malveillantes, mais dans certains cas, il peut protéger contre les méthodes d’attaque connues ou courantes. Vous pouvez mettre sur liste noire les chaînes courantes utilisées par les attaquants ou les caractères spéciaux connus pour être dangereux.

Recherche

Dans la phase de développement, la recherche de bogues ou de menaces de sécurité est utile car nous rencontrons plusieurs méthodes et solutions. Cependant, copier-coller ces codes n’est pas une bonne idée. Votre site Web peut être différent de celui de la solution. En outre, ils peuvent être obsolètes et vous exposez tout votre serveur de site Web à des risques. Si vous copiez des codes à partir de plusieurs sources, il est possible que tous les extraits de code ne fonctionnent pas ensemble et les relier nécessitera un effort considérable. La recherche aide à répondre à de nombreuses questions, cependant, l’utiliser comme source de compréhension est une meilleure option que la copie de codes.

Mots de passe forts

Cela ne peut pas être assez souligné. Une grande partie des attaques est possible en raison d’informations d’identification faibles ou facilement cassables. UNE mot de passe fort peut être alphanumérique avec des caractères minuscules et majuscules. Une autre option consiste à utiliser des phrases car il faudra beaucoup de temps et de puissance de calcul pour déchiffrer de tels mots de passe. Assurez-vous également que tous les mots de passe par défaut sont modifiés, à la fois par les utilisateurs et les administrateurs. Aidez vos utilisateurs à utiliser un mot de passe plus fort en leur faisant prendre conscience de son importance et des directives qu’ils peuvent suivre.

Authentification multifacteur

L’authentification à plusieurs niveaux est devenue la nouvelle norme de sécurité. Dans ce cas, les attaquants ne pourront pas causer de dommages s’ils ont les informations d’identification car il faudra un champ supplémentaire tel que OTP (mots de passe à usage unique) pour se connecter. Dans l’authentification à 2 facteurs, les utilisateurs devront entrer un code supplémentaire après avoir utilisé leurs informations d’identification. Pour surmonter cela, les attaquants auront besoin des informations d’identification ainsi que du contrôle de l’appareil recevant OTP.

Guide connexe – Autorisations de fichiers PHP

Filtrage des données

Un filtrage approprié des données protégera votre site Web contre les extraits de code malveillants et les attaques par injection de code. Il existe plusieurs façons d’activer un filtrage efficace des données. Inclure la méthode signifie avoir un seul module dédié à la sécurité qui est placé au début de tous les scripts qui sont accessibles au public. Plusieurs points de contrôle et protocoles de sécurité peuvent être inclus. Pour filtrer les données, vous pouvez utiliser une approche de liste blanche et inclure plusieurs combinaisons de caractères et de chaînes.

Utiliser un pare-feu

Un pare-feu est une protection complète pour votre site Web. Il filtre toutes les données et demandes indésirables et malveillantes pour atteindre votre site Web. Un pare-feu puissant comme Astra offrira une protection complète contre les attaques telles que l’injection SQL, les attaques DDoS et les logiciels malveillants, pour n’en nommer que quelques-unes.

Chez Astra, nous disposons d’outils intelligents et efficaces et d’une expertise en sécurité pour vous offrir une protection complète contre toutes les cybermenaces. Le tableau de bord et les rapports vous tiendront au courant de tout ce qui se passe avec votre site Web.

Comment Astra Web Application Firewall protège votre site Web

Sécurité PHP Les conseils répertoriés dans ce guide vous aideront à protéger votre site Web et à garantir la sécurité des données de votre site Web. La sécurité est dynamique et en constante évolution, donc rester à jour avec tous les derniers développements vous aidera à protéger votre site Web deattaques avancées. L’utilisation d’un service de sécurité vous aidera dans ce domaine sans aucun problème. Laisser votre sécurité PHP à un expert comme Astra est probablement une bonne idée. La création d’un site Web nécessite beaucoup d’efforts et de travail, et sa protection est une tâche difficile mais importante. Avec une bonne compréhension et des informations précises, vous pouvez tenir les attaquants à distance.

Exit mobile version