Bannissement par ip (pdo requis)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 169 fois - Téléchargée 16 fois

Contenu du snippet

Voici un simple code qui vous permet de bannir ou débannir une IP. PDO est requis pour la gestion de la BDD mais étant donnée la simplicité du code et de la table demandée, il vous sera facile d'adpter le code pour utiliser un fichier texte.

(Pour la table, il s'agit d'une simple table avec un seul champ en vachar(16) nommé "ip", la table est nommé "ip_ban")

Si l'utilisation de la variable $_SERVER['REMOTE_ADDR'] vous rebute, il est également aisé d'adapter avec la source qui se trouve içi: http://www.phpcs.com/codes/RECUPERER-IP-VISITEUR_40034.aspx

A noter qu'il existe deux usages possible:
[1] Avec une vérification dans l'index de votre site et une redirection comme c'est le cas içi (ce qui interdit jusqu'à la visite du site par l'ip bannis)
[2] Avec une verification par exemple avant l'affichage d'un formulaire pour poster un commentaire, sans direction (plus souple, celà permet de garder un visiteur qui se voit restreint les fonctions interactives de votre site)

Source / Exemple :


--------------------------VERIFICATION---------------------------------------
<?

// Script de bannissement d'IP
// Version 1.0
// Auteur: Angellore
// Permet un banissement d'IP au niveau d'une fonction ou d'un accès global à un site.

// Connexion SQL (A supprimer lors d'une utilisation réelle puisqu'on suppose qu'elle est déjà faite)

$user = 'root';
$pass = '';
$ban_mess = 'Vous avez été bannis de ce site! Vilain pas beau!<br />'; // Message affiché si la redirection de marche pas.

$dbh = new PDO('mysql:host=localhost;dbname=localhost', $user, $pass);

foreach ($dbh->query('SELECT * from ip_ban WHERE ip = "'.$_SERVER['REMOTE_ADDR'].'"') as $row) 
	{
		if(!empty($row)) 
		{ 
			header("Location: http://google.fr"); // Redirection
			exit();
			echo $ban_mess;
		}
	}

?>

--------------------------FORMULAIRE ADMIN------------------------------------
<?

// Connexion SQL (A supprimer lors d'une utilisation réelle puisqu'on suppose qu'elle est déjà faite)

$user = 'root';
$pass = '';

$dbh = new PDO('mysql:host=localhost;dbname=localhost', $user, $pass);

switch ($_GET['a']) 
	{
    		case 'ban': // Bannissement
       			// Verifications de la validité du formulaire
			if ($_POST['verif'] != '1') { echo '<span class="warn">Veuillez cocher la case de vérification de soumission du formulaire</span>'; }
			else 
				{
					$dbh->exec('INSERT INTO ip_ban (ip) VALUES ("'.$_POST['ip'].'")');
					echo 'L\'adresse IP ('.$_POST['ip'].') a correctement été bannie.';
				}
        		break;
    		case 'dban': // Debannissement
       			$dbh->exec('DELETE FROM ip_ban WHERE ip = "'.$_POST['ip'].'"');
			echo 'L\'adresse IP ('.$_POST['ip'].') a correctement été débannie.';
       		break;

	}

?>
 <!-- Exemple de Style -->
<style>
.warn { color: FF0000; }
</style>

<h5> Bannir une adresse IP </h5>
<form method=post action="?a=ban">
	<input type="text" name="ip" value="<? echo $_POST['ip']; ?>" size="11" maxlength="15" /><br />
	<label><input type="checkbox" name="verif" value="1" /><b>Êtes-vous sur(e)?</b> <span class="warn">/!\ Il s'agit d'une action lourde de conséquences.</span></label><br />
	<input type="submit" name="go" value="GO" />
</form>

<h5> Débannir une adresse IP </h5>
<form method=post action="?a=dban">
	<select name="ip" size="1">
  		<? 
		foreach ($dbh->query('SELECT * from ip_ban') as $row) // On va chercher les adresses déjà enregistrées pour les proposer comme choix
			{
				echo '<option value="'.$row['0'].'">'.$row['0'].'</option>';
			}
		?>
	</select>
	<input type="submit" name="go" value="GO" />
</form>

Conclusion :


Je ne pense pas que cette source soit mise à jour étant donnée sa simplicité.
Par contre, j'aimerais bien quelques petits commentaires, puisqu'il s'agit de ma première source! :D
En espérant qu'elle puisse vous êtes utiles. =)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
3
Cette source à l'air parfaite.
Mais perso en tant que amateur informatique et vu mon niveau je trouve qu'il serait bien de mettre les requêtes Mysql à lancer.
Messages postés
193
Date d'inscription
mercredi 24 août 2005
Statut
Membre
Dernière intervention
3 juin 2016

ouais , interessant comme polémique tout ça.
Moi je suis plutot également pour le banissement de compte:
D'ailleurs, c'est en extrapolant, un peu comme le prof qui punit toute la classe quand le cancre fauteur ne veut pas se dénoncer lui même: j'avais horreur de ça à l'époque.
Certes s'il faut punir ou bannir, bien évidemment bannissons le compte pas l'adresse ip ni le fournisseur.
Pour info je suis pratiquement sûr que lequipe.fr avait banni tout aol pendant plusieurs mois l'année dernière => toutes les tentatives restaient vaines depuis 1 connexion aol irreprochable: lamentable.
Donc même si ça existe restons pour une administration web générale permissive et pour favoriser une responsabilisation de chacun.
Dans le cas des attaques à mon avis les admins des FAI devraient pouvoir agir et bloquer certaines connexions chez eux, s'ils pouvaient être alertés par les admins web avec raison valable(toutes les connexions doivent être historisées pendant un laps de temps, eux savent à qui appartient l'ip qui s'est connectée à tel site à tel moment). Dans ce cas, c'est vrai que pour les attaques émanant des cybercafés c'est plus dur, là c'est à l'administrateur du cybercafé de jouer. Enfin bon, pour poursuivre la réflexion s'il faut faire tout un cycle de delation et de flicage là ça peut devenir aussi dangereux pour les libertés de chacun...
Pour conclure, Il faudrait et c'est peut-être le plus dur avoir des admins responsables pour cela (aucune allusion à CS à ce sujet :))
Messages postés
193
Date d'inscription
mercredi 24 août 2005
Statut
Membre
Dernière intervention
3 juin 2016

ouais , interessant comme polémique tout ça.
Moi je suis plutot également pour le banissement de compte:
D'ailleurs, c'est en extrapolant, un peu comme le prof qui punit toute la classe quand le cancre fauteur ne veut pas se dénoncer lui même: j'avais horreur de ça à l'époque.
Certes s'il faut punir ou bannir, bien évidemment bannissons le compte pas l'adresse ip ni le fournisseur.
Pour info je suis pratiquement sûr que lequipe.fr avait banni tout aol pendant plusieurs mois l'année dernière => toutes les tentatives restaient vaines depuis 1 connexion aol irreprochable: lamentable.
Donc même si ça existe restons pour une administration web générale permissive et pour favoriser une responsabilisation de chacun.
Dans le cas des attaques à mon avis les admins des FAI devraient pouvoir agir et bloquer certaines connexions chez eux, s'ils pouvaient être alertés par les admins web avec raison valable(toutes les connexions doivent être historisées pendant un laps de temps, eux savent à qui appartient l'ip qui s'est connectée à tel site à tel moment). Dans ce cas, c'est vrai que pour les attaques émanant des cybercafés c'est plus dur, là c'est à l'administrateur du cybercafé de jouer. Enfin bon, pour poursuivre la réflexion s'il faut faire tout un cycle de delation et de flicage là ça peut devenir aussi dangereux pour les libertés de chacun...
Pour conclure, Il faudrait et c'est peut-être le plus dur avoir des admins responsables pour cela (aucune allusion à CS à ce sujet :))
Messages postés
331
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
10 février 2009

oui, mais encore, celà ne reste que le cas d'IRC, et entre une appli graphique et une appli Web y'a un monde ....
moi j'essaie de rester dans le cadre d'une appli Web, conctrètement, on a pas besoin de ban une IP quand même, à moins de pas la ban plus de 24h à cause d'IP dynamique.
Je me souviens il y a 2 ans, jme ballaidais tous les jours sur un site Web, à un moment, après reconnexion FAI, bin plus accès au site avant prochaine reconnexion, car IP bannie.
Quand tu bannis une IP sur le net, c'est pas qu'une seule personne que tu peux bannir, c'est pas non plus simplement une pièce, c'est une série de personnes distinctes dont 1 seule à fait qqc de mal ....
C'est pour ça que je ne supporte pas le bannissement par IP sur de l'application Web.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
si tu te faisais attaquer sur irc, tu serais d'un autre avis... pour moi, une ip de proxy -> ban, une ip perso d'un connard -> ban, si il debranche son routeur pour revenir -> ban large... (j'ai vu des admins qui posaient des bans sur tout un FAI...)
Afficher les 28 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_Luzy)