Überprüfen ob Browser SSL unterstützt
Melanie
- php
0 Candid Dauth0 Melanie0 XaraX- javascript
0 Melanie0 Alexander Brock0 Melanie0 XaraX-1 Candid Dauth
0 XaraX
Hallo,
gibt es eine Möglichkeit zu überprüfen, ob der Browser eine SSL-Verbindung unterstützt?
Möchte mir damit eine Umleitung in PHP basteln ...
Vielen lieben Dank,
Melanie
Heißa, Melanie,
gibt es eine Möglichkeit zu überprüfen, ob der Browser eine SSL-Verbindung unterstützt?
Nein. Am besten, du bietest dem Benutzer die Möglichkeit, SSL für sich abzuschalten. So mache ich das immer, ich speichere die Information zusätzlich als Cookie, damit der Benutzer das beim nächsten Seitenaufruf nicht wieder neu einstellen muss.
Gautera!
Grüße aus Biberach Riss,
Candid Dauth
hi,
Nein. Am besten, du bietest dem Benutzer die Möglichkeit, SSL für sich abzuschalten. So mache ich das immer, ich speichere die Information zusätzlich als Cookie, damit der Benutzer das beim nächsten Seitenaufruf nicht wieder neu einstellen muss.
danke - dachte das es da irgendeine Möglichkeit gibt. Schade, ich nehme an auch mir Java läuft nichts.
Bis dann ...
Hallo Melanie,
es ist nicht zu 100% umzusetzen. Nur (schätzungsweise) 99% aller vorkommenden Browser und deren Möglichkeiten werden abgedeckt.
Beispiel JavaScript:
<!-- ... -->
<script type="text/x-javascript">
var b=0
function init(){
if(b==1) alert("Sie haben einen tollen Browser")
else alert("Schließen sie die Schrottanwendung!")
}
</script>
<script type="text/x-javascript" charset="iso-8859-1" src="https://melanie.tom/ssl.js"/>
<!-- ... -->
<body onload="init()">
<!-- ... -->
// Inhalt ssl.js
var b=1
// ende
Serverseitig ist dies, in dem Du eine Session initiierst, möglich.
Dreh- und Angelpunkt dieser Metode ist und bleibt das Laden zusätzlicher Sourcen (Bilder/separate StyleSheets oder JavaScripts) zu einem Dokumen (und daß Sourcen, die über nicht implementierte Protokolle zu erreichen wären, nicht geladen werden). Nicht jeder Browser macht dies! Wenn sich die Frage nur um ein privates Web dreht, wo die Besucher (überspitzt) nach "Schema F" AOL und IE nutzen, kannst Du also eine Unterscheidung betreiben.
Gruß aus Berlin!
eddi
Hallo
Serverseitig ist dies, in dem Du eine Session initiierst, möglich.
Wenn ich Deine Methode serverseitig mache (das wäre mir lieber), dann ruft aber doch der Server die externe Quelle auf und das hat dann mit dem Browser nichts zu tun, oder?
Habe mal mit phpinfo() die Statusseiten vergleichen ... da gibt es einen Unterschied (und sicher noch andere), wenn ich mit http oder mit https aufrufe:
HTTP Headers Information -> HTTP Response Headers
bei http:
Connection Keep-Alive
Transfer-Encoding chunked
bei https:
Connection close
Transfer-Encoding [leer]
Kann ich das nicht irgendwie nutzen, d.h. kann ich mir nicht diese Variabel holen und dann sagen wenn Connection == close, dann ist schon https, wenn nicht, dann zeige Hinweis an ...
Danke,
Melanie
Hallo Freunde des gehobenen Forumsgenusses,
bei http:
Connection Keep-Alive
Transfer-Encoding chunkedbei https:
Connection close
Transfer-Encoding [leer]Kann ich das nicht irgendwie nutzen
Nein, das hat mit SSL nichts zu tun.
Wenn bei "Keep-Alive" werden alle Resourcen
über eine TCP-Verbindung übertregen, sonst
wird für jede Resource eine eigene Verbindung
aufgebaut.
Gruß
Alexander Brock
Hallo Alexander,
hast Du evtl. einen Tipp für mich, wie ich das dann umsetze?
Also prinzipiell soll die Seite NUR per HTTPS zu erreichen sein, wenn allerdings ein Browser das nicht kann oder ein Land das nicht erlaubt (so etwas gibt es ja) oder ein Firmennetzwerk das nicht erlaubt, dann soll die http-Version geöffnet werden.
Das Ganze möglichst ohne dass der User das bemerkt bzw. ohne dass er irgendwo klicken muss - in der Art wie: wenn sie unsere verschlüsselten Seiten sehen wollen, klicken Sie hier ...
Die Methode mit Javascript gefällt mir nicht so gut. Das es keine 100% Lösung gibt, kann ich mir schon denken, aber was meinst Du bzw. was meint Ihre wäre so gut wie 100% möglich?
Lieben Gruss und Danke,
Melanie
Hallo Melanie,
Du setzt bei Deinen Überlegungen völlig falsch an. Wer Daten via HTTP beziehen will wird allermeistens an Port 80 beim Server anfragen und nicht am Port 443 (HTTPS). Somit ist nach wie vor grundsätzlich - ja essentiell - das, was Candid schrieb, der einfachste, beste und empfehlenswerteste Weg.
Unterschwellig wird deutlich (wenn Du Dir schon Gedanken über Länderbeschränkungen/Frimennetzwerke machst), daß es nicht um eine private Präsenz geht. Bei solch weiterblickenden Überlegungen frage ich mich, warum Du dann nach einer Lösung mit Java(-Script) gefragt hast.
Und im Übrigen hat, wenn Du mich richtig verstanden hättest, mein aufgezeigter Lösungsvorschlag die einschränkung "nicht 100%ig" _nicht_ wegen der Verwendung von Javascript, sondern:
Dreh- und Angelpunkt dieser Metode ist und bleibt das Laden zusätzlicher Sourcen (Bilder/separate StyleSheets oder JavaScripts) zu einem Dokumen
Gruß aus Berlin!
eddi
Heißa, Melanie,
Es gibt schlicht und einfach keine richtige Möglichkeit, zu überprüfen, ob der Benutzer SSL benutzen kann oder nicht. XaraXens Lösung würde bei mir zum Beispiel zu einer 15-minütigen Wartezeit führen, und das ist glaube ich auch nicht das, was du willst.
Du könntest höchstens vielleicht ein Bild per SSL einbinden, und dann per JavaScript einen Timeout realisieren. Dann würdest du aber im Internet Explorer Sicherheitswarnungen bekommen, also auch keine saubere Lösung.
Gautera!
Grüße aus Biberach Riss,
Candid Dauth
Hallo Melanie,
Serverseitig ist dies, in dem Du eine Session initiierst, möglich.
Wenn ich Deine Methode serverseitig mache (das wäre mir lieber), dann ruft aber doch der Server die externe Quelle auf und das hat dann mit dem Browser nichts zu tun, oder?
Oder!
Der Server serviert die Sourcen - der Browser ruft sie ab.
Habe mal mit phpinfo() die Statusseiten vergleichen ... da gibt es einen Unterschied (und sicher noch andere), wenn ich mit http oder mit https aufrufe:
HTTP Headers Information -> HTTP Response Headers
bei http:
Connection Keep-Alive
Transfer-Encoding chunkedbei https:
Connection close
Transfer-Encoding [leer]
Wie Alexander bereits bemerkte, ist dies nicht als Indikator geeignet. Auf Seiten PHPs hast Du hauptsächlich die Möglichkeit zu überprüfen, ob (im benannten Beispiel bleibend) die Source "ssl.js" mit einer Session-Variable per GET abgerufen wurde.
Weiterhin, um auch bei anderen Gelegenheiten, die mit Deinem Problemvortrag nicht zu tun haben, abzuprüfen, ob die Verbindung via SSL zustande kommt, setzt der Apache die Variable $_SERVER["HTTPS"]=on;
Gruß aus Berlin!
eddi