3

サイトが SSL を使用しているか、SSL を使用していないかを確認する方法は? 私はライブトランザクション用の WP プラグインに取り組んでおり、プラグインが (プラグインがインストールされている) サイトが SSL を使用しているかどうかを確認することが重要です。 SSLではありません。

4

5 に答える 5

3

変数を確認でき$_SERVER['HTTPS']ます。

于 2012-04-05T11:43:12.080 に答える
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);
}
}
于 2012-04-05T12:14:06.980 に答える
0

この質問で説明されているこの問題には、いくつかの解決策があります。Apache Httpdを使用していて、特定のプレフィックスへのパスを絞り込むことができる場合は、ディレクティブSSLRequireSSL内で使用できます。または、 PHPが定義されている場合は、PHPLocationをチェックインすることもできます(Webサーバーによって異なる場合がありますが、通常はそうです)。$_SERVER['HTTPS']

さらに重要なのは、提供しているページがHTTPS経由で提供されていることを確認することにあまり集中しないでください。サーバーに到達するまでに手遅れであるため、クライアントの責任で確認します。MITM攻撃者(本物のクライアントが行ったとしても、HTTPSを介して要求を行う可能性がある)によってすでに傍受されている可能性があります。いいえ)。私はこの答えにこの問題についてのより長い説明を入れました。UIの観点からは、ユーザーが「安全な」セクションに入るということを明確にする必要があります。後続のリクエストがHTTPS経由で行われるかどうかを確認するのはユーザーの責任です。

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

于 2012-04-05T13:24:27.937 に答える
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');
于 2012-04-05T11:51:13.770 に答える