Agenda

Avril
2024

L M M J V S D
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Jour avec événement(s)
Jour férié
MER
MER
Carte des utilisateurs
Login
 Connexion
Glossaire
icon_npds_glossaire

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Autres

En ligne

Il y a actuellement 67 visiteur(s) et 0 membre(s) en ligne.

Devenez membre privilégié en cliquant ici

Chat anonyme -1
sondage 2
Test sondage
Résultats  Anciens sondages
  • Votes : 1321
  • Commentaire(s) : 5
Galeries Photo
Activité du Site

Pages vues depuis 20/04/2015 : 23 201 274

  • Nb. de membres 44
  • Nb. d'articles 4
  • Nb. de forums 50
  • Nb. de sujets 9
  • Nb. de critiques 2

Top 10  Statistiques

Github jpb
Bloc 2 affichant une galerie

Index du forum »»  Road map développement »» [Résolu] - Ghost formulaire dans user

[Résolu] - Ghost formulaire dans user#1477

5Contributeur(s)
jpbNicolas2tutonpdsutilisateurVisiteur
2 Modérateur(s)
phrjpb
Nicolas2 Nicolas2icon_post
dans mainfile.php tu ajoute c'est deux function :



function make_token($name = 'csrfToken')
{
global $nuke_url;

$max_time = 60 * 60 * 24;

$csrf_token = $_SESSION[$nuke_url.$name];
$stored_time = $_SESSION[$nuke_url.$name .'_time'];

if ((($max_time + $stored_time) <= time()) || empty($csrf_token))
{
$_SESSION[$nuke_url.$name, md5(uniqid(rand(), true))];
$_SESSION[$nuke_url.$name .'_time', time()];
}

return $_SESSION[$nuke_url.$name];
}

function is_token_valid($name = 'csrfToken')
{
global $nuke_url;

return ($_POST[$name] === $_SESSION[$nuke_url.$name]);
}


toujours dans mainfile.php tu initialise le token :



make_token('csrfToken');


dans chaque formulaire tu ajoute un champ hiden :



global $nuke_url;



et tu fait un contrôle du token avant validation et enregistrement db :



if (!is_token_valid()) {
redirect_!!!!url(!!!!'index.php');
}


tu fait ca sur tout les formulaires
 Message édité par : jpb / 04-03-2021 17:27
 Message édité par : jpb / 04-03-2021 19:33
 Message édité par : jpb / 06-03-2021 10:11
Nicolas2 Nicolas2icon_post
et dans user.php

function finishNewUser($uname, $name, $email, $user_avatar, $user_occ, $user_from, $user_intrest, $user_sig, $user_viewemail, $pass,$user_lnl, $C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$M1,$M2,$T1,$T2,$B1)


tu ajoute sur chaque champ

StripSlashes(removeHack($NOM_DU_CHAMP))
jpb jpbicon_post
oki je vais regarder tout ça !!! j'ai du décrocher ... je regarde ca cet aprem et te dis quand c'est ok pour qu'on puisse faire des essais ....
L'eau goutte à  goutte finit toujours par percer la pierre...
Nicolas2 Nicolas2icon_post
pas de souci !!!
jpb jpbicon_post
bon dans le code de la fonction make_token on a de petit soucis ... pas de start session ????? donc pas de $_session non ?
session_start();

/*session is started if you don't write this line can't use $_Session global variable*/

L'eau goutte à  goutte finit toujours par percer la pierre...
 Message édité par : jpb / 04-03-2021 13:57
 Message édité par : jpb / 04-03-2021 13:58
Nicolas2 Nicolas2icon_post
ya des modif a faire sur le code au dessus je teste sur mon labo
Nicolas2 Nicolas2icon_post
attend 5 minutes je te donne les modif ici
 Message édité par : Nicolas2 / 04-03-2021 14:10
Nicolas2 Nicolas2icon_post
mainfile.php



session_manage();

session_start();


toujours mainfile.php



function make_token($name = 'csrfToken')
{
$max_time = 60 * 60 * 24; // token is valid for 1 day

$csrf_token = session_get_token($name);
$stored_time = session_get_token($name .'_time');

if ((($max_time + $stored_time) <= time()) || empty($csrf_token))
{
session_set_token($name, md5(uniqid(rand(), true)));
session_set_token($name .'_time', time());
}

return session_get_token($name);
}

function is_token_valid($name = 'csrfToken')
{

var_dump($_POST, session_get_token($name));

return ($_POST[$name] === session_get_token($name));
}

function session_set_token($key, $value = false)
{
global $nuke_url;

if (is_array($key) && $value === false)
{
foreach ($key as $name => $value)
{
$_SESSION[$name] = $value;
}
}
else
{
$_SESSION[$key] = $value;
}
}

function session_get_token($key)
{
global $nuke_url;

if (isset($_SESSION[$key]))
{
return $_SESSION[$key];
}

return null;
}


fichier user.php



function Only_NewUser() {
global $user, $memberpass;
if (!$user) {
global $smilies, $short_user, $memberpass;
global $uname, $name, $email, $user_avatar, $user_occ, $user_from, $user_intrest, $user_sig, $user_viewemail, $pass, $vpass, $C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$M1,$M2,$T1,$T2,$B1, $csrfToken;




function hidden_form() {
global $uname, $name, $email, $user_avatar, $user_occ, $user_from, $user_intrest, $user_sig, $user_viewemail, $pass, $vpass, $C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$M1,$M2,$T1,$T2,$B1,$charte,$user_lnl, $csrfToken;
if (!$user_avatar) {$user_avatar="blank.gif";}
echo '
<form action="user.php" method="post">
<input type="hidden" name="uname" value="'.$uname.'" />
<input type="hidden" name="name" value="'.removeHack($name).'" />
<input type="hidden" name="email" value="'.$email.'" />
<input type="hidden" name="user_avatar" value="'.$user_avatar.'" />
<input type="hidden" name="user_from" value="'.StripSlashes(removeHack($user_from)).'" />
<input type="hidden" name="user_occ" value="'.StripSlashes(removeHack($user_occ)).'" />
<input type="hidden" name="user_intrest" value="'.StripSlashes(removeHack($user_intrest)).'" />
<input type="hidden" name="user_sig" value="'.StripSlashes(removeHack($user_sig)).'" />
<input type="hidden" name="user_viewemail" value="'.$user_viewemail.'" />
<input type="hidden" name="pass" value="'.removeHack($pass).'" />
<input type="hidden" name="user_lnl" value="'.removeHack($user_lnl).'" />
<input type="hidden" name="C1" value="'.StripSlashes(removeHack($C1)).'" />
<input type="hidden" name="C2" value="'.StripSlashes(removeHack($C2)).'" />
<input type="hidden" name="C3" value="'.StripSlashes(removeHack($C3)).'" />
<input type="hidden" name="C4" value="'.StripSlashes(removeHack($C4)).'" />
<input type="hidden" name="C5" value="'.StripSlashes(removeHack($C5)).'" />
<input type="hidden" name="C6" value="'.StripSlashes(removeHack($C6)).'" />
<input type="hidden" name="C7" value="'.StripSlashes(removeHack($C7)).'" />
<input type="hidden" name="C8" value="'.StripSlashes(removeHack($C8)).'" />
<input type="hidden" name="M1" value="'.StripSlashes(removeHack($M1)).'" />
<input type="hidden" name="M2" value="'.StripSlashes(removeHack($M2)).'" />
<input type="hidden" name="T1" value="'.StripSlashes(removeHack($T1)).'" />
<input type="hidden" name="T2" value="'.StripSlashes(removeHack($T2)).'" />
<input type="hidden" name="B1" value="'.StripSlashes(removeHack($B1)).'" />
<input type="hidden" name="csrfToken" value="'.$csrfToken.'" />';
}




function finishNewUser($uname, $name, $email, $user_avatar, $user_occ, $user_from, $user_intrest, $user_sig, $user_viewemail, $pass,$user_lnl, $C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$M1,$M2,$T1,$T2,$B1) {
global $NPDS_Prefix;
global $makepass, $system, $adminmail, $sitename, $AutoRegUser, $memberpass, $gmt;

if (!is_token_valid()) {
redirect_!url(!'index.php');
}


et fichier module/sform/extend_user/forulaire.php



$m->add_field('op','','new user','hidden',false);
$m->add_field('csrfToken','', make_token(),'hidden',false);
jpb jpbicon_post
Citation : Nicolas2
et dans user.php

function finishNewUser($uname, $name, $email, $user_avatar, $user_occ, $user_from, $user_intrest, $user_sig, $user_viewemail, $pass,$user_lnl, $C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$M1,$M2,$T1,$T2,$B1)


tu ajoute sur chaque champ

StripSlashes(removeHack($NOM_DU_CHAMP))


==> ca oui fait dans labo !
L'eau goutte à  goutte finit toujours par percer la pierre...
jpb jpbicon_post
deux questions :
ne serait pas plus judicieux de placer le code dans grab_globals ??
ne serait t'il pas préférable de détruire la session quand on en a plus besoin (quand le form est finalement soumis ??) ?
et troisième question je verrrai plutôt la variable name en tokenname ou quelque chose comme ça ???
L'eau goutte à  goutte finit toujours par percer la pierre...
 Message édité par : jpb / 04-03-2021 14:15