Session en fonction d'un attribut

arbilus Messages postés 93 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 20 avril 2015 - 11 juil. 2010 à 13:11
arbilus Messages postés 93 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 20 avril 2015 - 11 juil. 2010 à 21:15
Bonjour, je suis actuellement entrain d'essayer de sécuriser un script php en limitant son utilisation. J'ai cela comme script:

if($_SESSION['last_session_request'] > time() - 10){
    mail("xxxx@xxxxxx.xxx", "Flood! ".$_SERVER["REMOTE_ADDR"], "Origine: ".$_SERVER["HTTP_REFERER"]);
header("location: ../echec.html");
    exit;
}
$_SESSION['last_session_request'] = time();


Seulement j'aimerais faire en sorte que la session ne soit pas lié à la page (style: z.php) . Mais à la page avec un attribut (exemple: z.php?r=3) .

Seulement je ne sais pas si cela est possible et comment devrais-je m'y prendre ?

5 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 juil. 2010 à 13:44
Salut,

Je n'ai pas bien compris ce que tu veux faire, peux tu être plus explicite ?
Suffit de définir (et contrôler) la variable de session 'last_session_request' lorsque $_GET['r'] === 3; non ?

Gaffe avec "$_SERVER["HTTP_REFERER"]", c'est une donnée utilisateur qui peut être facilement modifiée, et quand elle est entrée directement dans la fonction mail() il est peut être possible de faire des injections.

Cordialement,


Kohntark -
0
arbilus Messages postés 93 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 20 avril 2015
11 juil. 2010 à 13:57
Et bien d'habitude ce script se met en marche à chaque chargement de la page z.php . Que ce soit z.php?j=2 ou z.php?q=0 etc .. Le script s'activera à chaque fois . Or ce que je veux c'est que ce script anti-flood ne s'active que pour un attribut spécifique: style: z.php?q=3 .

Mais je crois que tu as compris. Seulement, comment faire pour définir la session "last_session_request" uniquement pour un attribut spécifique. Car la chose étant qu'on ne connait pas l'attribut à l'avance (-> tu m'as mis: lorsque $_GET['r'] === 3 . Or on ne sait pas si c'est égal à 3 .)

J'aimerais une session pour un attribut spécifique. Exemple: une session pour r=3, une autre pour r=239 etc ..
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 juil. 2010 à 15:02
Pas simple de te répondre avec les infos que tu donnes.
Il faudrait en savoir plus sur la façon dont tu implémentes ça.
Le mieux, à mon avis, est que tu précises à quoi sert ce script; j'ai bien compris que c'était un antiflood, mais à quoi correspondent exactement la page z.php et les arguments passés (q, j, ...)

Car la chose étant qu'on ne connait pas l'attribut à l'avance

Cela n'a pas d'importance, l'essentiel est de mettre à jour la variable contentant le timestamp là où il le faut, un truc du style peut être :

if(isset($_SESSION['last_session_request'][$_GET['r']]) && $_SESSION['last_session_request'][$_GET['r']] > time() - 10){
    mail("xxxx@xxxxxx.xxx", "Flood! ".$_SERVER["REMOTE_ADDR"], "Origine: ".$_SERVER["HTTP_REFERER"]);
header("location: ../echec.html");
    exit;
}
if (isset($_GET['r'])) $_SESSION['last_session_request'][$_GET['r']] = time();


... mais je parle peut être dans le vide, ne connaissant pas les tenants et aboutissants.

Cordialement,


Kohntark -
0
arbilus Messages postés 93 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 20 avril 2015
11 juil. 2010 à 21:00
Je vais tester ta solution . En tout cas tu as pigé ce que je cherche !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arbilus Messages postés 93 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 20 avril 2015
11 juil. 2010 à 21:15
ça fonctionne ! Merci à toi kohntark !! Finalement c'était pas si compliqué que ça, mais il fallait y penser !
0
Rejoignez-nous