Module Anti-Hack !
xxkirastarothxx
Messages postés
415
Statut
Membre
-
Le site du Débutants -
Le site du Débutants -
Bonjour à tous,
je suis en train de développer un petit module "anti-hack",
je m'explique,
pour la plupart des variables du site que l'utilisateur est susceptible de rentrer/changer (login/ mot de passe/ profile/ $_GET etc...) la variable est passée au peigne fin afin de vérifier la contenance de caractères suspicieux à savoir:
< > & ' " / | : \ OR AND = http php
lorsque 1 caractère est détécté, rien de spéciale, lorsqu'il y en a deux, l'action est stoppée, lorsqu'il y en a trois ou plus, l'action est stoppé, la chaine stocké dans un fichier insensible, et un message du type
"Votre requête à été considéré comme une tentative d'attaque, l'action est stoppée, et un rapport à été envoyé à l'administrateur contenant votre requete, votre adresse ip ...."
tout ceci afin d'essayer de décourager les petit rigolos ^^
Ma Question: comment faire pour repérer le nombre de tout ces caractères interdits dans une chaine ?
Si vous avez des conseils / avis / question n'hesitez pas :)
Merci
je suis en train de développer un petit module "anti-hack",
je m'explique,
pour la plupart des variables du site que l'utilisateur est susceptible de rentrer/changer (login/ mot de passe/ profile/ $_GET etc...) la variable est passée au peigne fin afin de vérifier la contenance de caractères suspicieux à savoir:
< > & ' " / | : \ OR AND = http php
lorsque 1 caractère est détécté, rien de spéciale, lorsqu'il y en a deux, l'action est stoppée, lorsqu'il y en a trois ou plus, l'action est stoppé, la chaine stocké dans un fichier insensible, et un message du type
"Votre requête à été considéré comme une tentative d'attaque, l'action est stoppée, et un rapport à été envoyé à l'administrateur contenant votre requete, votre adresse ip ...."
tout ceci afin d'essayer de décourager les petit rigolos ^^
Ma Question: comment faire pour repérer le nombre de tout ces caractères interdits dans une chaine ?
Si vous avez des conseils / avis / question n'hesitez pas :)
Merci
A voir également:
- Module ci+ hack
- Pas de module ci - Forum TNT / Satellite / Réception
- Module ci+ ou carte à puce non trouvée samsung ✓ - Forum TV & Vidéo
- Manque "cam module" sur TV SHARP AQUOS ✓ - Forum Téléviseurs
- Paris Première non disponible sur la TNT ✓ - Forum Cinéma / Télé
- Module d'expérience locale francais ✓ - Forum Matériel & Système
9 réponses
Voilà une idée :
<?php
$var='Ce test doit échouer à cause des caractères ">" et "<", le troisième "&" provoque l\'envoi du mail'; //Variable à tester
$nb=0; //Compteur de caractères interdits
$interdits=array('>','<','&');
foreach($interdits as $caract)
{
$ajout=mb_substr_count($var,$caract);
$nb=$nb+$ajout;
}
if($nb>2)
{
//mail();
exit('Tentative de piratage détectée. Action avortée. Un e-mail a été envoyé à l\'administrateur');
}
elseif($nb>1)
exit('Tentative de piratage détectée. Action avortée.');
//Poursuite du script ....
echo "Action autorisée et terminée.";
?>
J'y ai pas réfléchi plus tôt, mais tu sais qu'avec htmlentities() ou htmlspecialchars() ça fonctionne encore mieux. Pour PHP ça ne gène pas puisque le texte ainsi récupéré est une chaîne de caractères.
Il y a aussi une fonction pour notamment éviter les injections SQL mais je ne m'en souviens plus.
Il y a aussi une fonction pour notamment éviter les injections SQL mais je ne m'en souviens plus.
mysql_real_escape_stringje connais, mais l'idée c'est surtout:
1] prévenir le hacker que son attaque à été repéré, déjà ça dissuade,
2] faire un rapport complet à l'administrateur avec le plus de détails possible ( IP, os, navigateur etc etc, enfin tout ce qu'on peut récupérer avec les $_SERVER & Cie
je vais voir ce que je peux faire avec ce code, merci ;)
Merci ça a l'air de faire ce que je recherchais :)
jvais allé m'amuser avec :)
Quelqu'un sais comment récupérer plus d'info du client ?
pasque les $_SERVER['remote_addr'] etc... ça reste limité.
qu'est-ce qui pourrait être pratique de recupérer ?
jvais allé m'amuser avec :)
Quelqu'un sais comment récupérer plus d'info du client ?
pasque les $_SERVER['remote_addr'] etc... ça reste limité.
qu'est-ce qui pourrait être pratique de recupérer ?
Tu peux récupérer :
Le navigateur
L'adresse ip
Pour le naviguateur , une petite astuce :
A+
http://sitedebutant.u7n.org/
Le navigateur
L'adresse ip
Pour le naviguateur , une petite astuce :
<?php
if(preg_match("/Firefox/",$_SERVER['HTTP_USER_AGENT'])){
$navigateur = "Firefox";
}
if(preg_match("/Safari/",$_SERVER['HTTP_USER_AGENT'])){
$navigateur = "Safari";
}
if(preg_match("/MSIE/",$_SERVER['HTTP_USER_AGENT'])){
$navigateur = "Internet Explorer";
}
?>
Ahah , tu crois que tu me fais peur avec ton petit hack !<br />
Ton adresse ip est <?php echo $_SERVER['REMOTE_ADDR']; ?> , et ton navigateur est <?php echo $navigateur; ?><br />
Et après tu continue de lui faire peur blablabla
A+
http://sitedebutant.u7n.org/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il doit y avoir d'autre solution, certain comme Mon-ip.com arrive à détéctée une multitude de chose bien pratique pour ce genre de module, comme l'adresse ip interne, l'adresse ip externe, l'adresse ip du proxy(si détecté), le port utilisé.
déjà le $_SERVER['HTTP_USER_AGENT'] est peu fiable, car de mon travail aucune information n'est retrouvée grâce à cette commande, alors que d'autre sites me l'indique sans problème.
quelqu'un connait-il un moyen pour récupérer ce genre d'info ?
déjà le $_SERVER['HTTP_USER_AGENT'] est peu fiable, car de mon travail aucune information n'est retrouvée grâce à cette commande, alors que d'autre sites me l'indique sans problème.
quelqu'un connait-il un moyen pour récupérer ce genre d'info ?
"je suis d'accord avec Yoan avec htmlentities() ou htmlspecialchars() ça fonctionne encore mieux."
Les gens faut apprendre à comprendre, ou à lire:
"je connais, mais l'idée c'est surtout:
1] prévenir le hacker que son attaque à été repéré, déjà ça dissuade,
2] faire un rapport complet à l'administrateur avec le plus de détails possible ( IP, os, navigateur etc etc, enfin tout ce qu'on peut récupérer avec les $_SERVER & Cie"
un site comporte obligatoirement des failles. Avec des simples htmlentities() ou htmlspecialchars() l'attaque est bloquée, mais à un moment ou à un autre quelqu'un trouvera la faille et se ferra plaisir.
Avec le module que j'essaye de développer, rien n'empêche, lors de la poursuite du script, de rajouter les balises htmlentities(), htmlspecialchars() et/ou mysql_real_escape_string().
exemple à l'arache :
Dans mon module je pensais également ajouter une partie d'auto-ban lorsque plus de 3 attaques ont été détectées sur la même IP par exemple, c'est là l'avantage, et c'est loin d'être le seul auquel j'ai pensé.
M'enfin si vous connaissez une fonction php qui fait la même chose que ce que je développe, prévenez moi encore que je rigole ^^
autre Exemple:
un hacker essaye de se logué en admin grace à:
login: admin
pass: ' or ''=''
c'est une faille stupide, mais assez fréquente.
Et bien là, non seulement l'attaque est bloquée par les magicquote (ou addslashes) les htmlspecialchars etc, mais EN PLUS un rapport est fais à l'administrateur, qui pourra vérifier le type d'attaque etc.
Le hacker est prévenu que l'administrateur est au courant, et qu'il peut être banni au bout de la 3ème tentative détéctée.
Comme un rapport est fait à l'administrateur, ce dernier peu également repérer des failles auxquels il n'avait pas pensé, et on peut encore trouver d'autre fonctionalitée a ce type de module.
après il y a surement mieux que le ban par IP, par-ce que l'IP ça se change simplement, mais ça je cherche encore.
le user agent ? l'os + le navigateur + je sais pas quoi d'autre similaire ?
ma question reste dans mon post précédant
Les gens faut apprendre à comprendre, ou à lire:
"je connais, mais l'idée c'est surtout:
1] prévenir le hacker que son attaque à été repéré, déjà ça dissuade,
2] faire un rapport complet à l'administrateur avec le plus de détails possible ( IP, os, navigateur etc etc, enfin tout ce qu'on peut récupérer avec les $_SERVER & Cie"
un site comporte obligatoirement des failles. Avec des simples htmlentities() ou htmlspecialchars() l'attaque est bloquée, mais à un moment ou à un autre quelqu'un trouvera la faille et se ferra plaisir.
Avec le module que j'essaye de développer, rien n'empêche, lors de la poursuite du script, de rajouter les balises htmlentities(), htmlspecialchars() et/ou mysql_real_escape_string().
exemple à l'arache :
if($erreur ==2)
{ exit('action stopée');}
elseif($erreur >=3)
{ exit('Action concidéré come hack: rapport effectué(ip, agent etc...)');}
else
{
$var = mysql_real_escape_string(htmlspecialchars($var));
}
Dans mon module je pensais également ajouter une partie d'auto-ban lorsque plus de 3 attaques ont été détectées sur la même IP par exemple, c'est là l'avantage, et c'est loin d'être le seul auquel j'ai pensé.
M'enfin si vous connaissez une fonction php qui fait la même chose que ce que je développe, prévenez moi encore que je rigole ^^
autre Exemple:
un hacker essaye de se logué en admin grace à:
login: admin
pass: ' or ''=''
c'est une faille stupide, mais assez fréquente.
Et bien là, non seulement l'attaque est bloquée par les magicquote (ou addslashes) les htmlspecialchars etc, mais EN PLUS un rapport est fais à l'administrateur, qui pourra vérifier le type d'attaque etc.
Le hacker est prévenu que l'administrateur est au courant, et qu'il peut être banni au bout de la 3ème tentative détéctée.
Comme un rapport est fait à l'administrateur, ce dernier peu également repérer des failles auxquels il n'avait pas pensé, et on peut encore trouver d'autre fonctionalitée a ce type de module.
après il y a surement mieux que le ban par IP, par-ce que l'IP ça se change simplement, mais ça je cherche encore.
le user agent ? l'os + le navigateur + je sais pas quoi d'autre similaire ?
ma question reste dans mon post précédant
je n'avais éffectivement pas pensé à ce point de details.
Il est vrai qu'un utilisateur peu avoir http ou php dans son pseudo, par exemple.
Mais est-ce vraiment gênant, dans le sens où je ne les interdits pas, je les repère et je les interdits seulement s'il sont trop nombreux.
Un rapport étant fait à l'administrateur, celui ci pourra choisir ou non de laisser passer la requête à l'avenir.
Il est vrai qu'un utilisateur peu avoir http ou php dans son pseudo, par exemple.
Mais est-ce vraiment gênant, dans le sens où je ne les interdits pas, je les repère et je les interdits seulement s'il sont trop nombreux.
Un rapport étant fait à l'administrateur, celui ci pourra choisir ou non de laisser passer la requête à l'avenir.
Bonjour
Si ça peut servir, dans l'optique 'Bien connaître pour mieux défendre. (Gérard Haas)' :
Le Site du Zéro : Les expressions régulières (Partie 1/2)
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/916990-les-expressions-regulieres-partie-1-2
Le Site du Zéro : Les expressions régulières (Partie 2/2)
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/917386-les-expressions-regulieres-partie-2-2
Le Site du Zéro : Mémo pour les Regex
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/918834-memento-des-expressions-regulieres
Les caractères spéciaux ou les chaînes particulières de caractères ne sont pas le problème !
Les données sont interprétées comme du code actif au lieu d'être ignorées !
Ce sont les effets qu'ils déclenchent le problème ! Aucun caractère ne doit être interdit.
(Un caractère peut ne pas être utilisable par convention mais pas interdit pas convenance personnelle)
Merci
Si ça peut servir, dans l'optique 'Bien connaître pour mieux défendre. (Gérard Haas)' :
Le Site du Zéro : Les expressions régulières (Partie 1/2)
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/916990-les-expressions-regulieres-partie-1-2
Le Site du Zéro : Les expressions régulières (Partie 2/2)
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/917386-les-expressions-regulieres-partie-2-2
Le Site du Zéro : Mémo pour les Regex
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/918834-memento-des-expressions-regulieres
Les caractères spéciaux ou les chaînes particulières de caractères ne sont pas le problème !
Les données sont interprétées comme du code actif au lieu d'être ignorées !
Ce sont les effets qu'ils déclenchent le problème ! Aucun caractère ne doit être interdit.
(Un caractère peut ne pas être utilisable par convention mais pas interdit pas convenance personnelle)
Merci