Changeset 108107 in spip-zone


Ignore:
Timestamp:
Dec 18, 2017, 4:40:28 PM (18 months ago)
Author:
cedric@…
Message:

Eviter d'avoir l'identifiant de la liste en clair dans l'URL de confirmation de la desinscription
+ les utilisateurs qui cliquent sur le bouton de confirmation et arrivent sur l'URL dans la meme seconde que la page initiale sont inhumains : on les interroge sur leur nature profonde pour les faire reflechir
(il suffit qu'ils rechargent la page ou qu'ils recommencent plus doucement pour que ca passe, mais ca evitera certaines desinscription intempestives provoquees par des bots)

Location:
_plugins_/mailsubscribers/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mailsubscribers/trunk/action/confirm_unsubscribe_mailsubscriber.php

    r98864 r108107  
    1818function action_confirm_unsubscribe_mailsubscriber_dist($email = null, $identifiant = null) {
    1919        include_spip('mailsubscribers_fonctions');
     20        $timestamp = null;
    2021        if (is_null($email)) {
    2122                $securiser_action = charger_fonction("securiser_action", "inc");
    22                 $email = $securiser_action();
    23                 $email = explode("-", $email);
    24                 $identifiant = array_pop($email);
    25                 $email = mailsubscriber_base64url_decode(implode("-", $email));
     23                $arg = $securiser_action();
     24                $arg = mailsubscriber_base64url_decode($arg);
     25                $arg = explode(':', $arg);
     26                $timestamp = array_pop($arg);
     27                $identifiant = array_pop($arg);
     28                $email = implode(":", $email);
     29        }
     30
     31        // si l'URL de confirmation contient un timestamp trop recent c'est que le clic a ete vraiment super rapide
     32        // on suspecte donc que c'est un bot
     33        // si c'est un humain il n'a qua recharger la page pour que ca passe
     34        if ($timestamp and $timestamp >= $_SERVER['REQUEST_TIME'] - 1) {
     35
     36                $titre = _T('mailsubscriber:texte_vous_avez_clique_vraiment_tres_vite');
     37                // Dans tous les cas on finit sur un minipres qui dit si ok ou echec
     38                include_spip('inc/minipres');
     39                echo minipres($titre, "<style>h1{font-weight: normal}</style>", "", true);
     40                exit;
    2641        }
    2742
  • _plugins_/mailsubscribers/trunk/action/unsubscribe_mailsubscriber.php

    r100547 r108107  
    6565                        $titre .= "<br /><br />" . bouton_action(_T('newsletter:bouton_unsubscribe'),
    6666                                        generer_action_auteur('confirm_unsubscribe_mailsubscriber',
    67                                                 mailsubscriber_base64url_encode($email) . "-$identifiant"));
     67                                                mailsubscriber_base64url_encode($email . ":$identifiant:".time())));
    6868                }
    6969                else {
  • _plugins_/mailsubscribers/trunk/lang/mailsubscriber_fr.php

    r107538 r108107  
    105105        'texte_statut_refuse' => 'suspendue',
    106106        'texte_statut_valide' => 'active',
     107        'texte_vous_avez_clique_vraiment_tres_vite' => 'Vous avez cliqué vraiment très vite sur le bouton de confirmation. Êtes-vous réellement humain ?',
    107108        'titre_bonjour' => 'Bonjour',
    108109        'titre_export_mailsubscribers' => 'Exporter les inscrits',
  • _plugins_/mailsubscribers/trunk/paquet.xml

    r108106 r108107  
    22        prefix="mailsubscribers"
    33        categorie="communication"
    4         version="2.6.1"
     4        version="2.6.2"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.