Maison  >  Article  >  développement back-end  >  Attaques PHP courantes (explication détaillée de 6 types d'attaques)

Attaques PHP courantes (explication détaillée de 6 types d'attaques)

不言
不言original
2018-04-03 11:26:212310parcourir

Cet article présente les attaques PHP courantes (explications détaillées de 6 types d'attaques). Il est partagé ici avec tout le monde. Il peut également être une référence pour ceux qui ont besoin d'aide. Jetons un coup d'œil ensemble

<.>1. Injection SQL

L'injection SQL est une attaque malveillante dans laquelle les utilisateurs saisissent des instructions SQL dans les champs de formulaire pour affecter l'exécution normale de SQL. Il en existe également une injectée via la commande system() ou exec(), qui a le même mécanisme d'injection SQL, mais cible uniquement les commandes shell.


[python] afficher la copie brute


Attaques PHP courantes (explication détaillée de 6 types dattaques)Attaques PHP courantes (explication détaillée de 6 types dattaques)

  1. $username = $_POST['username'] ;

  2. $query = "select * from auth où nom d'utilisateur = '".$nom d'utilisateur."'";

  3. echo $query; >$db = nouveau mysqli(

    'localhost'
  4. ,

    'demo', 'demo ', 'demodemo' ); $result = $db->query($query); 🎜>

    if
  5. ($result && $result->num_rows) {

  6. echo "
    Connecté avec succès";

  7. } else {

  8. écho "
    Échec de la connexion"
    ;

  9. }

    Empêcher les options d'injection SQL :

* Utilisez mysql_real_escape_string() pour filtrer les données
* Vérifiez manuellement si chaque donnée est du bon type de données
* Utilisez des instructions préparées et lier des variables
*Utiliser des instructions préparées
*Données séparées et logique SQL
*Les instructions prétraitées seront automatiquement filtrées (par exemple, échappées )
*Utilisez ceci comme norme de codage pour aider les nouveaux arrivants dans l'équipe à éviter les problèmes ci-dessus

[python ]
voir la copie brute


Attaques PHP courantes (explication détaillée de 6 types dattaques)Attaques PHP courantes (explication détaillée de 6 types dattaques)

    $query =
  1. 'sélectionner le nom, le district de la ville où le code du pays=?' ; requête) ){

    $countrycode =
  2. 'hk'
  3. $stmt ->bind_param(
  4. "s"
  5. , $countrycode);

    $stmt->execute( );
  6. $stmt->bind_result($name, $district);

  7. pendant ( $stmt ($stmt->fetch() ){

  8. echo $name.', '.$district; 🎜>

  9. }    $stmt ->fermer();  

  10. }

  11. 2. Attaque XSS

    XSS (Cross-Site Scripting) est une attaque dans laquelle l'utilisateur saisit certaines données dans votre site Web, qui incluent un script côté client (généralement JavaScript) qui affiche les données si vous ne les filtrez pas. Une autre page Web, ce script sera exécuté lors de la réception du contenu texte soumis par l'utilisateur ?
  12. >*Endommager des pages Web ou des formulaires
*Voler des cookies.

*AJAX(XMLHttpRequest)
Prévenir les attaques XSS

Afin de prévenir les attaques XSS, utilisez la fonction htmlentities() de PHP pour filtrer puis afficher dans le navigateur >L'utilisation de base de htmlentities() est simple, mais il existe de nombreux contrôles avancés, veuillez vous référer à l'aide-mémoire XSS


3. Fixation de session

Session sûre, en supposant qu'un PHPSESSID est difficile à deviner. . Cependant, PHP peut accepter un identifiant de session via un cookie ou une URL. Par conséquent, l'usurpation d'un identifiant de session spécifique (ou autre) ou une attaque de phishing peut être utilisée.>

4. 🎜>
C'est la même idée que la fixation de session, cependant, cela implique de voler l'ID de session à l'attaquant si l'ID de session est stocké dans un cookie. Peut être volé via XSS et JavaScript. Peut également être obtenu par reniflage ou. à partir d'un serveur proxy si l'ID de session est inclus dans l'URL
Empêcher la capture et le piratage de session :
*Mettre à jour l'ID
*Si vous utilisez des sessions

<.>5. Contrefaçon de demande intersite (CSRF)


L'attaque CSRF fait référence à une demande faite par une page qui ressemble à Être un utilisateur de confiance du site, mais pas intentionnellement. Il existe de nombreuses variantes, comme l'exemple suivant :


[python]

afficher la copie simple





  1. Attaques PHP courantes (explication détaillée de 6 types d'attaques)'http://example.com/single_click_to_buy.php?user_id=123&item=12345'>


Empêcher la falsification de requêtes intersites
En général, assurez-vous que l'utilisateur est provenant de votre formulaire et correspondent à chaque formulaire que vous envoyez. Il y a deux points dont vous devez vous souvenir :
Appliquer des mesures de sécurité appropriées pour les sessions utilisateur, telles que la mise à jour des identifiants pour chaque session et l'utilisation de SSL pour les utilisateurs.
Générez un autre jeton unique et intégrez-le dans le formulaire, enregistrez-le dans la session (une variable de session), vérifiez-le lors de la soumission.


6. Injection de code

L'injection de code est provoquée par l'exploitation de vulnérabilités informatiques en traitant des données invalides. Le problème survient lorsque vous exécutez accidentellement du code arbitraire, généralement via l'inclusion de fichiers. Un code mal écrit peut permettre à un fichier distant d'être inclus et exécuté. Comme de nombreuses fonctions PHP, telles que require peuvent contenir une URL ou un nom de fichier, par exemple :


[python] afficher la copie simple


Attaques PHP courantes (explication détaillée de 6 types dattaques)Attaques PHP courantes (explication détaillée de 6 types dattaques)

  1. Choisissez le thème :

  2. vert> Vert

  3. 🎜>

  4. if($theme) {

  5. require( $theme.'.txt');

  6. } 🎜>

    ?> ;
  7. Dans l'exemple ci-dessus, en passant un nom de fichier ou un nom de fichier saisi par la partie utilisateur pour inclure les fichiers commençant par "http://".


Empêcher l'injection de code

* Filtrer les entrées de l'utilisateur
* Définir dans php.ini pour désactiver allow_url_fopen et allow_url_include. Cela désactivera require/include/fopen pour les fichiers distants.
Autres principes généraux

1. Ne comptez pas sur la configuration du serveur pour protéger votre application, en particulier lorsque votre serveur Web/PHP est géré par votre FAI, ou lorsque votre site Web peut être migré/déployé vers d'autres endroits. , puis migrer/déployer d'autres endroits vers d'autres endroits dans le futur. Veuillez intégrer des contrôles/logiques axés sur la sécurité dans le code de votre site Web (HTML, JavaScript, PHP, etc.).

2. Concevez des scripts de sécurité côté serveur :


—par exemple, utilisez l'exécution sur une seule ligne - authentification en un seul point et nettoyage des données

—par exemple, intégrez-les à tous pages sensibles à la sécurité Une fonction/fichier PHP qui gère toutes les vérifications de connexion/logique de sécurité

3. Assurez-vous que votre code est mis à jour et corrigé avec les derniers correctifs.

Recommandations associées :

Code de défense du site Web d'attaque PHP et tutoriel de détraduction du code d'attaque_PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn