Wie kann ich das überschreiben der Origin-header in Chrome, wenn eine Verbindung zu einem WebSocket?
Ich versuche eine Verbindung zu einem externen web-socket-server, welcher nicht laufen durch mich. Ich möchte schließen, um es von einem localhost javascript-Datei, also den origin-header hat den Wert null.
Ich verstehe, dass dies eine Maßnahme gegen cross-site-forgery. Allerdings, da bin ich auf localhost, ich sollte in der Lage sein, um fake diese, indem man Chrome an, senden Sie eine benutzerdefinierte Origin-header.
Ist es möglich? (wenn ich brauche eine extension, die ist in Ordnung)
Wenn nicht, was ist meine beste option zur Erreichung der oben genannten? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Web-Seiten können nicht ändern den Origin-header, aber Erweiterungen ändern können in den Kopfzeilen der Anfrage über die chrome.webRequest API. Aber
ws://
undwss://
werden nicht unterstützt von dieser API, so dass diese nicht helfen, es sei denn, der server unterstützt auch andere Mittel der Kommunikation über http(s) (z.B. long-polling).Gibt es noch eine Lösung wenn: laden Sie Einfach eine (bekannte) Webseite an der gewünschten Ursprung in einem iframe (z.B.
https://example.com/favicon.ico
oderhttps://example.com/robots.txt
) und eine Inhalt Skript zum öffnen des WebSocket-von dort aus.Den
Origin
- header ist ein Header, die automatisch festgelegt werden, indem der user-agent (als Teil der browser-Implementierung) und kann nicht verändert werden programmgesteuert oder durch Erweiterungen. Dies macht Sinn, da web-service-Anbieter können nicht zulassen, zufällige verbindungen von localhosts.Können Sie eine Verbindung zu einem externen WebSocket-nur wenn Ihr es von einem host ausdrücklich akzeptiert, indem Sie die web-service-provider. Viele Titel kann man nicht trauen (weil Sie überschrieben werden können), aber dies ist nicht der Fall mit
Origin
denn Sie bietet Sicherheit nicht nur für die Nutzer, aber auch für Dienstleister gegen unerwünschte verbindungen.Soweit ich weiß, das wird nicht möglich sein, es würde zu brechen, die Sicherheit Schutz gegen CSRF-Angriffe in Chrom.
Wenn Sie in der Lage waren zu tun, dass das ganze Konzept des XHR-würde auseinander fallen.
Hier ist eine Erweiterung, die Sie verwenden können, um zu manipulieren header-on-the-fly, aber so weit ich habe nicht in der Lage gewesen, um es zu manipulieren, socket Header.
Aussehen hier wenn Sie möchten, um mehr darüber zu Lesen.
Aber das bedeutet nicht aufhören Sie von der Umsetzung Ihrer eigenen client (anstelle von chrome), wo Sie buchstäblich senden was auch immer-Headern, die Sie wollen, nicht sicher, ob dies Ihnen hilft, sorry.
Es hängt davon ab, wie Sie wollen verwenden Sie Ihren chrome-browser. Da Sie erwähnen, localhost, ich nehme an, Sie entwickeln und für eine Art der Schaben. Ich schlage vor, dass Sie erkunden Chrome DevTools-Protokoll die render (fast) jede Art von Schutz nutzlos, weil Sie von einem echten browser. CORS, Herkunft, Plätzchen oder beliebige header-Wert unter Kontrolle zu sein, und Sie können senden Sie eine benutzerdefinierte Kopfzeile für xhr/websocket request(s). Wenn Sie wollen, um zu manipulieren in einem fortgeschrittenen Art und Weise können Sie Netzwerk.continueInterceptedRequest. Könnten Sie nur wollen, starten Sie chrome über Parameter wie "--disable-web-security, --disable-xss-auditor, --disable-client-side-phishing-Erkennung, --allow-insecure-localhost" mehr über diese Optionen zu peter.sh. Aber die Letzte option, ein plugin benötigen, um vorzutäuschen, um die origin-header, so empfehle ich die erste option.