Langue
🎨 Skin viewer
Les plus téléchargés
- 1 npds_galerie498
- 2 npds_agenda482
- 3 Programmes de Technologie 1985 MEN ...438
- 4 86-Car426
- 5 photosize419
- 6 npds_annonces 418
- 7 npds_glossaire407
- 8 npds_encapsuleur397
- 9 bootstrap.png361
- 10 superhero340
Index du forum »» Road map développement »» [Résolu] - Ghost formulaire dans user
[Résolu] - Ghost formulaire dans user#1477
dans mainfile.php tu ajoute c'est deux function :
toujours dans mainfile.php tu initialise le token :
dans chaque formulaire tu ajoute un champ hiden :
et tu fait un contrôle du token avant validation et enregistrement db :
tu fait ca sur tout les formulaires
            
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
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
mainfile.php 
toujours mainfile.php
fichier user.php
et fichier module/sform/extend_user/forulaire.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);
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...
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 ???
            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







