phpInfo.netLes ArchivesLes éléPHPants

  
  Accueil
  Trucs & Astuces
  Scripts
  Regex
  Annuaire
  Articles

.
      
 Astuces   PHP  Sécurité


Censurer une IP[19-06-2002]
Posté par Piocheur

Pour éviter le spam dans les forums, livres d'or ou systèmes du même genre, il peut être utile de faire savoir que les adresses IP sont gardées en mémoire.
Par respect de la vie privée, il est toutefois utile de la censurer, grâce à cette fonction par exemple :

<?php

/* censureIp - retourne une version censurée d'une IP */

function censureIp($ip)
{
  
$ereg = "([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})";
  return
ereg_replace($ereg, "\\1.\\2.\\3.***", $ip);
}

// TEST
$ip_test = $REMOTE_ADDR;
echo
$ip_test;

/* Donnera quelque chose comme 123.123.123.123 */

$ip_censuree = censureIp($ip_test);
echo
$ip_censuree;

/* Donnera quelque chose comme 123.123.123.*** */

?>


Sécurité[07-03-2002]
Posté par Virginie Bidaux

Un petit truc créé par une grande débutante.

Pour empêcher quiconque n'a pas montré patte blanche soit en s'inscrivant soit en s'identifiant, j'ai créé un fichier securité qui fait ceci :

<?php
// ouverture d'une session
session_start();
if (!isset(
$glob_is_identified))
{
    
session_destroy();
    
header("Location: index.php");
    exit();
}
?>


glob_is_identified est une variable de session créée dans index et que j'initialise QUE lorsque j'ai identifié l'"intrus" dans ma base ou s'il vient de s'inscrire.
En outre, j'ai sécurisé l'inscription à savoir que l'utilisateur n'est inscrit que si j'arrive à lui envoyer un mail lui rappelant les infos données lors de l'inscription.
Si par "mégarde" il donne une émail bidon, il n'est pas inscrit donc, il ne peut pas voir mes pages sécurisées par un include("securite.php"); juste avant de "starter" la session.

Voilà, c'est tout. Pas génial génial, mais bon, ça peut servir aux débutants...

[2 commentaires]

Authentification HTTP avec BDD[30-01-2002]
Posté par Samuel Thery

En partant du script d'hautentification de Raven (merci à lui ! :-), j'ai adapté pour l'utilisation avec une table d'utilisateurs et niveaux d'utilisateurs.

Structure de la table :
- champ login en index unique
- champ pass pour le password à crypter avec md5()
- champ nivo pour récupérer le niveau de l'utilisateur

J'utilise (pour exemple) le nivo 5 pour super administrateur (MOI ;-) et le nivo 1 pour un administrateur simple. On peut mettre nivo à 0 pour désactiver un utilisateur sans pour autant l'effacer. eNjoY !

<?
function auth($PHP_SELF)
{
    
header( "WWW-authenticate:  basic realm='Admin'");
    
header( "HTTP/1.0  401  Unauthorized");
    echo
"Désolé, cette partie est protégée. (erreur 401)";
    exit;
}

If(isset(
$PHP_AUTH_USER) && isset($PHP_AUTH_PW))
{
    
$requete  = "SELECT nivo ";
    
$requete .= "FROM admin_users ";
    
$requete .= "WHERE login='$PHP_AUTH_USER' AND ";
    
$requete .= "pass='".md5($PHP_AUTH_PW)."' AND nivo>'0'";

    
$results = mysql_query($requete,$connexion);

    
$nb_results = mysql_num_rows($results);
    If(
$nb_results > 0)
    {
        
$row = mysql_fetch_row($results);
        
$nivo = $row[0];
    }
    Else
    {
        
auth($PHP_SELF);
    }
}
Else
{
    
auth($PHP_SELF);
}

?>


Protéger ses pages (architecture pseudo-frames)[19-01-2002]
Posté par Panduril

Bon on pourra sans doute amméliorer ce script. Lorsque l'on monte un site en pseudo-frames, il est souvent préférable que le visiteur ne puisse pas accéder à une rubrique sans passer par la page index. Par exemple :

Adresse normale :
http://www.monsite.com/index.php?rub=2

Le visiteur (mal attentionné) tape :
http://www.monsite.com/page.php
et il obtient une des rubriques du site. Cela peut présenter un gros trou de sécurité !

Voici une solution que je dois en grande partie à Lorenzo et bien d'autres qui m'on aidé sur le forum.

Vous avez un fichier conf.inc.php :

<?
/* Fichier à adapter aux différentes configurations */
        
// Chemin d'acces global
// (ne pas oublier le / à la fin)
// ATTENTION AU MAJUSCULE/MINUSCULE !!!
$global_acces = 'http://localhost/Projet2/';
                
// Fichier acces membre
$pageindex = 'espace_membre.php';
?>

Un fichier check_acces.php :

<?
function check_access($url)
{
  include (
'./var_conf.inc.php');
  
$url = explode("?",$url);

  
// url normal pour accéder à la page
  
$url_normal = "$global_acces" . "$pageindex";

  If (
$url[0] != $url_normal)
  {
        return
false;
  }
  else
  {
        return
true;
  }
}

// On verifie si le chemin d'acces à la page
// est correct.
if (!check_access($HTTP_REFERER))
{
   echo
"Désolé, mais vous n'avez pas accès à cette page<P>\n";
   echo
"<A HREF=\"index.php\">Retour</A><P>";
   exit();
}
?>

Il vous suffit ensuite de faire sur toute les pages que vous souhaitez protéger :

<? include('check_access.php'); ?>


[3 commentaires]

Synseo