Maison  >  Article  >  Opération et maintenance  >  Comment configurer un système CentOS pour protéger les applications Web contre les attaques par injection SQL

Comment configurer un système CentOS pour protéger les applications Web contre les attaques par injection SQL

WBOY
WBOYoriginal
2023-07-05 12:58:371515parcourir

Comment configurer le système CentOS pour protéger les applications Web contre les attaques par injection SQL

Introduction :
Avec le développement d'Internet, l'utilisation d'applications Web est de plus en plus répandue, mais elle entraîne également des problèmes de sécurité des applications Web. Parmi elles, l’attaque par injection SQL est la méthode d’attaque la plus courante. Afin de protéger nos applications Web, nous devons effectuer une série de configurations et d'optimisations sur le système CentOS. Cet article décrira comment configurer un système CentOS pour protéger les applications Web contre les attaques par injection SQL.

  1. Installer et configurer le serveur Web
    Tout d'abord, nous devons installer et configurer un serveur Web fiable pour héberger notre application Web. Ici, nous choisissons le serveur Apache couramment utilisé comme exemple. Voici un exemple de commande pour installer le serveur Apache sur CentOS :

    sudo yum install httpd

    Après avoir terminé l'installation, nous devons effectuer certaines configurations de sécurité sur Apache. Tout d’abord, nous désactiverons la navigation dans les répertoires sur le serveur pour empêcher les attaquants d’obtenir des informations sensibles sur le serveur. Voici un exemple de désactivation de la navigation dans le répertoire en modifiant le fichier httpd.conf :

    sudo vi /etc/httpd/conf/httpd.conf

    Recherchez cette ligne dans le fichier :

    Options Indexes FollowSymLinks

    Remplacez-la par :

    Options -Indexes FollowSymLinks

    Enregistrez et quittez le fichier. Ensuite, nous redémarrerons le serveur Apache pour que cela prenne effet :

    sudo systemctl restart httpd
  2. Configuration du serveur de base de données
    Les applications Web ont souvent besoin d'utiliser une base de données pour stocker et gérer les données. Ici, nous choisissons MySQL comme serveur de base de données pour stocker nos données. Voici un exemple de commande pour installer le serveur MySQL sur CentOS :

    sudo yum install mysql-server

    Après avoir terminé l'installation, nous devons effectuer quelques configurations de sécurité pour MySQL. Tout d’abord, nous allons désactiver l’accès à distance et autoriser uniquement l’accès local à la base de données. Voici un exemple de désactivation de l'accès à distance en modifiant le fichier my.cnf :

    sudo vi /etc/my.cnf

    Retrouvez la ligne suivante :

    bind-address = 127.0.0.1

    Ajoutez le symbole de commentaire "#" avant la ligne pour en faire une ligne de commentaire :

    #bind-address = 127.0.0.1

    Enregistrez et quittez le fichier. Nous redémarrerons ensuite le serveur MySQL pour que la configuration prenne effet :

    sudo systemctl restart mysqld
  3. Écriture du code d'une application Web sécurisée
    Lors de l'écriture du code d'une application Web, nous devons prendre certaines mesures de sécurité pour empêcher les attaques par injection SQL. Voici quelques exemples de codes pour des mesures défensives :
  4. Utilisez des instructions de requête paramétrées : lors de l'exécution de requêtes SQL, nous devons utiliser des instructions de requête paramétrées au lieu de concaténer des chaînes. Cela empêche les attaquants d'injecter du code SQL supplémentaire à l'aide d'entrées malveillantes. Voici un exemple d'utilisation d'une requête paramétrée :

    import pymysql
    
    conn = pymysql.connect(host='localhost', user='username', password='password', database='dbname')
    cursor = conn.cursor()
    
    sql = "SELECT * FROM users WHERE username = %s"
    username = 'admin'
    cursor.execute(sql, (username,))
    
    result = cursor.fetchall()
    
    for row in result:
     print(row)
    
    conn.close()
  • Filtrer et valider l'entrée : lors de la réception d'une entrée utilisateur, nous devons filtrer et valider l'entrée pour garantir que l'entrée est conforme au format et au type attendus. Voici un exemple de filtrage et de validation des entrées :

    username = input("请输入用户名:")
    
    # 过滤非法字符
    for char in username:
      if char not in ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_'):
          username = username.replace(char, '')
    
    # 验证用户名长度
    if len(username) > 20:
      username = username[:20]
    
    print("处理后的用户名为:", username)
  • Utilisez des bibliothèques de bases de données sécurisées : lorsque vous utilisez des bibliothèques de bases de données, nous devons choisir des bibliothèques fiables comme pymysql ou psycopg2 et éviter d'utiliser des bibliothèques connues pour présenter des vulnérabilités de sécurité. Ces bibliothèques fournissent généralement des mesures de défense intégrées, telles que l'échappement automatique des caractères spéciaux, etc.

Conclusion :
Avec la configuration et l'optimisation du code ci-dessus, nous pouvons protéger efficacement notre application Web contre les attaques par injection SQL. Bien entendu, cela ne constitue qu’une partie des mesures de protection. Nous devons également prêter attention à d’autres problèmes de sécurité et mettre à jour et entretenir le système en temps opportun. En combinant diverses mesures de sécurité, nous pouvons protéger plus efficacement la sécurité de nos applications et données Web.

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