Index
Forums
Annuaire
Référencement
Télécharger
  phpBB SEO : Référencement Google, MSN, Yahoo, Annuaires, Forums  
phpBB SEO
Boards
Directory  
SEO  
Downloads
 
  Rechercher Search
    S'enregistrer
Pseudo :  Passe :  Auto  
Register  
 
   
PHP_Hack_Trap_1.0-RC1
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    phpBB SEO » Forum Référencement  » Sécurité informatique
::  
Auteur Message
Conchise
PR0
PR0


Inscrit le: 09 Jan 2008
Messages: 53

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 12:38 am    Sujet du message: PHP_Hack_Trap_1.0-RC1

Bonjour,

Comme promis, je viens partager avec vous et soumettre à votre avis un module de sécurité que j'ai créé.

Il s'appelle PHP_Hack_Trap. C'est la version 1.0 RC1. A tester. A Améliorer.

Plan :
1. Role
2. Exemples/Idées d'utilisation
3. Config. nécessaire
4. Installation


Rôle :

Il s'agit d'un piège à pirates qui se termine par (au choix) :

- L'écriture (IP, date, heure, commentaire) dans un log.
- L'envoi d'un mail détaillé à l'admin
- Un ban après plusieurs appels de la page (plusieurs erreurs)
- Un ban direct


Exemples :

Aucun lien de votre site ne mène au dossier /include ou /db. Donc, si quelqu'un essaie d'y accéder c'est qu'il a tapé l'adresse dans le navigateur. La directive d'index de votre .htaccess redirige vers une page PHP_Hack_Trap. Il gagne un ban direct. (dossier ou ensemble du site)

Le dossier /admin de votre site est protégé par mot de passe. En cas d'erreur la directive ErrorDocument de votre .htaccess redirige vers une page La directive d'index de votre .htaccess redirige vers une page PHP_Hack_Trap. Au bout d'un certain nombre d'erreurs -> ban permanent (dossier ou ensemble du site)

Vous pouvez appeler une page Hack_Trap depuis un scripte de votre site.


Config. Nécessaire :

- Php, mais je ne sais pas quelle version. (Je débute, merci)
- La fonction mail()
- Une base de données MySQL. Je ne sais
pas non plus quelle version.
- Pouvoir avoir des fichiers .htaccess sur son serveur.

Mise en place :

1. Décompresser l'archive et copier les fichiers dans le dossier à protéger.
2. Editer le fichier sec_config.php. Entrer les paramètres de la base de donnée, fichiers, mail, commentaires... voir poste suivant.
3. Lancer le fichier sec_Install.php qui se chargera de créer les tables.
4. Supprimer le fichier d'installation.
5. Rediriger l'utilisateur vers la page sec_denied.php en cas d'erreur. Cette page peut être renomée à volonté.

Post suivant : Le fichier de configuration.
Revenir en haut de page
Conchise
PR0
PR0


Inscrit le: 09 Jan 2008
Messages: 53

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 12:59 am    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Le fichier de configuration commenté :

Chaque fichier Hack Trap va chercher sa configuration dans son dossier. Ensuite, suivant la-dite configuration, il peut y avoir ban : au niveau du-dit dossier ou de l'un de ses parents jusqu'au niveau de l'ensemble du site. Il suffit de préciser le chemin du fichier à autoriser :

Code:
$SEC_ENV['htacc_racine'] = ".htaccess";
$SEC_ENV['log_file'] = "errors.txt"; // on peut vouloir des logs communs ou séparés


(Pas de betises, n'essayez pas la troisième possibilité Wink )

Ensuite, lors d'une configuration multi-fichiers on peut vouloir que tous partagent les même tables ou qu'ils aient des tables séparées.

Dans un cas, le pirate essaie un dossier, recoit une erreur. Il en essaie un autre, recoit encore une erreur qui s'additionne à la premiere, etc... et termine par gagner un deny from son_ip.

Dans l'autre cas, il est banni du dossier admin apres un certain nombre de mots de passes faux mais peut continuer à utiliser le site normalement.

Ou encore, il est banni d'un dossier, et si les les tables sont partagées, sera banni des autres dossiers apres la première tentative...

Tout dépend de votre envie.

Pour Décider de tout ça, on peut personnaliser le préfixe des tables.

Code:
$SEC_ENV['db_prefixe'] = 'sec_';



Bien entendu, il faut entrer les paramètres de la bdd MySQL.
Code:

$SEC_ENV['db_server'] = '*****'; //adresse du serveur habituellement localhost
$SEC_ENV['db_user'] = '*******'; // Nom de l'utilisaeur
$SEC_ENV['db_pwd'] = '******'; // Mot de passe
$SEC_ENV['db_name'] = '******'; // Nom de la base de données
$SEC_ENV['db_connexion'] = ''; // ne jamais rien mettre ici. Habitude d'initialiser les variables


Décidez du nombre d'erreurs avant d'etre bannis. 0 pour immédiat.

Code:
$SEC_ENV['max_attempts'] = 5;



Paramètres de mailing :


Code:
$SEC_ENV['admin_mail'] = "VOTRE MAIL"; // a qui le mail doit-il este envoyé ?
$SEC_ENV['admin_subject'] = ""; // Sujet du mail
$SEC_ENV['admin_default_subject'] = "[ERROR/BAN] from ".$SEC_ENV['page_name']; // Si le sujet du mail est vide, ce sujet est envoyé



Par commodité, ces paramètres peuvent être inclus dans les rapports (mail, log, bdd)

Code:
$SEC_ENV['page_name'] = "PERSONNALISEZ ce champs"; // Pour avoir le nom de la page dans les rapports d'erreur.
$SEC_ENV['domaine'] = "VOTRE DOMAINE"; // Domaine


Template de pages à afficher
Code:

// Template de la page à afficher
$SEC_ENV['error_template'] = "access_denied.tpl"; // Page d'erreur
$SEC_ENV['ban_template'] = "access_denied.tpl"; // Page à afficher lorsque le ban vient d'être appliqué.
// Il n'y aura plus de pages après celle-ci.



Ne pas toucher à :

Code:
$SEC_ENV['attempts_count'] = 1;
$SEC_ENV['date'] = gmdate("d M Y H:i:s", time());
$SEC_ENV['user_ip'] = $_SERVER["REMOTE_ADDR"];



Suite : Les possibilités du module, les améliorations futures
Revenir en haut de page
Conchise
PR0
PR0


Inscrit le: 09 Jan 2008
Messages: 53

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 1:26 am    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Les possibilités du module, les améliorations futures :


Possibilités :

Actuellement, à chaque appel de la page :

1. On vérifie si l'ip est répertoriée et on crée / ou incrémente le compteur de cette ip.
2. S'il y a lieu de bannir, il y a ban.
3. Dans tous les cas, un message est écrit dans un fichier log. Un autre est écrit dans une table. (Ca, c'est pour le futur : possibilités de chercher des ip / dates / etc... dans la table)
4. Si la bdd ou le fichier n'est pas accessible, un mail est envoyé avec toutes les infos (ip, date, mysql_error().... (Les erreurs bdd sont également inscrites dans le fichier s'il est dispo.)
5. En cas de ban, le .htaccess est lu. "Deny from ip" est ajouté au début puis il est réécrit. S'il n'existe pas, il est créé.

Il est possible de ne pas utiliser de bdd. Mais dans ce cas soit le ban est est direct, soit il y a log dans un fichier, sans jamais de ban. Pour cela, mettre dans un fichier le code suivant :

Ban direct :
Code:

require('sec_config.php');
require('sec_functions.php');

$SEC_ENV['db_connexion'] = mysql_connect($SEC_ENV['db_server'], $SEC_ENV['db_user'], $SEC_ENV['db_pwd']) or Report_Error($SEC_ENV, $SEC_ENV['page_name']." - Impossible de se connecter au server MySQL : ". mysql_error());
   $sec_db_selected = mysql_select_db($SEC_ENV['db_name'], $SEC_ENV['db_connexion']);
   if (!$sec_db_selected) {Report_Error($SEC_ENV, $SEC_ENV['page_name'] . " - Impossible de sélectionner la bdd : ". mysql_error());}

permanent_ban($SEC_ENV);


Log simple : (peut envoyer un mail en cas d'erreur fichier)
Code:
require('sec_config.php');
require('sec_functions.php');
Report_error($SEC_ENV, "Votre commentaire perso ici");


Ah, oui et on peut aussi envoyer un mail au lieu d'un log :
Code:
require('sec_config.php');
require('sec_functions.php');
mail_error($SEC_ENV, "Votre commentaire perso ici");



Améliorations futures :

Futur proche :

- Si le module gere par exemple l'acces par mot de passe à un dossier admin et que l'utilisateur fait deux erreurs mais réussit la troisième fois, il faudrait que le compteur soit remis à zéro.

Plus tard :

- Lorsqu'un une ip est bannie, le .htaccess est réécrit. Je n'ai pas trouvé comment faire autrement. Que se passe-t-il si plusieurs scriptes s'executent pour bannir chacun un utilisateur ? Comment sera le .htaccess final ? Pour le moment, je n'en sait rien... Quelqu'un sait ?

- J'aimerais bien une interface de gestion. Une vraie page d'installation qui laisse le choix entre toutes les options, configurer le comportement du module, la facon d'envoyer des rapports (mail uniquement, ou log, ou bdd, ou les trois...) Egalement une page pour voir les bans récents, ancients... pouvoir débannir sans devoir toucher soi même au .htaccess. Pouvoir voir combien de fois un utilisateur a été débanni. Mais il n'existe pas encore de table pour ca. Et je ne suis pas à l'aise dans la conception de belles pages php...

- J'aimerais ajouter une fonction sec_lookup($message) à ajouter lors de la récupération des données de chaque formulaire.
Idée : Il s'agit d'observer les entrées utilisateur et de détecter les tentatives d'injection SQL. Puis prendre certaines mesures plus ou moins agressives.

- Aussi, je débute complètement en PHP. J'ai fait beaucoup de VC++ il y a longtemps (a l'époque de la version 6) donc je ne suis pas (trop) perdu. Mais le code est certainement très maladroit. On pourrait le revoir. Il y a peut-être aussi des problèmes de sécurité...

Bref, j'accepte vos critiques constructives et l'aide de tous ceux qui ont envie de participer.

Merci d'avoir pris le temps de me lire.

Je n'ai pas trouvé comment poster des fichiers.

- Vous pouvez tester le scripte à l'adresse suivante.

EDIT du 25/01/2008 18:20
SUITE à un changement de DNS l'archive ne sera pas accessible pendant 48h. Merci de votre compréhension.


http://www.materials.fr/JS_AHS/acces_denied.php
Attention, au bout de 5 tests, ban permanent du dossier. J'effacerai le .htaccess chaque jour. De plus, téléchargez l'archive AVANT de vous faire bannir.

Vous pouvez donc récupérer l'archive à l'adresse suivante :
http://www.materials.fr/JS_AHS/PHP_Hack_Trap_1.0-RC1.tar.gz


Dernière édition par Conchise le Ven Jan 25, 2008 5:22 pm; édité 3 fois
Revenir en haut de page
biloute
PR3
PR3


Inscrit le: 25 Avr 2007
Messages: 392

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 5:05 am    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Hello,

juste une petite question, ça marche avec phpBB2 et 3?
Sinon super boulot que tu as fais là Wink

_________________
Forum d'entraide en informatique
Annuaire lien en dur
Revenir en haut de page
Visiter le site web de l'utilisateur
Conchise
PR0
PR0


Inscrit le: 09 Jan 2008
Messages: 53

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 11:09 am    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Merci. Mais, il y a encore du travail dessus.

Oui, je pense que ça peut marcher avec tout. C'est indépendant. Et le nom très personnalisé des variables te permettent *normalement* de l'inclure dans une de tes pages.

Mais, bon, ces pages sont surtout faites pour se trouver là où seul un pirate ira.
Par exemple ton dossier include : Aucun lien de ton forum/cms n'envoie un utilisateur là ?
Donc, si un utilisateur s'y trouve, c'est qu'il a lui-même tapé l'url et... c'est pas bien !
Donc tu peux décider d'une action allant du simple affichage d'un message d'erreur avec log et / ou mail jusqu'au ban, suivant la gravité de l'action.

Ca te permet de virer ceux qui jouent à chercher les failles avant qu'ils ne passent à l'action.

Pour diriger l'utilisateur vers cette page, tu peux soit la renommer en index, soit ajouter dans ton .htaccess la directive DirectoryIndex.

Plus d'info :

http://www.apachefrance.com/Manuels/Apache_1.3_VF/mod/mod_dir.html#directoryindex
http://www.commentcamarche.net/apache/apacht.php3 (tout en bas de la page)
Revenir en haut de page
biloute
PR3
PR3


Inscrit le: 25 Avr 2007
Messages: 392

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 4:16 pm    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Une autre question me vient, si bots (google msn, etc) tente d'accéder à un dossier interdit, au bout d'un moment il sera banni! Mais est-ce que les bots cherchent à aller vers ces dossiers?

_________________
Forum d'entraide en informatique
Annuaire lien en dur
Revenir en haut de page
Visiter le site web de l'utilisateur
Conchise
PR0
PR0


Inscrit le: 09 Jan 2008
Messages: 53

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 6:53 pm    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Le scripte se concentre sur l'IP. Donc, oui, les bots seront bannis comme tout le monde. Mais on peut facilement éviter que cela n'arrive en combinant deux mesures :

1. Indiquer dans ton fichier robots.txt que ces dossiers ne sont pas à visiter
2. Utiliser une liste blanche pour les robots.

On peut ausssi souligner que le ban n'est pas obligé de s'appliquer à tout le site.

Dans mon cas, je n'ai pas ce problème de robots parce que j'utilise la page pour deux usages :

1. J'ai renommé mon dossier admin. Il n'existe plus, il n'y a plus aucune référence vers lui. Ensuite, en tant que piège, je l'ai recréé vide. Donc AUCUN lien de mon site, ni mon robots.txt ne pointe vers le dossier admin vide. Le listage des fichiers et dossiers n'est pas autorisé. Donc si quelqu'un va dedant, c'est un humain qui en a tapé l'adresse pour y aller. Je me permets de douter de ses intentions. En fait, c'est le ban direct.

2. Mon forum utilise un CAPTCHA pour l'inscription. Mais les mal-voyants risquent de ne pas pouvoir l'utiliser et ils ne pourront pas s'inscrire. Donc, à coté de l'image, un message avec un lien vers un formulaire situé dans un autre dossier indique à ces utilisateurs qu'ils peuvent demander à un admin la création de leur compte en envoyant un mail. (le formulaire envoie le mail)
Mais, je ne peux pas protéger ce formulaire contre le spam à l'aide d'un CAPTCHA.... C'est là que le scripte intervient. A chaque envoi d'un mail, le compteur de l'adresse IP est incrémenté. Je laisse la personne envoyer un maximum de trois mails par jours. Tous les jours à 3h du matin, une tâche cron supprime le .htaccess du dossier. C'est reparti pour trois mails/IP.

-> Modifs : Créer un formulaire mail. Il POST les données à la page HackTrap qui fait son boulot. En fin de page, j'appelle la fonction

Code:
mail_error($SEC_ENV, "Un utilisateur demande ton assistance", $message_de_l_utilisateur);


Le template affiché est une page de confirmation d'envoi du mail.

Alors, si google est banni de ce dossier, je m'en fiche. Il n'y a rien à indexer.
Revenir en haut de page
biloute
PR3
PR3


Inscrit le: 25 Avr 2007
Messages: 392

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 7:14 pm    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

D'accord, ton système de protection est redoutable tout de même, peu de chance de voir ton site un jour défacé! Chapeau.

_________________
Forum d'entraide en informatique
Annuaire lien en dur
Revenir en haut de page
Visiter le site web de l'utilisateur
Conchise
PR0
PR0


Inscrit le: 09 Jan 2008
Messages: 53

PHP_Hack_Trap_1.0-RC1Posté le: Mer Jan 23, 2008 8:31 pm    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

biloute a écrit:
D'accord, ton système de protection est redoutable tout de même, peu de chance de voir ton site un jour défacé! Chapeau.


J'aimerais bien en venir à ça. Mais on en est encore loin. J'aimerais bien y ajouter la détection des tentatives d'injection SQL, et d'une manière générale, faire suivre d'un ban toute tentative évidente de piratage. (showpage?http://www.mon-url-mechante.com/monfichiermechant.txt) et j'en passe. Il y en a beaucoup....

Mais ca me fait plaisir que tu aimes ce module ! Ca me motive pour le completer.

Je vais suivre de près la découverte de faillles phpbb3 et la publication de correctifs. Ensuite, j'essaierai de voir si on peut détecter une tentative évidente d'utilisation d'une telle faille...
Le but étant de bannir quelqu'un qui cherche les failles du site... avant qu'il ne les trouves.

MAIS, il y a un mais. C'est le mot "evident". Parce qu'il ne faut pas bannir quelqu'un qui ecrit [ code ] un code sql [ / code ]. Et là tout se complique... Qu'est-ce qu'une tentative évidente ?
Et puis, il y a ceux qui te piratent depuis un mc-do, une universite... J'ai fait certains de mes développements entre midi et deux sur mon lieu de travail. Du coup, tout un sous réseau de mon université est banni de mon site jusqu'à ce que j'efface le .htaccess. Ca fait quand même une centaine de batiments et becoup d'utilisateurs potentiels. Il reste le probleme de ceux qui ont une IP dynmique et de ceux qui utilisent le resau TOR....

Donc, c'est un module à utiliser avec prudence.

Ensuite, il reste les failles extérieures (apache, ton ftp, ...) et les DDOS....
Revenir en haut de page
biloute
PR3
PR3


Inscrit le: 25 Avr 2007
Messages: 392

PHP_Hack_Trap_1.0-RC1Posté le: Jeu Jan 24, 2008 5:17 am    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Salut,

c'est sûr que c'est une tâche colossal auquel tu t'attaque mais si tu parviens à faire ce que tu souhaites alors là tu pourras être fier de ça et phpBB sera une plate forme des plus sûr.
Dès que j'ai des repos, je m'attaquerais à tester ton mod.

_________________
Forum d'entraide en informatique
Annuaire lien en dur
Revenir en haut de page
Visiter le site web de l'utilisateur
dcz
Administrateur - Site Admin
Administrateur - Site Admin


Inscrit le: 28 Avr 2006
Messages: 13354

PHP_Hack_Trap_1.0-RC1Posté le: Jeu Jan 24, 2008 9:52 am    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Très intéressant, le fait de modifier directement le .htaccess permet d'aller hachemement plus vite qu'en passant par la db, c'est plus robuste contre les attaques en surcharge.

Le code est pas mal, j'ai cependant quelques remarque (je me permet vu que tu "débutes" en php).

Donc, ce code n'est pas à utiliser si register global est actifs, si non, il faudrait nettoyer les variable, comme le fait phpBB3 dans common.php par exemple.
Mais un avertissement dans un txt pourrait suffir, car register global est de toutes façons pas une bonne chose pour la sécurité.

Ensuite, dans sec_config.php, j'aimerais bien voir :
Code:
$SEC_ENV = array();


Avant de commencer à remplir le tableau de config, histoire de se prémunir un minimum contre des éventuels injections sur la variable.

Un ti :
Code:
if (!defined('IN_HACK_TRAP'))
{
   exit;
}


au tout début ferait du bien aussi, (et aussi dans sec_functions.php) avec un :
define('IN_HACK_TRAP', true); dans sec_denied.php (au tout début).

Les includes et require gagneraient aussi à utiliser un chemin relatif complet :

Code:
   require('./sec_config.php');


$user_ip gagnerait à faire un tit test sur $_SERVER["REMOTE_ADDR"] avant d'être renseigné (genre pas vide ou IPv4 valide).

Une petite bourde, clés de tableau sans guillemets :

Code:
  if ($ret[ID] != "NOT_FOUND")


=>
Code:

  if ($ret['ID'] != "NOT_FOUND")


De manière générale, toutes les variables qui sont employés dans les requêtes devraient être préalablement validés (intval() pour les entiers etc ...).

Pour le design, ce serait pas mal d'utiliser une mini classe pour la db, histoire de pouvoir par exemple utiliser une connections déjà existante le cas échéant.

Pour les manipulation de .htaccess, tu pourrais améliorer les choses en utilisant RewriteMap
tu as des exemples dans cette page : http://httpd.apache.org/docs/1.3/misc/rewriteguide.html

Comme ça, tu pourrais juste ajouter une ligne dans le .htacces du site et ne modifier qu'une unique liste de deny pour toutes les instances de ton script.
Ça éviterait aussi de chmoder le .htaccess.

Voilà pour les suggestions. Beau travail Wink

++

_________________
Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche
Revenir en haut de page
Visiter le site web de l'utilisateur
Conchise
PR0
PR0


Inscrit le: 09 Jan 2008
Messages: 53

PHP_Hack_Trap_1.0-RC1Posté le: Jeu Jan 24, 2008 7:59 pm    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Citation:
Le code est pas mal, j'ai cependant quelques remarque (je me permet vu que tu "débutes" en php).


Pas de problème, j'ai posté pour ça. Pour améliorer le code et apprendre des choses au passage.

* $SEC_ENV = array(); - C'est fait.
* define('IN_HACK_TRAP', true); - c'est fait.
* if (!defined('IN_HACK_TRAP')) { exit; } - c'est fait.
* require('./sec_config.php'); - c'est fait.

* if ($ret[ID] != "NOT_FOUND") - corrigé. Mais comment le programme a-t-il pu marcher avant ?

Citation:
De manière générale, toutes les variables qui sont employés dans les requêtes devraient être préalablement validés (intval() pour les entiers etc ...).


Tu veux dire, pour vérifier que la valeur est un entier, ou une chaine ou autre...
Venant de turbo pascal et VC++, c'est LE point qui me pose problème en php. Je ne sais jamais comment il gère les choses. J'ai toujours peur qu'il ne comprenne pas quand j'ai besoin d'un entier ou d'une chaine. Peur qu'il ne me les entre pas bien dans la bdd et que la comparaison rate à la sortie. Je ne savais pas comment faire pour le compteur. J'ai essayé et ca a marché.... Je ne sais pas comment.
J'ai encore bien du mal à penser :
Code:
$var = 0;
echo $var;

J'ai cru comprendre, et j'ai vu, que PHP fait la conversion "quand il le faut".
Qu'apporterait intval ?

Citation:
Pour le design, ce serait pas mal d'utiliser une mini classe pour la db, histoire de pouvoir par exemple utiliser une connections déjà existante le cas échéant.


La classe, je peux, mais je n'ai pas compris le concept de la bdd.
La connexion se termine avec le scripte, non ? Donc si j'utilise une connexion ouverte par une page, et que cette page se termine avant la mienne... je perds la connexion, non ? Et que se passe-t-il si les deux pages essaient d'envoyer des données au même moment au travers de la connexion ?
Et puis, la page n'est pas faite pour être appelée fréquemment. N'oublions pas que l'appel risque de se terminer par un ban ou un mail... au mieux, une ligne dans un log. Dans ce cas, les chances d'avoir une instance déjà en cours sont maigres.
Sauf... si... la bdd en question sert à autre chose (forum, cms...)
Ok, je vais me pencher sur la question et essayer de faire la modif rapidement.




Code:
Pour les manipulation de .htaccess, tu pourrais améliorer les choses en utilisant RewriteMap


Là, j'ai pas compris. J'ai lu, mais j'ai pas compris. C'est quoi ? Une variable en mémoire ? Un fichier mappé ? (au sens [espace disque] => [espace ram]) ?

Je n'ai pas très bien compris : je peux utiliser ca pour faire croire à apache que les "deny from ip" sont écrit dans un .htaccess, alors qu'ils sont en fait stockés dans un tableau statique ?

Citation:
This program is started once at startup of the Apache servers and then communicates with the rewriting engine over its stdin and stdout file-handles. For each map-function lookup it will receive the key to lookup as a newline-terminated string on stdin. It then has to give back the looked-up value as a newline-terminated string on stdout or the four-character string ``NULL'' if it fails (i.e., there is no corresponding value for the given key). A trivial program which will implement a 1:1 map (i.e., key == value) could be:


Et il y a ca aussi :

Citation:
``Keep it simple, stupid'' (KISS), because if this program hangs it will hang the Apache server when the rule occurs.


Je suis en mutualisé. Si je leur plante le serveur, ils risquent de ne pas apprécier. Et peut-être même que par prévention, ce genre d'opération n'est pas autorisé... (90plan chez ovh) si ?

Encore merci dcz pour les corrections. Ca m fait plaisir !


Autrement, pour le problème de l'indexation, j'ai essayé de chercher les adresses ip des bots pour faire le test au début du scripte et une redirection+exit. Mais j'ai lu chez google qu'utiliser l'ip du bot n'était pas fiable. Et comme il s'agit d'un module de sécurité il est hors de question d'utiliser l'user agent.
La meilleure solution reste le robots.txt. Mais, est-on absolument certain que les moteurs principaux (google, yahoo, msn, ...) le respectent ? Quelqu'un voit autre chose ?
Revenir en haut de page
Conchise
PR0
PR0


Inscrit le: 09 Jan 2008
Messages: 53

PHP_Hack_Trap_1.0-RC1Posté le: Jeu Jan 24, 2008 8:02 pm    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

J'ai oublié :

Pour le test de l'adresse IP j'ai ajouté le code suivant dans le fichier principal. Est-ce qu'il existe d'autres adresses invalides ?

Code:
// 1.1 On vérifie la validité de l'adresse IP
$ipv4 = $_SERVER["REMOTE_ADDR"];
// On assume que l'ip est bonne.
$valid_ip = TRUE;
// Une IPv4 valide, c'est quatre blocs, séparés par un  point et composés de 1, 2 ou 3 chiffres allant de 0 à 9.
if (!ereg("^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$", $ipv4)) {$valid_ip = FALSE;}
// Mais, une IP valide, ce n'est ni (255.255.255.255) ni (0.0.0.0)
if (($ipv4 == "255.255.255.255") || ($ipv4 == "0.0.0.0")) {$valid_ip = FALSE;}

if (!valid_ip)
{
    Report_Error($SEC_ENV, $SEC_ENV['page_name'] . " - IP INVALIDE");
    die("");
}

if ($SEC_ENV['user_ip'] != $ipv4)
{
    Report_Error($SEC_ENV, $SEC_ENV['page_name'] . " - IP TRAFIQUEE");
    die("");
}



EDIT : Et il manquait le sec_install.php à l'archive. C'est corrigé.
Revenir en haut de page
hawk88
PR2
PR2


Inscrit le: 05 Jan 2007
Messages: 239

PHP_Hack_Trap_1.0-RC1Posté le: Jeu Jan 24, 2008 11:00 pm    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Conchise a écrit:

Code:
$var = 0;
echo $var;

J'ai cru comprendre, et j'ai vu, que PHP fait la conversion "quand il le faut".
Qu'apporterait intval ?



Le intval($variable) permet de retourner la valeur, si par exemple tu es sur qu'une variable ne contiendra qu'un numéro.
Tu fais intval($variable) et

--> si c'est un nombre ca te remet le nombre
--> si il contient des caracteres il renvoie soit 0 (soit le début des chiffres si c'est du genre "125 rue " il devrait renvoyer 125 il me semble pas sur a 100%)

Avec ca tu es sur de recevoir le bon type de caractere que tu souhaites Wink

Sinon bonne initiative ton projet Smile

_________________
Toufoot.com Pronostics Football || Jeu-Arcade.net Jeux d'arcade flash
Revenir en haut de page
Visiter le site web de l'utilisateur
SeO
Administrateur - Site Admin
Administrateur - Site Admin


Inscrit le: 15 Mar 2006
Messages: 3117

PHP_Hack_Trap_1.0-RC1Posté le: Ven Jan 25, 2008 1:04 am    Sujet du message: Re: PHP_Hack_Trap_1.0-RC1

Conchise a écrit:
Code:
Pour les manipulation de .htaccess, tu pourrais améliorer les choses en utilisant RewriteMap



Là, j'ai pas compris. J'ai lu, mais j'ai pas compris. C'est quoi ? Une variable en mémoire ? Un fichier mappé ? (au sens [espace disque] => [espace ram]) ?


http://httpd.apache.org/docs/1.3/misc/rewriteguide.html

Citation:
Host Deny

Description:
How can we forbid a list of externally configured hosts from using our server?
Solution:
For Apache >= 1.3b6:

Code:
    RewriteEngine on
    RewriteMap    hosts-deny  txt:/path/to/hosts.deny
    RewriteCond   ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
    RewriteCond   ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
    RewriteRule   ^/.*  -  [F]


For Apache <= 1.3b6:

Code:
    RewriteEngine on
    RewriteMap    hosts-deny  txt:/path/to/hosts.deny
    RewriteRule   ^/(.*)$ ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}/$1
    RewriteRule   !^NOT-FOUND/.* - [F]
    RewriteRule   ^NOT-FOUND/(.*)$ ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}/$1
    RewriteRule   !^NOT-FOUND/.* - [F]
    RewriteRule   ^NOT-FOUND/(.*)$ /$1

Code:

    ##
    ##  hosts.deny
    ##
    ##  ATTENTION! This is a map, not a list, even when we treat it as such.
    ##             mod_rewrite parses it for key/value pairs, so at least a
    ##             dummy value "-" must be present for each entry.
    ##

    193.102.180.41 -
    bsdti1.sdm.de  -
    192.76.162.40  -



Ça doit être jouable comme ça Wink

_________________
Revenir en haut de page
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    phpBB SEO » Forum Référencement  » Sécurité informatique
Page 1 sur 2 Aller à la page 1, 2  Suivante

Navigation

Sauter vers: