La défense furtive de Facebook : neutraliser les outils de développement
Malgré la conviction que la désactivation des outils de développement intégrés au navigateur est une impossibilité technique, Facebook a a défié cette notion. Pour lutter contre les escroqueries généralisées et le piratage malveillant de comptes, Facebook a mis en place une solution audacieuse.
Comment Facebook a réalisé l'impossible
L'approche de Facebook consiste à intercepter toutes les commandes de la console via des extraits de code enveloppés au sein d’une fonction Chrome spécialisée. En modifiant cette fonction, Facebook rend effectivement toute entrée de console nulle et non avenue.
Détails techniques
Chrome encapsule les commandes de la console dans la structure suivante :
with ((console && console._commandLineAPI) || {}) { <code goes here> }
Facebook redéfinit ingénieusement la propriété console._commandLineAPI pour déclencher une exception :
Object.defineProperty(console, '_commandLineAPI', { get : function() { throw 'Nooo!' } })
Bien que cela ne bloque pas entièrement la console, il constitue le cœur du mécanisme de défense.
Sécurité vs fonctionnalité
Bien que les mesures de piratage côté client puissent être problématiques, la stratégie de Facebook cible spécifiquement les attaques d'ingénierie sociale dans lesquelles les utilisateurs exécutent sans le savoir du code JavaScript malveillant dans la console.
Épilogue
Malgré l'approche innovante de Facebook, l'équipe Chrome l'a classé comme un bug et a annulé la fonctionnalité. Cependant, Facebook a mis en place des mesures de protection supplémentaires pour protéger les utilisateurs contre les vulnérabilités self-xss.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!