IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Protection de numéro de téléphone


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Protection de numéro de téléphone
    Bonjour à tous,

    Dans la discussion document.referrer pour tester page et rediriger si pas du même domaine, j'ai posé cette question relative à PHP, et on m'a logiquement redirigé vers la création d'un nouveau sujet

    Voici ce que je demandais :

    Je profite de ce post pour savoir s'il existe une alternative PHP à un code javascript que j'utilise : on clique sur un texte, cela affiche le numéro de téléphone qui est encodé en base64 dans le code source. le code détecte si c'est un android et rend le lien cliquable, et si non se contente d'afficher le téléphone sans lien. J'utilise ce code pour limiter le spam sur mon numéro professionnel… actuellement ma solution noscript est un qrcode… si je peux faire une solution plus simple et éliminant moins de monde en ne m'exposant pas au spam, je suis vraiment intéressé
    Merci de vos réponses
    Bonne soirée

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonsoir !
    Pour commencer, un petit avertissement : l’encodage en base 64 n’est pas un chiffrement, donc la donnée n’est pas vraiment protégée. Un robot relativement sophistiqué pourrait détecter qu’il s’agit de base 64 et décoder l’information.

    Cela dit, il n’est pas rare de voir des informations représentées dans des images. On peut voir ça sur les enregistrements de whois.com, voici un exemple : dans la partie « Registrant Contact », tu peux voir que la partie gauche de l’adresse email est en réalité une image – on ne peut pas sélectionner le texte.

    PHP propose plusieurs bibliothèques de traitement et de génération d’images.
    Bien sûr, les robots capables de reconnaissance optique existent, et pour être honnête je ne sais pas si ça protège beaucoup mieux que la base 64. Je donne juste l’information. Soyons réalistes : les pirates vont au plus efficace, ils n’envoient pas leurs robots décoder au pif des chaînes en base 64 ou des images. Donc à moins que ton site fasse l’objet d’une attention particulière, tu es relativement à l’abri, que tu choisisses l’une ou l’autre de ces solutions.

    Pour répondre concrètement à ta question : tu sembles avoir déjà une technique basée sur <noscript>. Pour détecter si le client est un appareil Android, j’ai cherché un peu, et apparemment le moyen le plus répandu c’est d’analyser la chaîne userAgent. Voir cet article (en anglais) de David Walsh.
    … Cette solution ne me satisfait pas complètement, étant donné que le client peut mentir à propos de sa userAgent, par exemple avec une extension. Mais si l’utilisateur veut contrôler les informations envoyées par son navigateur, il a de bonnes raisons, et il faut respecter son choix.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Bonjour Watilin

    C'est vrai que la base 64, quand on connait la clé d'encodage est déchiffrable très facilement par un robot, c'est pourquoi j'ai parsé le numéro de téléphone dans le désordre dans des variables et les ai ensuite réassemblé dans le bon ordre, en plus j'ai mis des variables « parasites » c'est à dire non reprise dans le code final, histoire de mieux protéger le numéro… Ce n'est pas infranchissable, mais en lisant le code source et en se contentant de prendre dans l'ordre on a des séquences ne donnant pas un numéro de téléphone donc.

    Pour Android, en effet je suis sur un userAgent qui n'est pas fiable si on utilise un switch, mais je n'ai pas trouvé mieux, et comme tu le dis, il faut respecter le choix de l'utilisateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var ua = navigator.userAgent.toLowerCase();
    var isAndroid = ua.indexOf("android") > -1; 
    if(isAndroid) {
    function show(parentElement){
    Dans ma solution <noscript> je pourrais coupler le QRCode avec une image en effet, ça serait plus accessible, car tout le monde ne peut pas lire les QRCode…

    Bon dimanche

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    @januor

    J'avais pensé à un système similaire à celui que tu décris mais en fait je pense que les robots analysent le rendu tel qu'il est dans la mémoire du navigateur. Donc une fois que le DOM est rempli rien n'empêche d'aller rechercher certaines balises. Donc si tu recomposes les informations et qu'elles apparaissent "en clair" alors tu as seulement perdu du temps.
    Par contre je ne pense pas qu'ils analysent une page comme elle apparaît à un humain et qu'un système de décomposition de l'information devrait suffire.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
     
    <span>0</span>
    <span>8</span>
    <span>-</span>
    <span>9</span>
    <span>8</span>
    <span>-</span>
    <span>7</span>
    <span>0</span>
    <span>-</span>
    <span>2</span>
    <span>4</span>
    <span>-</span>
    <span>1</span>
    <span>0</span>
    <div>
    <p style="display:inline">0</p>
    <p style="display:inline">8</p>
    <p style="display:inline">-</p>
    <p style="display:inline">9</p>
    <p style="display:inline">8</p>
    <p style="display:inline">-</p>
    <p style="display:inline">7</p>
    <p style="display:inline">0</p>
    <p style="display:inline">-</p>
    <p style="display:inline">2</p>
    <p style="display:inline">4</p>
    <p style="display:inline">-</p>
    <p style="display:inline">1</p>
    <p style="display:inline">0</p>
    </div>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Bonjour Badaze,
    C'est un peu ce que j'ai fait, en rajoutant la base64

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <div id="rdv">
    	<a onclick="show(this);" >Prendre rendez-vous</a>
    	<script>
                    var klfjgdkf="MDA="; 
                    var kldfhghdkf="MDE="; 
                    var ksdgfhds="MDA=";  
                    var jdhf="MDY=";  
                    var pkldfk="MDE="; 
                    var jsdkf="MDA="; 
                    var sqdg="MDA="; 
                    var g="&nbsp;";
                    var s = window.atob(klfjgdkf);
                    var I = window.atob(ksdgfhds);
                    var G = window.atob(kldfhghdkf);
                    var p = window.atob(jsdkf);
                    var t = window.atob(sqdg);
                    var pihurtrgz = (G + g + s + g + I + g + t + g + p);
                    var mldksflk = (G + s + I + t + p);
                    var ua = navigator.userAgent.toLowerCase();
                    var isAndroid = ua.indexOf("android") > -1; 
                    if(isAndroid) {
                                    function show(parentElement){
                                         var Elm = document.createElement('a');
                                         Elm.href = "tel:" + mldksflk ;
                                         Elm.innerHTML = pihurtrgz; 
                                         parentElement.style.display = "none"; 
                                         parentElement.parentNode.insertBefore(Elm, parentElement.nextSibling);
                                     } 
                    }
                    else {
                                    function show(parentElement){
                                            var Elm = document.createElement('span');
                                            parentElement.parentNode.insertBefore(Elm, parentElement.nextSibling);
                                            var Elm = document.createElement('span');
                                            Elm.innerHTML = pihurtrgz;
                                            parentElement.style.display = "none";
                                            parentElement.parentNode.insertBefore(Elm, parentElement.nextSibling);  
                                     } 
                    }
    script>
    <noscript></noscript>

    et la balise noscript, en CSS :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    noscript{
    		background:url(img/noscript.svg) no-repeat;
    		background-size:100px;
    		height:100px;
    		width:100px;
    		}
    Dans l'idée pour éviter un scan des images par lien, et non dans le navigateur, on pourrait faire un noscript::before et noscript::after en mettant une image coupée en deux, ce qui empêcherait la lecture en 1 image du numéro de téléphone…

    C'est se donner du mal pour lutter contre le spam…

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut
    Salut

    Ligne 40, script>
    </script>, en programmation, comme dans bien d'autres domaines d’ailleurs, il faut être très précis.

    Les balises <noscript></noscript> servent a donner une indication pour les personnes ayant désactivées JavaScript, donc on met du texte d'information entre ces balises, sinon elles ne servent à rien, donc deviennent inutiles et on s'en passe.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre à l'essai
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Pour la ligne 40, dans le code de la page html j'ai bien </script>, par contre sur le forum, j'ai coupé trop de caractères en voulant réduire l'indentation initiale créée sous Geany…

    Pour <noscript>, via le CSS j'ai mis en image une solution alternative, un QRCode, cela ne convient pas ?

    Bonne journée

Discussions similaires

  1. Récupérer le numéro de téléphone entrant
    Par louisss dans le forum Access
    Réponses: 23
    Dernier message: 26/07/2023, 18h21
  2. récuperation d'un numéro de téléphone
    Par herzleid dans le forum Delphi
    Réponses: 4
    Dernier message: 17/07/2007, 09h25
  3. Réponses: 3
    Dernier message: 26/07/2005, 16h16
  4. Identification de numéros de téléphone
    Par sfxElrick dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 17/03/2005, 18h40
  5. Insérer un numéro de téléphone
    Par Fleep dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/10/2004, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo