Ermitteln Sie das Symbol für kaputtes Schloss (gemischter sicherer / unsicherer Inhalt) aus Javascript

8

Ich arbeite daran, eine Website unter HTTPS voll funktionsfähig zu machen. In diesem Zusammenhang möchte ich sicherstellen, dass wir niemals "das Schloss aufbrechen". Das heißt, wir sollten niemals Nicht-SSL-Inhalte auf einer SSL-Seite laden, was je nach Browser eine Warnung oder einen anderen Indikator auslösen kann. Um dies zu überprüfen, möchte ich zwei Dinge tun:

  1. Schreiben Selenium-Tests, die verschiedene Aktionen verifizieren, brechen die Sperre nicht.
  2. Protokollierungscode in JS schreiben, der während einer Benutzersitzung überprüft, ob die Sperre unterbrochen ist, und sich bei dem Server anmelden, falls dies der Fall ist.

Gibt es eine Methode, die in JS verwendet werden kann, um den fehlerhaften / nicht unterbrochenen Zustand des HTTPS-Sperrsymbols des Browsers zu überprüfen? Oder gleichwertig, der gemischte / nicht gemischte Zustand des Inhalts der aktuellen Seite?

    
jsha 09.11.2010, 00:43
quelle

3 Antworten

4

Es sieht so aus, als ob Mozillas CSP (Content Security Policy), implementiert in Firefox 4, dies teilweise löst. Es kann den auf Ihrer Site geladenen Inhalt auf nur SSL-Ports beschränken und einen Bericht an eine angegebene URL zurücksenden, wenn der Browser versucht, etwas zu laden, das nicht SSL ist. Es ist nur in Firefox 4 bisher, aber wir haben genug FF4 Benutzer, dass dies als ein anständiges Frühwarnsystem dienen kann.

Update 8/15: CSP wird auch in Chrome unterstützt. Ich habe das effektiv in der Produktion als Frühwarnsystem für Mixed-Content-Fehler verwendet. Es sieht ungefähr so ​​aus:

X-WebKit-CSP-Nur-Bericht: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri / report_mixed_content; img-src https: // * Daten:; frame-src https: // * über: javascript:

Beachten Sie, dass es sich hierbei um einen sehr permissiven Header handelt, der nur gemischte Content-Fehler erfassen soll. Sie möchten die X-Content-Sicherheitsrichtlinie für Firefox verwenden.

Wenn Sie dies für einen Prozentsatz Ihrer Benutzer bereitstellen, erhalten Sie Protokolle, wenn Sie versehentlich einen Fehler mit gemischten Inhalten auslösen. Um dies für Selenium-Tests wirksam werden zu lassen, müssten Sie einen speziellen Testmodus-Handler für / report_mixed_content hinzufügen, der den Test fehlschlägt.

Für interne Benutzer habe ich dies immer im Erzwingungsmodus aktiviert (entferne den -Report-Only). Dies hilft sicherzustellen, dass andere Entwickler in neuen Features Fehler bei gemischten Inhalten bemerken, bevor sie bereitgestellt werden.

    
jsha 17.11.2010, 22:04
quelle
2

Sie können das gesamte DOM iterieren und alle Links überprüfen, um sicherzustellen, dass sie https:// sind.

    
rook 09.11.2010 01:36
quelle
0

Sie können Mixed Content-Scan verwenden, ein PHP-CLI-Skript, das ich geschrieben habe und das Ihre Site nach gemischten Inhalten durchsucht.

Führen Sie dieses Skript über die Befehlszeilenschnittstelle aus:

%Vor%

Das Skript selbst beginnt mit dem Scannen und gibt während des Laufs Feedback. Wenn gemischter Inhalt gefunden wird, werden die URLs, die Warnungen zu gemischten Inhalten verursachen, auf dem Bildschirm angezeigt:

%Vor%

Es ist auch möglich, eine Datei mit einer Liste von zu scannenden URLs zu übergeben und die Ausgabe in JSON zu ändern. Ignoriere Muster werden ebenfalls unterstützt.

    
Bramus 11.02.2015 13:30
quelle