2012-04-05 20 views
3

サイトを見つける方法は、SSL上であるかSSL上ではありませんか?私はライブ取引用のWPプラグインを開発しており、プラグインがインストールされているサイトがSSLを使用しているかどうかを確認することが重要です。&サイトがチェックアウトされている場合、 SSL上ではありません。SSL証明書を見つける方法はサーバーにインストールされていますか? (PHPを使用して)

+0

私はこの質問に関連していると思います。http://stackoverflow.com/questions/4503135/php-get-site-url-protocol-http-vs-https –

+0

これは基本的に、スクリプトがHTTPSプロトコルを介してどのように照会されるか、スクリプトがHTTPSによって要求された場合、$ _SERVER ['HTTPS']が設定され、 'on'に等しくなります。しかし、SSLがサイトが稼働しているサーバーにインストールされていることを確認しようとしています。私はPHPスクリプトhttp://uniapple.net/blog/?p=539#comment-2705を見つけたが、私はテストしましたが、それはすべての側面で動作することを確認していない?ありがとう –

答えて

0

HTTPSリクエストの場合、スーパーグローバル$ _SERVER配列の 'HTTPS'値が設定され、 'on'に設定されます。 HTTPS要求でない場合は設定されません。それはあなたがこれを行うことができますPHPでHTTPS要求だのであればテストする

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

あなたはそれのようなあなたのコード内で数回HTTPS要求だかどうかを知る必要がある場合は、代わりにあなたは定数としてそれを設定することができますそう:

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

@レックス、これは基本的にどのようにスクリプトがHTTPSプロトコル.HTTPSによってスクリプトが要求された場合、$ _SERVER ['HTTPS']が設定され、 'on'に等しくなります。しかし、SSLがサイトが稼働しているサーバーにインストールされていることを確認しようとしています。私はPHPスクリプトhttp://uniapple.net/blog/?p=539#comment-2705を見つけたが、私はテストしたが、すべての側面で動作することを確認していない?ありがとう –

+0

あなたが参照しているコードは使用されていない可能性がありますカールを使用している共有ホスティングでこれをチェックするhttp://stackoverflow.com/questions/9852937/php-curl-proxy-not-work-with-godaddy-shared-hosting、プラグインをインストールして起動したときに使用できるコードあなたはsslが存在しない場合には、あなたのプラグインが動作しないという警告を表示し、要求がsslなしで来た場合(上記のコードを使用してチェックする)、エラーメッセージを表示することができます –

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; 
} 
} 

用法:

$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

this questionに記載されているこの問題に対するいくつかの解決策があります。 Apache Httpdを使用していて、特定の接頭辞へのパスを絞り込むことができる場合は、Locationディレクティブ内でSSLRequireSSLを使用できます。あるいは、定義されている場合は$_SERVER['HTTPS']をPHPでチェックすることができます(Webサーバーに依存する可能性がありますが、通常はそうです)。

さらに重要なことに、HTTPSで配信されているページのチェックにあまり集中しないでください。サーバに到達するまでには、それが遅すぎるため、クライアントがMITM攻撃者によって傍受されている可能性があります(正規のクライアントがHTTPSを使用してもリクエストを行う可能性があります)。ない)。私はthis answerにこの問題についての長い説明をしました。 UIの観点からは、ユーザーが「安全な」セクションを入力することを明確にし、後続の要求がHTTPS経由であることを確認する必要があります。

サーバーが実際にHTTPSで実行されていることを確認することは必ずしも悪いことではありませんが、セキュリティの観点からはあまり役に立ちません。実際に重要なことは、そのセキュリティ保護されたセクションへのすべてのリンクにhttps://を使用する必要があります(は、に自動URL書き換えを行わないでください)。

1

この質問は古いので、回答は少し古くなっているので、私はチャイムに乗ると思った!

WordPress Pluginについて質問していました。 WordPressにはis_ssl()という機能があり、WordPress 2.6以降のページでsslが使用されているかどうかを確認できます。

関連する問題