+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2013
    Messages
    2 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : mars 2013
    Messages : 2 658
    Points : 56 402
    Points
    56 402

    Par défaut Chrome : les développeurs se servant de boîtes de dialogue JavaScript invités à aller vers des alternatives

    Chrome : les développeurs Web se servant de boîtes de dialogue JavaScript
    sont invités à se tourner vers des alternatives par sécurité

    En 1995, JavaScript a fait ses débuts sur la scène du développement Web, notamment avec ses méthodes :
    • alert() : qui permet d'afficher dans une boîte toute simple composée d'une fenêtre et d'un bouton OK le texte qu'on lui fournit en paramètre. Elle sert à avertir l’utilisateur ;
    • confirm() : qui est similaire à la méthode alert(), mais propose en plus du bouton OK l’option « Annuler ». Elle sert à confronter l’utilisateur à un choix ;
    • prompt() : qui fournit un moyen simple de récupérer une information provenant de l'utilisateur, on parle alors de boîte d'invite.

    Les ingénieurs de Chromium notent que « bien qu'elles (les méthodes) correspondent au JavaScript de cette époque, leur API synchrone est problématique pour les navigateurs modernes. Étant donné que le moteur JavaScript doit être mis en pause jusqu'à ce qu'une réponse utilisateur soit obtenue, les dialogues JavaScript sont modaux. Et parce que les dialogues sont modaux, ils sont souvent (et malheureusement) utilisés pour nuire à nos utilisateurs ».

    Les dialogues modaux enlèvent aux utilisateurs la possibilité d’interagir avec la page sans répondre au préalable à la boîte de dialogue. Il n’est même pas possible de fermer par exemple l’onglet sans avoir répondu à la boîte de dialogue.

    Une propriété qui a par exemple été utilisée en 2013 pour piéger des utilisateurs dans une boucle infinie jusqu’à ce que de l’argent soit versé. Les attaquants se sont fait passer pour le « Cyber Department » du FBI, indiquant aux cibles que le navigateur du système a été saisi et enregistré et que l'utilisateur devra payer des frais de 300 $.

    Pour que la demande paraisse plus légitime, l'avis affichait alors l’adresse IP de la victime ainsi que des informations comme sa ville et son État. Les cibles étaient invitées à payer en entrant les codes équivalents à une recharge de ce montant sur Green Dot MoneyPak (service de carte prépayée) dans le navigateur.


    Si l’utilisateur essaye de fermer la fenêtre, un avis apparaîtra, prétendant que le navigateur est verrouillé, que les données seront détenues et des procédures criminelles seront engagées contre lui, sauf s’il paie. Néanmoins, si l’utilisateur s’obstine à cliquer sur OK, un autre avis va s’afficher, lui demandant s’il est sûr de vouloir quitter la page avec des options pour quitter ou rester sur la page. Si l’utilisateur clique sur quitter, l'avertissement initial apparaîtra à nouveau et le processus recommence.

    Sur mobile, le phénomène est encore plus prononcé. L’année dernière, les chercheurs en sécurité de Malwarebytes ont indiqué avoir rencontré des pop-up indiquant que le dispositif Android d’un utilisateur était infecté. Une fois que l’utilisateur appuyait sur OK à la première boîte de dialogue, il était redirigé vers une page qui affichait une seconde boîte de dialogue lui indiquant qu’il s’agissait d’un Trojan et lui proposant de l’éliminer. En arrière-plan, les utilisateurs se faisaient voler des informations.

    Les chercheurs ont précisé que les utilisateurs peuvent désactiver JavaScript. Cependant, cela va également désactiver les fonctionnalités dépendantes de JavaScript sur d’autres sites. Aussi, pour résoudre cet abus de JavaScript dans le navigateur, l'équipe Chromium de Google a publié une proposition visant à éradiquer les boîtes de dialogue JavaScript.

    Les alternatives

    L’équipe assure qu’il en existe plusieurs pour remplacer ces trois méthodes JavaScript qui lancent des boîtes de dialogue. Pour notifier à l'utilisateur des événements (par exemple, les sites de calendrier), l'API Notifications devrait être utilisée. Pour obtenir l'entrée de l'utilisateur, l'élément HTML <dialog> doit être utilisé. Pour les PoC XSS, la console.log de devtool (document.origin) peut être utilisée.

    Ils ont ajouté « qu’en ce qui concerne onbeforeunload, il convient de noter que ce n'est déjà plus fiable. Comme l'indique Ilya Grigorik, “Vous ne pouvez pas compter sur les évènements pagehide, beforeunload et unload sur les plateformes mobiles”. Si vous devez enregistrer l'état, vous devez utiliser l'API Page Visibility ».

    Changements à venir

    Les ingénieurs ont d’abord rappelé que la capacité d'une page à générer une chaîne de caractères onbeforeunload a été supprimée de Chrome 51.

    Les méthodes de boîtes de dialogue JavaScript alert(), confirm() et prompt() sont en cours de changement : au lieu d’être modales, elles seront tout simplement rejetées lorsque leur onglet sera changé. Un comportement qui est déjà effectif sur les canaux Canary et Dev.

    À cause de ces changements, les ingénieurs recommandent aux développeurs web qui se servent des boîtes de dialogue de se tourner vers les alternatives qu’ils proposent afin de ne pas être affectés.

    Source : Chromium, Malwarebyte

    Voir aussi :

    Chrome 57 limite l'activité des onglets inactifs à 1 % par cœur de processeur, quel impact sur sa consommation en énergie électrique ?

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    4 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 4 244
    Points : 10 841
    Points
    10 841

    Par défaut

    Sur mobile c'est un enfer ces pub qui pop une alert() qui ne fait que revenir et dont tu ne peut pas te débarrasser !

    J'utilise pas mal le confirm() dans les backend avant par exemple de supprimer quelque chose. C'est une méthode rapide à mettre en place pour ajouter un niveau de confirmation quand on à pas besoin de truc joli.
    A la limite qu'il rend ces boites de dialogue moins contraignante c'est pas plus mal , tant que le fonctionnement général ne disparaît pas.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éprouvé

    Homme Profil pro
    Développeur Web
    Inscrit en
    octobre 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : octobre 2007
    Messages : 563
    Points : 964
    Points
    964

    Par défaut

    Marrant, tiens, que la solution de Google soit de les supprimer... alors que Firefox a réglé ce problème depuis des années.

    Les boîtes de dialogue y font partie de l'onglet et n'empêchent donc de fermer ce dernier, de passer à un autre onglet, etc.

    On a même une checkbox permettant de ne plus voir d'autres boites de dialogue.
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

  4. #4
    Membre éclairé Avatar de Alvaten
    Homme Profil pro
    Développeur Java / Grails
    Inscrit en
    novembre 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java / Grails
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2006
    Messages : 292
    Points : 750
    Points
    750

    Par défaut

    Pour obtenir l'entrée de l'utilisateur, l'élément HTML <dialog> doit être utilisé
    Le problème c'est que seul eux et opéra supportent ce tag à l'heure actuel.

  5. #5
    Membre actif

    Homme Profil pro
    Directeur de projet
    Inscrit en
    juillet 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2003
    Messages : 61
    Points : 209
    Points
    209

    Par défaut

    Ce n'est pas au développeur de résoudre ce problème, mais bien aux navigateurs. Chacun ses problèmes

  6. #6
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS
    Inscrit en
    avril 2013
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 1 340
    Points : 4 454
    Points
    4 454
    Billets dans le blog
    6

    Par défaut

    @Lcf.vs
    Quand on cherche la solution de facilité ça donne ce genre de chose

  7. #7
    Membre actif Avatar de shadypierre
    Profil pro
    Inscrit en
    février 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : février 2009
    Messages : 271
    Points : 259
    Points
    259

    Par défaut

    Citation Envoyé par grunk Voir le message
    J'utilise pas mal le confirm() dans les backend avant par exemple de supprimer quelque chose. C'est une méthode rapide à mettre en place pour ajouter un niveau de confirmation quand on à pas besoin de truc joli.
    Rapide peut être mais il s'agit bien souvent d'une très mauvaise pratique lorsque la suppression qui s'en suit est une requête GET.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2013
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2013
    Messages : 136
    Points : 452
    Points
    452

    Par défaut

    J'utilise pas mal le confirm() dans les backend avant par exemple de supprimer quelque chose. C'est une méthode rapide à mettre en place pour ajouter un niveau de confirmation quand on à pas besoin de truc joli.
    Rapide peut être mais il s'agit bien souvent d'une très mauvaise pratique lorsque la suppression qui s'en suit est une requête GET.
    ça change pas que tu peux faire un confirm de la soumission de formulaire pour du POST ..

  9. #9
    Membre éprouvé

    Homme Profil pro
    Développeur Web
    Inscrit en
    octobre 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : octobre 2007
    Messages : 563
    Points : 964
    Points
    964

    Par défaut

    Citation Envoyé par earhater Voir le message
    ça change pas que tu peux faire un confirm de la soumission de formulaire pour du POST ..
    Bah, pour ça, autant directement faire un appel ajax en console, alors
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    avril 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 88
    Points : 124
    Points
    124

    Par défaut

    Autre solution radicale : CTRL+ALT+SUP et tuer le navigateur ?

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 18
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2015
    Messages : 1
    Points : 3
    Points
    3

    Par défaut

    Personnellement, je pensais que c'était plutôt au navigateur de gérer ce genre de problèmes car à mon avis, il serait beaucoup plus simple que l'on change la manière dont l’interpréteur gere un alert plutôt que de demander à tous les développeurs d'arrêter de les utiliser surtout si on prend en compte les milliers de sites les utilisant

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur & Scrum Master
    Inscrit en
    août 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur & Scrum Master
    Secteur : Industrie

    Informations forums :
    Inscription : août 2010
    Messages : 87
    Points : 61
    Points
    61

    Par défaut Google # pétition contre la fermeture des Dialog Js

    Google veut nous forcer la main mais j'espère bien qu'ils vont échouer. S'il y a une pétition contre, faites-la circuler svp.

  13. #13
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2013
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2013
    Messages : 271
    Points : 708
    Points
    708

    Par défaut

    J'utilise les alert pour moi, pour déboguer le JavaScript.
    onError ...

    Mes utilisateurs n'aiment pas les alert et on prit goût aux appels AJAX.

    Et même pour les utilisateurs non-voyants j'utilise la propriété A RIA, qui vocalise les zones lives à chaques changement.
    <div role="region" aria-live="polite" aria atomic="true" aria-busy="false">
    ....

Discussions similaires

  1. Code html dans une boîte de dialogue Javascript
    Par zilbou dans le forum JavaScript
    Réponses: 5
    Dernier message: 22/05/2016, 20h21
  2. Boîte de dialogue javascript personnalisée ?
    Par 3psilOn dans le forum JavaScript
    Réponses: 13
    Dernier message: 18/03/2013, 17h13
  3. Réponses: 17
    Dernier message: 25/08/2010, 09h08
  4. Réponses: 9
    Dernier message: 20/08/2009, 14h19
  5. Réponses: 0
    Dernier message: 18/08/2009, 23h25

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