2012-04-05 2 views
3

Wie finden Sie heraus, die Website ist auf SSL oder nicht auf SSL? Ich arbeite an einem WP-Plugin für Live-Transaktionen und es ist wichtig für das Plugin zu überprüfen, dass die Website (auf dem Plugin installiert ist) verwendet SSL oder nicht & Ich muss eine Warnmeldung auf der Kasse anzeigen, wenn die Website ist nicht auf SSL.Wie finde ich heraus, dass das SSL-Zertifikat auf einem Server installiert ist? (Mit PHP)

+0

Ich denke, diese Frage ist verwandt http://stackoverflow.com/questions/4503135/php-get-site-url-protocol-http-vs-https –

+0

Dies ist im Grunde, wie das Skript über das HTTPS-Protokoll abgefragt wird, Wenn ein Skript von HTTPS angefordert wird, wird $ _SERVER ['HTTPS'] gesetzt und ist gleich 'on'. Aber ich versuche herauszufinden, dass SSL auf dem Server installiert ist, auf dem die Site live ist. Ich fand PHP-Skript http://uniapple.net/blog/?p=539#comment-2705 und ich getestet, aber nicht sicher, dass es in allen Aspekten funktioniert? Danke –

Antwort

0

Wenn es sich um eine HTTPS-Anfrage handelt, wird der Wert 'HTTPS' im superglobalen $ _SERVER-Array gesetzt und auf 'on' gestellt. Wenn es keine HTTPS-Anfrage ist, wird sie nicht gesetzt.

So zu testen, ob es sich um eine HTTPS-Anforderung in PHP ist Sie dies tun könnte:

if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { 
     ... 
    } 

Alternativ könnte man es als Konstante gesetzt, wenn Sie müssen wissen, ob es wie eine HTTPS-Anforderung mehrmals in Ihrem Code ist so:

define('IS_HTTPS_REQUEST', isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'); 
+0

@ Lex, Dies ist im Grunde, wie das Skript durch die abgefragt wird HTTPS-Protokoll, Wenn Skript von HTTPS angefordert wird, dann wird $ _SERVER ['HTTPS'] gesetzt und ist gleich 'on'. Aber ich versuche herauszufinden, dass SSL auf dem Server installiert ist, auf dem die Site live ist.Ich fand PHP-Skript http://uniapple.net/blog/?p=539#comment-2705 und ich testete, aber nicht sicher, dass es in allen Aspekten funktioniert? Danke –

+0

der Code, den Sie beziehen, verwendet Locken, die möglicherweise nicht verfügbar sind in Shared-Hosting überprüfen Sie diese http://StackOverflow.com/Questions/9852937/PHP-Curl-Proxy-Not-Work-with-Godaddy-Shared-Hosting, und Code, was ich gegeben habe, können Sie verwenden, wenn Sie das Plugin installiert und es begann Wenn Sie auf Anfragen antworten, können Sie Wordpress bitten, ssl URL anzugeben und eine Warnung anzuzeigen, dass Ihr Plugin nicht funktioniert, wenn ssl nicht vorhanden ist und wenn die Anfrage ohne ssl kam (überprüfen Sie den obigen Code), zeigen Sie eine Fehlermeldung an –

1
function is_exist_ssl($domain){ 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://".$domain); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_HEADER, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_exec($ch); 

if(!curl_error($ch)){ 
$info = curl_getinfo($ch); 
if($info['http_code'] == 200){ 
return true; 
} 
return false; 
}else{ 
return false; 
} 
} 

Nutzung:

$domain = 'uniapple.net'; 

if(is_exist_ssl($domain)){ 
echo "SSL is enabled!"; 
}else{ 
echo "No SSL"; 
} 

//usage :: 
if(!isset($_SERVER['REDIRECT_HTTPS']) || $_SERVER['REDIRECT_HTTPS'] != 'on'){ 
if(is_exist_ssl($domain)){ 
header('location : https://'.$domain); 
} 
} 
0

Es gibt eine Reihe von Lösungen für dieses Problem, die in this question beschrieben sind. Wenn Sie Apache Httpd verwenden und den Pfad auf ein bestimmtes Präfix eingrenzen können, können Sie SSLRequireSSL innerhalb einer Location Direktive verwenden. Alternativ können Sie in PHP $_SERVER['HTTPS'] überprüfen, wenn es definiert ist (es kann vom Webserver abhängen, aber es ist normalerweise).

Noch wichtiger ist, konzentrieren Sie sich nicht zu sehr auf die Überprüfung der Seite, die Sie bedienen über HTTPS serviert wird. Es liegt in der Verantwortung des Clients, dies zu überprüfen, da es zu spät ist, wenn es den Server erreicht. Möglicherweise wurde es bereits von einem MITM-Angreifer abgefangen (der die Anforderung sogar über HTTPS stellen kann, selbst wenn der echte Client dies getan hat) nicht). Ich habe eine längere Erklärung für dieses Problem in this answer. Aus UI-Sicht sollten Sie klarstellen, dass der Benutzer einen "sicheren" Abschnitt eingeben wird, und es liegt an ihm zu überprüfen, ob die nachfolgenden Anforderungen über HTTPS sind.

Es ist nicht unbedingt eine schlechte Sache zu überprüfen, dass Ihr Server tatsächlich über HTTPS läuft, aber es aus Sicherheitsgründen nicht viel hilft. Was wirklich wichtig ist, ist, dass alle Links zu diesem sicheren Bereich https:// (und müssen nicht verlassen auf automatische URL Neuschreiben, um dies zu tun) verwenden müssen.

1

Da diese Frage alt ist und die Antworten ein bisschen veraltet sind, dachte ich, ich würde hineinspielen!

Ich sah, dass Sie nach einem WordPress-Plugin gefragt haben. WordPress hat eine is_ssl() Funktion, um zu überprüfen, ob eine Seite ssl seit WordPress 2.6 verwendet.

Verwandte Themen