Wie deaktiviert Facebook die integrierten Entwicklertools des Browsers?
Also offenbar wegen der jüngsten Betrügereien, die Entwickler-tools werden genutzt von Menschen, um das posten von spam und sogar "hacken" von accounts. Facebook blockiert hat, die Entwickler-Werkzeuge, und ich kann auch nicht über die Konsole.
Wie haben Sie das gemacht?? Ein Stack-Überlauf post behauptet, dass es nicht möglich ist,aber Facebook hat bewiesen, falsch.
Gehen Sie einfach auf Facebook und öffnen Sie die developer tools, geben Sie ein Zeichen in der Konsole, und diese Warnung erscheint. Egal, was Sie setzen in, es wird nicht durchgeführt.
Wie ist das möglich?
Werden Sie sogar blockiert, auto-Vervollständigung in der Konsole:
InformationsquelleAutor der Frage Derek 朕會功夫 | 2014-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin ein Sicherheits-Ingenieur bei Facebook und das ist meine Schuld. Wir testen dies für einige Benutzer zu sehen, wenn es kann verlangsamen einige Angriffe, bei denen Nutzer dazu verleitet, einfügen (bösartige) JavaScript-code in der browser-Konsole.
Nur um klar zu sein: der Versuch zu verhindern, dass Hacker auf client-Seite ist ein schlechte Idee im Allgemeinen;
dies ist zum Schutz gegen eine bestimmte social-engineering-Angriff.
Wenn Sie endete in der test-Gruppe und sind genervt von dieser, sorry.
Ich habe versucht, die alte opt-out-Seite (jetzt Hilfe-Seite) so einfach wie möglich, während immer noch unheimlich genug, um mindestens einige der Opfer.
Ist der aktuelle code ist ziemlich ähnlich zu @joeldixon66 link; uns ist ein wenig komplizierter, für keinen guten Grund.
Chrom umschließt alle Konsolen-code in
... also die Seite neu definiert
console._commandLineAPI
zu werfen:Dies ist nicht genug (versuchen Sie es!)aber das ist die
Haupt-trick.
Epilog: Das Chrome-team hat beschlossen, dass ein Sieg über die Konsole vom user-side JS ein Fehler war und das Problemwas diese Technik unwirksam. Danach, zusätzlichen Schutz Hinzugefügt wurde Schutz der Benutzer von self-xss.
InformationsquelleAutor der Antwort Alf
Ich sich die Facebook die Konsole buster script mit Chrome developer tools. Hier ist das Skript mit geringfügigen änderungen für eine bessere Lesbarkeit. Ich habe entfernt die bits, die ich nicht verstehen konnte:
Mit dabei, die Konsole auto-complete schlägt im hintergrund fehl, während Aussagen, die eingegeben in der console wird nicht ausgeführt (Ausnahme protokolliert werden).
Referenzen:
InformationsquelleAutor der Antwort Salman A
Ich konnte es nicht auslösen, dass auf jeder Seite. Eine robustere version dieses es tun würde:
Zur Formatierung der Ausgabe: Farben in der JavaScript-Konsole
Bearbeiten Denken @joeldixon66 hat die richtige Idee: Deaktivieren Sie die Ausführung von JavaScript in der Konsole « ::: KSpace :::
InformationsquelleAutor der Antwort Will
Neben der Neudefinition
console._commandLineAPI
es gibt einige andere Möglichkeiten, um in zu brechen InjectedScriptHost auf WebKit-Browsern zu verhindern, oder ändern Sie die Bewertung von Ausdrücken, eingetragen in der Entwickler-Konsole.
Edit:
Chrome behoben hat dies in einem früheren release. - das muss gewesen sein, bevor im Februar 2015 habe ich die Kernaussage damals
So, hier ist eine andere Möglichkeit. Dieses mal haben wir Haken in eine Ebene über, direkt in
InjectedScript
eher alsInjectedScriptHost
im Gegensatz zu der vorherigen version.Die ist ganz nett, da kann man direkt monkey patch
InjectedScript._evaluateAndWrap
anstatt verlassen sich aufInjectedScriptHost.evaluate
so, dass Sie mehr feinkörnige Kontrolle über das, was passieren soll.Anderen ziemlich interessante Sache ist, dass wir Sie abfangen können den internen Ergebnis, wenn ein Ausdruck ausgewertet wird, und zurück, dass dem Benutzer anstelle des normalen Verhaltens.
Hier ist der code, das macht genau das, die Rückkehr der internen Ergebnis, wenn ein Benutzer prüft etwas in der Konsole.
Es ist ein bisschen verbose, aber ich dachte, ich einige Kommentare in es
Also normalerweise, wenn ein Benutzer, zum Beispiel, wertet
[1,2,3,4]
würden Sie erwarten, dass die folgende Ausgabe:Nach monkeypatching
InjectedScript._evaluateAndWrap
Bewertung der gleiche Ausdruck ist, gibt die folgende Ausgabe:Als Sie sehen den kleinen linken Pfeil, der angibt, Ausgang, ist immer noch da, aber dieses mal bekommen wir ein Objekt. Wo ist das Ergebnis des Ausdrucks, array
[1,2,3,4]
wird dargestellt als ein Objekt mit allen seinen Eigenschaften beschrieben.Empfehle ich versuchen, dies zu bewerten und Ausdruck, einschließlich derjenigen, die Fehler erzeugen. Es ist sehr interessant.
Darüber hinaus werfen Sie einen Blick auf die
is
-InjectedScriptHost
- Objekt. Es gibt einige Methoden, um mit zu spielen und bekommen ein wenig Einblick in die Interna der Inspektor.Natürlich könnte man abfangen, dass alle Informationen und noch zurück, dem ursprünglichen Ergebnis an den Benutzer.
Ersetzen Sie einfach die return-Anweisung in den else-Pfad durch einen
console.log (res)
nach einerreturn res
. Dann würden Sie am Ende mit den folgenden.Ende Bearbeiten
Dies ist die Vorherige version wurde behoben, durch Google. Somit keine Möglichkeit mehr.
Einer der es Einhängen inFunction.prototype.call
Chrome wertet den eingegebenen Ausdruck voncall
TEN seiner Funktion eval mitInjectedScriptHost
alsthisArg
var result = evalFunction.call(object, expression);
Gegeben, die Sie hören können, für die
thisArg
voncall
wirdevaluate
und erhalten Sie einen Verweis auf das erste argument (InjectedScriptHost
)Kann man z.B. einen Fehler ausgeben, dass die Auswertung wurde abgelehnt.
Hier ist ein Beispiel, wo der eingegebene Ausdruck wird weitergeleitet, um eine CoffeeScript-compiler vor der übergabe an die
evaluate
- Funktion.InformationsquelleAutor der Antwort Moritz Roessler
Netflix auch implementiert dieses feature
Sie nur überschreiben
console._commandLineAPI
zu werfen security Fehler.InformationsquelleAutor der Antwort Fizer Khan
Dies ist tatsächlich möglich, da Facebook in der Lage war, es zu tun.
Gut, nicht die tatsächliche web-Entwickler-tools, aber die Ausführung von Javascript in der Konsole.
Sehen: Wie funktioniert Facebook deaktivieren, den browser integrierten Entwicklertools?
Diese wirklich nicht viel tun, aber da gibt es andere Möglichkeiten, zu umgehen, diese Art von client-side security.
Wenn Sie sagen, es ist client-side, es passiert außerhalb der Kontrolle der server, also es gibt nicht viel Sie dagegen tun können. Wenn Sie sich Fragen, warum Facebook immer noch nicht, dies ist nicht wirklich für die Sicherheit, sondern auch Schutz vor normalen Benutzern, die nicht wissen, javascript-Ausführung von code (, dass Sie nicht wissen, wie zu Lesen ist) in der Konsole. Dies ist Häufig für Websites, die Versprechen, auto-liker-service oder andere Facebook-Funktionalität bots, nachdem Sie tun, was Sie Sie bitten, zu tun, wo in den meisten Fällen, Sie geben Ihnen einen Ausschnitt von javascript ausführen in der Konsole.
Wenn Sie nicht so viel Benutzer wie Facebook, dann glaube ich nicht, es gibt keine Notwendigkeit zu tun, was Facebook tut.
Selbst wenn Sie Javascript deaktivieren in der Konsole ausführen von javascript über die Adressleiste immer noch möglich ist.
und wenn der browser deaktiviert javascript in die Adressleiste (Wenn Sie fügen Sie code auf der Adressleiste in Google Chrome, es löscht den Satz 'javascript:') einfügen von javascript-Code in einem der links über element untersuchen ist weiterhin möglich.
Prüfen der Anker:
Einfügen von code in href:
Strich ist das server-seitige Validierung und Sicherheit sollten die ersten sein, führen Sie dann die client-Seite nach.
InformationsquelleAutor der Antwort Jomar Sevillejo
Chrome sich viel verändert seit der Zeit facebook deaktivieren Konsole...
Stand März 2017 dieses nicht mehr funktioniert.
Besten können Sie tun ist, deaktivieren Sie einige der console-Funktionen, Beispiel:
InformationsquelleAutor der Antwort Alpha2k
Mein einfacher Weg, aber es kann helfen, für weitere Variationen zu diesem Thema.
Liste aller Methoden, und verändern Sie nutzlos.
InformationsquelleAutor der Antwort Dusan Krstic
Dies ist nicht eine Sicherheitsmaßnahme für schwach-code, um unbeaufsichtigt gelassen werden. Bekomme immer eine dauerhafte Lösung zu schwach-code und sichern Sie sich Ihre websites ordnungsgemäß vor der Umsetzung dieser Strategie
Ist das beste tool weit nach meinem wissen wäre Sie mehrere javascript-Dateien, die einfach änderungen, die die Integrität der Seite wieder normal aktualisieren oder ersetzen Inhalte. Deaktivieren Sie dieses Entwickler-tool wäre nicht die beste Idee, da die Umgehung ist immer in Frage, da der code ist Teil des Browsers und nicht auf einem server Rendern, so könnte Sie geknackt werden.
Sollten Sie
js file one
Prüfung für<element>
änderungen auf wichtige Elemente undjs file two
undjs file three
zu prüfen, dass diese Datei vorhanden ist, der pro Periode Sie haben die volle Integrität wiederherstellen auf der Seite innerhalb der Frist.Nehmen wir ein Beispiel von den 4 Dateien und zeigen Sie, was ich meine.
index.html
mainfile.js
ps.js
ks.js
Stil.css
Nun, dies ist nur zu zeigen, dass es geht auf alle Dateien und tags aswell
Wenn du alle diese Dateien zusammen und bauen Sie den Beispiel sieht man die Funktion dieser Maßnahme. Dies wird verhindern, dass einige unvorhergesehene Injektionen sollten Sie es implementieren korrekt auf alle wichtigen Elemente, die in Ihre index-Datei vor allem bei der Arbeit mit PHP.
Warum ich wählte reload anstelle von ändern zurück zum normal-Wert pro Attribut ist die Tatsache, dass einige Angreifer hätten von einem anderen Teil der website, die bereits konfiguriert und bereit, und es vermindert code Betrag. Der laden wird entfernen Sie alle Angreifer ist harte Arbeit, und er wird wahrscheinlich spielen Sie irgendwo einfacher.
Noch ein Hinweis: Dies könnte zu einer Menge von code, so halten Sie es sauber und machen Sie sicher, dass Sie Definitionen an, wo Sie hingehören, um Sie zu Bearbeiten einfach in Zukunft. Auch stellen Sie die Sekunden, um Ihre bevorzugte Höhe als 1-Sekunden-Intervallen auf großen Seiten könnte drastische Auswirkungen auf älteren Computern Ihrer Besucher könnten mit
InformationsquelleAutor der Antwort
eine einfache Lösung!
InformationsquelleAutor der Antwort Mohmmad Ebrahimi Aval