Ich bin gerade dabei, ein Browser-Hilfsobjekt zu erstellen.
Eines der Dinge, die das BHO zu tun hat, ist das Erstellen von standortübergreifenden Anfragen, die die domänenübergreifende Richtlinie umgehen.
Dafür gebe ich eine __MyBHONameSpace.Request
-Methode aus, die WebClient
intern verwendet.
Es ist mir jedoch in den Sinn gekommen, dass jeder, der mein BHO benutzt, jetzt überall eine CSRF-Sicherheitslücke hat, da ein schlauer Angreifer nun beliebige Anfragen von den Computern meiner Kunden ausführen kann.
Gibt es eine clevere Möglichkeit, dies zu mildern?
Die einzige Möglichkeit zum vollständigen Schutz vor solchen Angriffen besteht darin, den Ausführungskontext des JavaScript der Seite und den JavaScript-Code Ihrer Erweiterung zu trennen.
Als ich dieses Problem untersuchte, fand ich, dass Internet Explorer eine Möglichkeit bietet, einen solchen Kontext zu erstellen, nämlich über IAktivschrift . Ich habe diese Lösung jedoch aus folgenden Gründen nicht implementiert:
IActiveScript
) fehlerfrei und zukunftssicher wäre (siehe 2), habe ich beschlossen, die Idee fallen zu lassen. Was ich stattdessen getan habe, ist:
localStorage
auf einer bestimmten Domäne verwenden und mit dieser Domäne über eine <iframe>
kommunizieren, indem er die postMessage API. Diese Methode funktioniert über alle Browser, nicht nur IE mit meinem BHO installiert, so dass es unwahrscheinlich ist, dass Angreifer Zeit bei der Reverse-Engineering meines BHO zur Verwendung der API widmen, wenn es eine Methode gibt, die bereits in allen modernen Browsern funktioniert (IE8 + ). https://trusted.example.com
auszuführen und den Benutzer dazu zu verleiten, https://trusted.example.com
zu besuchen. "In nativem Code erzwingen" bedeutet nicht "hard-code in nativem Code". Sie können weiterhin Aktualisierungen bereitstellen, die Metadaten und den JavaScript-Code enthalten. MSVC ++ (2010) unterstützt ECMAScript-artige reguläre Ausdrücke <regex>
, was die Implementierung einer Regex-basierten Whitelist sehr einfach macht.
Wenn Sie IActiveScript
verwenden möchten, finden Sie Beispielcode im Quellcode von ceee , Gears (beide eingestellt) oder jedes andere Projekt, das versucht, die Skriptumgebung von IE zu verbessern.
Tags und Links cross-domain bho