Drupal 7.を使用しています。ユーザーのログインページは/ user/loginにあるため、デフォルトのログインパスです。このページはSSLを使用して暗号化する必要があるため、人々はパスワードを平文で送信する。
Apacheを構成して、サイトをHTTPまたはHTTPSのいずれかでナビゲートできるようにしました。ただし、/ user/login以外のすべてのリクエストがHTTP経由で行われるように、いくつかの書き換えルールを実装したいと考えています。これは、INFINITELYがより速くなり、ユーザーエクスペリエンスが向上するためです。 Drupal Coreのサポートにバグがあり、手動でCoreにパッチを適用しないため、現時点では Secure Pages の使用を拒否します。つまり、 mは、Apacheリライトルールの使用を残しました。
私には次のルールがあります。
<VirtualHost *:80>
...
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/user/login$
RewriteRule ^/(.*) https://%{HTTP_Host}/$1 [L,R]
...
</VirtualHost>
<VirtualHost *:443>
...
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/user/login$
RewriteRule ^/(.*) http://%{HTTP_Host}/$1 [L,R]
...
</VirtualHost>
今、私にはそれは理にかなっていますが、Drupalはそれが好きではないようです。
何が起こっているのですか?
/ user/loginをhttps経由で提供する必要はありません。 https経由で送信するユーザーログインフォームが必要です。
Securepages_prevent_Hijackモジュールを確認してください。securepagesに依存しているため、直接使用するのではなく、ログインフォームがどのように変更されるかを確認してください。そのようです:
function securepages_prevent_Hijack_form_alter(&$form, &$form_state, $form_id) {
// Secure the login form, so that we always have a secure connection to transmit the
// initial cookie. Also, protect the password in transit.
if ($form['#id'] == 'user-login-form' || $form['#id'] == 'user-login') {
$url = parse_url($form['#action']);
$base_path = base_path();
$path = (!strncmp($url['path'], $base_path, drupal_strlen($base_path)) ? drupal_substr($url['path'], drupal_strlen($base_path)) : $url['path']);
$options = array('secure' => TRUE);
if (isset($url['query'])) {
$options['query'] = $url['query'];
}
$form['#action'] = securepages_url($path, $options);
}
}
Drupalが設定しているCookieが安全かどうかも確認する必要があります。これはphp.iniの設定によって異なります。session.cookie_secureを1.使用している場合、Cookieはhttpセッションに送信されません。そのため、ホームページに戻ります(セッションCookieなし==セッションなし==ログイン情報なし==ログアウト)。もちろん、session.cookie_secureが0の場合、他のパーティが転送中のセッションCookieを観察し、ユーザーになりすます可能性があります。すでにこのリスクを考慮している可能性がありますが、考慮事項があります。
Secure Login モジュールもコアをハックすることなく、必要なことを実行できると思います。
セキュアログインモジュールを使用すると、ユーザーログインやその他のフォームをHTTPS経由で安全に送信できるため、パスワードやその他のプライベートユーザーデータがクリアテキストで送信されなくなります。
私はあなたが Secure Pages をもう一度試すことができると思います。それ以来、彼らは新しい安定版をリリースしています。
Drupal 8の場合: Secure Login モジュールを確認してください。
参照: HTTPセキュア(HTTPS)の有効化 。