Directives pour la protection générale

Toute personne utilisant MySQL (ou tout autre serveur SQL) sur l'ordinateur connecté à l'Internet devrait lire ces conseils pour éviter les problèmes de sécurité les plus courantes.

Cependant, il faut souligner l'importance de la protection complète du serveur (pas seulement le serveur MySQL) contre tous les types d'attaques. Dans cet article, malheureusement, il est impossible de couvrir tous les aspects des problèmes de sécurité, mais les problèmes les plus importants pris adéquatement.

MySQL utilise une protection basée sur les listes de contrôle d'accès (ACL) pour toutes les connexions, les requêtes et autres opérations que l'utilisateur peut tenter de réaliser. Il y a aussi un certain soutien pour les connexions SSL entre les clients et le serveur MySQL. Bon nombre des concepts abordés dans cet article ne sont pas spécifiques à MySQL et peut être appliquée à toutes les applications.

Lorsque vous utilisez MySQL, essayez de suivre ces lignes directrices:

Personne ne se voit refuser l' accès (sauf MySQL Administrator) à la table USER dans la base de données MySQL. Mot de passe crypté - réel mot de passe dans MySQL. Si vous connaissez le mot de passe figurant dans le USER de table pour l'utilisateur, vous pouvez facilement vous connecter en tant que utilisateur, si vous avez accès à des ordinateurs répertoriés pour le compte.

Apprenez le système de privilèges d'accès MySQL. GRANT et REVOKE commandes sont utilisées pour contrôler l' accès à MySQL. Ne pas accorder plus de privilèges que nécessaire. Ne jamais accorder des privilèges à tous les ordinateurs du réseau. contrôle vérifie Equipes:

la racine 1. Essayez mysql. Si vous pouvez vous connecter au serveur sans nécessiter un mot de passe, alors vous avez des problèmes. Tout le monde peut se connecter à votre serveur MySQL en tant qu'utilisateur root MySQL avec tous les privilèges. Lisez attentivement l'équipe d'installation de MySQL, en accordant une attention à l'option Set Password.

2. Utilisez la commande SHOW GRANTS et la vérification, pour voir qui a accès à quoi. Retirez les privilèges supplémentaires, en utilisant la commande REVOKE.

Ne pas stocker les mots de passe en texte clair dans votre base de données. Lorsque votre ordinateur est compromise, l'intrus peut obtenir la liste complète

mots de passe et de les utiliser. Au lieu d'utiliser l'algorithme MD5 ou tout autre basée sur la fonction de hachage à sens unique.

Ne choisissez pas des mots de passe de dictionnaires. Il existe des programmes spéciaux pour les ramasser. Même les mots de passe comme "xfish98" sont très mauvais. Beaucoup mieux - "" duag98 ", qui contient le même mot« poisson »mais tapé une clé vers la gauche sur le clavier Une autre méthode consiste à utiliser un mot de passe comme" UMBBR "qui se compose du premier mot dans la phrase" Mary. Il était un grand enfant. »Ces mots de passe sont faciles à retenir et le type, mais difficile de trouver l'attaquant.

Utilisez un pare-feu. Il vous protégera, au moins, 50% exploité les vulnérabilités dans les logiciels. MySQL utilise le port 3306 par défaut. Ce port doit être disponible uniquement sur les ordinateurs de confiance. La meilleure façon de vérifier si oui ou non votre port MySQL est ouvert est d'essayer la commande suivante depuis une machine distante, où hôte_serveur - nom d'hôte de votre serveur MySQL: telnet hôte_serveur 3306

Ne vous fiez pas toutes les données saisies par les utilisateurs. Ils peuvent tromper votre code en entrant des caractères spéciaux dans un formulaire Web ou une URL. Assurez-vous que votre application reste sûre si un utilisateur entre quelque chose comme: DROP DATABASE mysql;. Ce - exemple critique, mais une pluralité de protection contre les fuites et les pertes de données peuvent se produire parce que les pirates utilisant des techniques similaires. Aussi, pensez à vérifier les données numériques. Une erreur commune est de protéger uniquement les chaînes. Parfois, les gens pensent que si une base de données ne contient que des données accessibles au public, il ne devrait pas être protégé. Ceci est faux. Au moins, DoS attaque peut être faite contre de telles bases de données. La meilleure façon de se protéger contre ce type d'attaque consiste à utiliser des apostrophes autour des constantes numériques:

SELECT * FROM table WHERE ID = '234'. MySQL convertit automatiquement cette chaîne en nombre et supprime tous les caractères non numériques dans une requête. vérifier:

Toutes les applications Web:

1. Essayez d'entrer '' '' '' dans vos formulaires Web. Si vous obtenez une erreur MySQL, enquêter immédiatement sur le problème.

2. Tenter de modifier l'URL, ajoutez% 22 ( ' "'), 23% ( '#'), 27% ''.

3. Essayer de changer les types de données à partir de l'URL dynamique des caractères numériques aux caractères affichés dans les exemples précédents. Votre application doit être sécurisée contre ce type d'attaque.

4. Essayez d'entrer des caractères, des espaces et des symboles spéciaux au lieu de chiffres dans les champs numériques. Votre demande doit les enlever avant leur adoption de MySQL, ou de votre application doit générer une erreur.

5. Vérifiez les données de tailles avant de faire leur MySQL.

6. Votre application doit se connecter à la base de données en utilisant un utilisateur autre que celui que vous utilisez à des fins administratives. Ne laissez pas votre demande plus de droits que ceux qui ont vraiment besoin.

Utilisateurs PHP:

Vérifiez les addslashes de fonction (). Après PHP 4.0.3, la fonction mysql_escape_string () est disponible, qui est basé sur la fonction du même nom dans l'API MySQL C.

Membres MySQL C API:

Vérifiez la requête API mysql_escape_string ().

Membres MySQL ++:

Vérifiez les transitions et les citations modificateurs flux de requête.

Membres Perl DBI:

Vérifiez la méthode quote () ou utiliser une structure zéro (placeholders).

Utilisateurs Java JDBC:

Utilisez un objet PreparedStatement et placeholders.

Ne pas transmettre des données non cryptées sur Internet. Ces données sont à la disposition de toute personne qui a le temps et la capacité d'intercepter et de l'utiliser à leurs propres fins. Au lieu de cela, utilisez un protocole SSL ou le type de SSH crypté. MySQL supporte la version interne de SSL 3.23.9. SSH peut être utilisé pour créer des tunnels cryptés.

Apprenez à utiliser tcpdump. Dans la plupart des cas, vous pouvez vérifier si les flux de données MySQL ne sont pas cryptées vraiment en utilisant la commande suivante:

shell> tcpdump -i eth0 -l -w - src ou port dst 3306 | instruments à cordes


Parfois, pour se protéger contre le piratage site de script n'a pas besoin de prêter attention à la vulnérabilité particulière (mais, bien sûr, besoin de fixer), et pour protéger le site dans son ensemble (en fait de prévenir la vulnérabilité de leur présence). Dans cet article, je vais vous dire que vous devez prodelyvat périodiquement sur son site pour le protéger de la rupture.

Si vous utilisez un script, disponible en téléchargement gratuit, puis suivez bugtracker'om et mis à jour périodiquement. Les nouvelles versions fixent souvent des vulnérabilités graves ont été trouvés dans les versions précédentes.

En outre, si votre site indique comment vous utilisez un script, supprimer ces informations à partir du numéro de version. Si l'attaquant ne sait pas quelle version vous avez, il ne peut pas utiliser une vulnérabilité dans la version du script, qui est vous. Mais encore une fois, que «peut», de sorte que toute la mise à jour de toute façon.

Maintenant, allez à travers les erreurs qui peuvent être dans votre script de self-made.

1. Le mot de passe est stocké dans un fichier qui peut être téléchargé pirate

Si les informations d'accès sont contenues dans le fichier, il est nécessaire de le protéger contre le téléchargement. Vérifiez si vous pouvez ouvrir le fichier qui contient le login et le mot de passe dans votre navigateur!

2. Le mot de passe est stocké dans un fichier qui est indexé par les moteurs de recherche

Correction d'une erreur précédente, vous fixer en même temps et cela - parfois le login et le mot de passe sont stockés dans des fichiers, qui trouve facilement Yandex ou Google! Ne pas résoudre ce problème, vous courez le risque que le pirate n'a même pas craquer votre site en particulier, mais trouve tout simplement la victime à travers un moteur de recherche et haknet d'abord obtenu malchanceux web-master! Ne pas vous retrouver à eux!

Par ailleurs, vous pouvez bloquer l'accès aux moteurs de recherche à travers un robots.txt. Complètement ne pas refuser l'accès au site (et à partir de là prendre les visiteurs?), Et ne devrait être pour les répertoires qui ne devrait pas voir le visiteur, et, par conséquent, le robot de recherche.

3. Le mot de passe est stocké en clair

Mot de passe doit être stocké sous une forme cryptée. Le mode le plus préféré est un hachage (vous pouvez utiliser l'algorithme MD5 ou SHA1), que la voie directe pour obtenir le mot de passe du hachage impossible. Mais il y a une base de données en ligne de hash, qui peut stocker votre mot de passe et votre hachage, afin d'utiliser des mots de passe et les mots de passe inhabituels à partir d'un ensemble de caractères aléatoires.

Pour une plus grande confiance dans la fiabilité de la protection de votre site, lire des articles sur la rupture que le libre accès aux ressources publiées pirater, et essayer d'appliquer la méthodologie définie là-bas, comme ils disent, "sur eux-mêmes."