今回は、EC-CUBEでECサイトを運用していると欠かせないのが「管理画面」です。
ですが、EC-CUBEを利用しているECサイトのお仕事をさせていただく、案外セキュリティ対策が甘いケースが多いです。
Basic認証を追加すると、管理画面へアクセスした際にユーザー名とパスワードの入力を求められるようになります
EC-CUBEのログイン画面を直接表示させにくくするため、管理画面のセキュリティ対策の一つとして利用できます。
そこで今回はEC-CUBEの管理画面への不正アクセスを防ぐカスタマイズを紹介いたします。
.htpasswdを作成
まず、ローカルのターミナルで.htpasswdを作成します。
以下のコマンドを実行してください。
htpasswd -c .htpasswd [ユーザー名]例えば、ユーザー名をadminuserにする場合は、以下のようになります。
htpasswd -c .htpasswd adminuserコマンドを実行すると、パスワードの入力を求められます。
New password:
Re-type new password:
Adding password for user adminuserパスワードを入力すると、現在のディレクトリに.htpasswdが作成されます。
.htpasswdをサーバーへアップロードする
作成した.htpasswdを、FTPやSFTPなどを使ってサーバーへアップロードします。
.htpasswdは、できるだけWeb上から直接アクセスできない場所へ設置してください。
例えば、次の場所へアップロードしたとします。
/home/example/.htpasswdこの場合、後ほど.htaccessのAuthUserFileに、同じパスを指定します。
既存の.htpasswdへユーザーを追加する場合
すでに.htpasswdが存在する場合は、-cを付けずに実行します。
htpasswd .htpasswd [ユーザー名]-cは新しいファイルを作成するオプションです。既存ファイルに対して使用すると、ファイルを上書きする可能性があるため注意してください。
.htaccessにBasic認証の設定を追加
作業を始める前に既存の.htaccessをバックアップするようにしてください。
次に、EC-CUBEの.htaccessを編集します。
# 関係ないところは省略
AuthUserFile ".htpasswdの絶対パス"
AuthGroupFile /dev/null
AuthName "Member Site"
AuthType BASIC
require valid-user
# admin_testの部分は自分の所の管理画面のを入れる
SetEnvIf Request_URI "^/admin_test" admin_path
<RequireAll>
Require all granted
Require not env admin_path
</RequireAll>AuthUserFileを変更する
AuthUserFileには、.htpasswdの絶対パスを指定します。
例えば、.htpasswdを以下の場所に作成した場合を考えます。
/home/example/.htpasswd
この場合、記述は以下のようになります。
AuthUserFile “/home/example/.htpasswd”
URLではなく、サーバー上のファイルパスを指定してください。
管理画面のURLに合わせて変更する
以下の部分は、実際の管理画面URLに合わせて変更します。
SetEnvIf Request_URI “^/admin_test” admin_path
管理画面のURLがhttps://example.com/kanri/の場合は、次のようにします。
SetEnvIf Request_URI “^/kanri” admin_path
admin_testのままにすると、実際の管理画面にBasic認証が適用されない可能性があります。
Basic認証の設定を確認する
設定後、ブラウザからEC-CUBEの管理画面へアクセスします。
Basic認証のダイアログが表示されたら、.htpasswdで設定したユーザー名とパスワードを入力してください。
認証後に、EC-CUBEのログイン画面が表示されれば設定完了です。
あわせて、次のページも確認してください。
- EC-CUBEのトップページ
- 商品一覧ページ
- 商品詳細ページ
- カート
- マイページ
- 問い合わせフォーム
.htaccessはサイト全体の動作に影響する場合があります。管理画面だけでなく、ショップ側も正常に表示されるか確認しましょう。
Basic認証を設定するときの注意点
.htaccessをバックアップする
編集前に、既存の.htaccessを必ずバックアップしてください。
設定後に500エラーや表示崩れが起きた場合、元の状態へ戻せるようにしておきます。
HTTPS環境で利用する
Basic認証を設定する場合は、HTTPS環境で利用してください。
SSL化されていないサイトでは、認証情報が安全に送信されません。
EC-CUBEのバージョンやサーバー環境を確認する
EC-CUBEのバージョン、Apacheの設定、PHPのバージョンなどによって、Basic認証後の動作が異なる場合があります。
過去には、Basic認証の設定後にEC-CUBEの管理画面やマイページが表示できなくなる事例も報告されています。ですが、事例としては2019年と現在とバージョンもかけ離れており、私自身遭遇したことはございません。
Basic認証以外の対策も検討する
Basic認証は管理画面へのアクセス対策の一つです。
EC-CUBE 4.1では、管理画面の2段階認証も利用できます。
必要に応じて、管理画面URLの変更、IP制限、2段階認証なども組み合わせてください。
【実体験】ECサイトは顧客情報などの宝庫だからこそセキュリティ対策
ECサイトの場合、管理画面には商品・注文・顧客情報など重要な情報が集まっているので、EC-CUBE標準の管理者ログインだけに任せず、Webサーバー側でもう1段入口を作る意味があります。
その対策が今回の「Basic認証」になります。
運営者目線で見れば、「ログインの手間になる」とお考えの人がいるかもしれません。
ですが、ニュースで個人情報流出などを目にしたことがあると思います。こういった可能性をログイン時の少しの手間で可能性を下げられるのであれば、必ず導入すべきと考えております。
もちろんEC-CUBE側の不備で不正なアクセスが起こりやすい状況になっていたとしても、「Basic認証」を用意しておくと予備の防波堤になってくれるという考え方ができます。
コメント(承認制)