WooCommerceのセキュリティ対策を徹底解説
WooCommerceを安全に運営するためのセキュリティ対策をご紹介します。非常にセキュアなECサイトを運営することができます。
WooCommerceの安全性
WooCommerceは安全にECサイトを運営できるように設計されています。
クレジットカード情報は保存されませんし、脆弱性にも素早くアップデートされています。
WooCommerceの危険性は、セキュリティが杜撰なサーバや、テーマ、インストールするプラグインに原因があります。
ひとつのECサイトで約30~40のプラグインを導入することになります。
開発が止まっているプラグインや、脆弱性に対応できていないプラグインもあります。
このプラグイン選びと、プラグインの管理がWooCommerceの安全性を維持するポイントにもなります。
WooCommerceのセキュリティ
WooCommerceのセキュリティ設定は基本的にWordPressと同様です。
定番のセキュリティプラグインも利用できます。
ただし、脆弱性のあるセキュリティプラグインも存在するため、複数のセキュリティプラグインを導入すると逆効果になります。
キャッシュプラグインや、サーバのキャッシュ機能も利用しない方が良いでしょう。
どうしてもキャッシュプラグインを導入する場合は「WP ROCKET」が定番です。
設定も難しくなく1年間約5,500円で利用できます。
イッティのWooCommerceサービスではWP ROCKETを無料で設定、利用できます。
WooCommerceのセキュリティ、プラグインの管理、サーバ設定などが面倒な場合、当社のWooCommerceサービスをご利用ください。
月9,800円(1日317円)からご利用できます。
WooCommerceのセキュリティを強固にする方法
WooCommerceのセキュリティを高めるための16のチェック項目です。
セキュリティの高いホスティングサーバを利用する
WP template.comによれば、WordPressのハッキング被害の41%が、ホスティングサーバの脆弱性が原因でハッキングされています。
セキュリティの高いホスティングサーバを利用し、PHPのバージョンは7以上で運営しましょう。
テーマは信頼度と更新頻度が高いものを利用する
ハッキングの29%がテンプレートが原因となっています。
頻繁に更新されている信頼が高いテンプレートを使用しましょう。
プラグインは最小限にする
ハッキングの22%がプラグインの脆弱性が原因となっています。
セキュリティ系のプラグインであっても脆弱性があるプラグインもあります。また、脆弱性が放置されているプラグインもあります。
必要以上にプラグインを導入しない事と、定期的に更新されているプラグインを導入するようにしましょう。
セキュリティプラグインも、複数使用しないようにします。
WooCommerce、プラグインを更新する
WooCommerce、WordPress、プラグインがアップデートされていないケースもよく見かけます。脆弱性が放置されている場合もあり非常に危険な状態です。
定期的なバックアップ
ハッキングやシステムの改竄に備えて、定期的にバックアップを取った方が良いでしょう。
商品数4,000点前後で、バックアップ1つが4GB前後です。
SSLを導入して通信を暗号化する
最近のサーバでは無料のSSLを使用することができます。
SSLを設定して、暗号化通信を有効にします。
ログイン情報を高いレベルにする
ログインIDとパスワードを複雑にしておきましょう。
「Admin」や「tanaka」など、辞書アタックされるものは避けます。
さらにユーザー情報で表示されるニックネームなども設定しておきましょう。
ログインIDがそのまま表示されます。
必ず「ニックネーム」と「ブログ上の表示名」を設定しましょう。
2段階認証のログインにする
WordPressのログインを2段階認証にすることで不正ログインを回避することができます。
2段階認証のプラグインでは「Google Authenticator」などがあります。
セキュリティキーとソルトを設定
WordPressのwp-config.phpのセキュリティーキーとソルトの設定を行っていないケースをよく見かけます。
ログインをスムーズにするためのデータを暗号化するのがセキュリティキーとソルトの役割となります。
定期的にセキュリティキーとソルトを変更した方がより安全です。
wp-config.phpを保護する
wp-config.phpは重要なファイルです。情報が書き換えられないようにパーミッション(権限)を600にします。
さらに.htaccessで外部からwp-config.phpにアクセスできないようにします。
htaccess
<Files wp-config.php>
Order deny,allow
Deny from all
</Files>
管理画面からファイルの変更ができないようにする
wp-config.phpに下記を記述して、管理画面からのファイル編集を無効にします。
PHP
define (' DISALLOW_FILE_EDIT '、true );
トラックバック、ピンバックを無効にする
トラックバック、ピンバックの必要は無いでしょう。htaccessで無効にします。
htaccess
<Files xmlrpc.php>
Order deny,allow
Deny from all
</Files>
.htaccessへのアクセスを無効にする
ついでにhtaccessへのアクセスも無効にしておきましょう。
.htaccessへ下記を記述します。
htaccess
<Files .htaccess>
Order deny,allow
Deny from all
</Files>
管理画面のログインを暗号化する
SSLを通して管理画面へログインするようにします。
functions.phpに下記を追記します。
functions.php
define('FORCE_SSL_ADMIN', true);
リバースプロキシを利用している場合は無限ループになるので下記の記載となります。
functions.php
define('FORCE_SSL_ADMIN', true);
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
詳しくは、WrodPressのサポートページ
プラグインで簡単にSSL関係の設定を行う場合は「Really Simple SSL」がお勧めです。
キャッシュ系プラグインを使用しない
WooCommerceとキャッシュプラグインを利用する場合は、設定に気を付けてください。
設定に自信がない場合は、キャッシュ系プラグインを利用しない、またはWooCommerceに最適化されている有料のキャッシュプラグイン「WP Rocket」の導入をお薦めします。
データベースの接頭辞を変更する
WordPressの定番のセキュリティ対策ですが、無理に行う必要ありません。
接頭辞を変更する場合は、必ずデータベースをバックアップしてから行ないます。
接頭辞を変更できるプラグイン「WP-DBManager」を利用するのも良いでしょう。
海外からのアクセスを拒否する
不正アクセスの殆どが中国IPからです。
国内だけに商品を販売する場合、海外からのアクセスを拒否することでハッキングリスクを大幅に回避できます。
htaccessで海外IPを拒否するか、国内IPだけアクセスさせる方法があります。
また、特定地域からのアクセスを拒否するセキュリティ プラグインもあります。
APIを停止する
WordPressに実装されているAPIを使っていない場合は、OFFにするのが良いでしょう。
「ドメイン/wp-json/」にアクセスすると起動しているAPIが分かります。
JetPackやakismet、contact form 7など、APIを利用している場合はプラグインが機能しなくなるためwordpressのAPIのみ停止させます。
functions.php
function disabled_rest_api( $endpoints ) {
$endpoints_to_remove = array(
'/oembed/1.0',
'/wp/v2',
'/wp/v2/media',
'/wp/v2/types',
'/wp/v2/statuses',
'/wp/v2/taxonomies',
'/wp/v2/tags',
'/wp/v2/users',
'/wp/v2/comments',
'/wp/v2/settings',
'/wp/v2/themes',
'/wp/v2/blocks',
'/wp/v2/oembed',
'/wp/v2/posts',
'/wp/v2/pages',
'/wp/v2/block-renderer',
'/wp/v2/search',
'/wp/v2/categories'
);
if ( ! is_user_logged_in() ) {
foreach ( $endpoints_to_remove as $rem_endpoint ) {
foreach ( $endpoints as $maybe_endpoint => $object ) {
if ( stripos( $maybe_endpoint, $rem_endpoint ) !== false ) {
unset( $endpoints[ $maybe_endpoint ] );
}
}
}
}
return $endpoints;
}
add_filter( 'rest_endpoints', 'disabled_rest_api' );
ちなみにすべてのAPIを停止する場合は下記をfunctions.phpに記述します。
functions.php
function disabled_rest_api(){
return new WP_Error( 'disabled', 'API is disabled', array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_authentication_errors', 'disabled_rest_api' );
XML-RPCを無効にする
XML-RPCはアプリやJetpackなどのプラグインで利用されることがありますが、ブルートフォースアタックのターゲットにもなります。
使用しない場合は停止させます。
functions.phpに下記を記述することで、無効化できます。
functions.php
add_filter(‘xmlrpc_enabled’, ‘__return_false’);
htaccessに下記を記述することで、XML-RPCへのアクセスを拒否し、0.0.0.0のIPアドレスへリダイレクトさせます。
htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]
</IfModule>
クリック ジャッキングを防ぐ
iframeでウェブサイトを表示させて、ユーザーの情報を盗んだり、スパムサイトへ誘導させるクリック ジャッキングを防ぎます。
htaccessファイルに下記を記述します。
.htaccess
Header always append X-Frame-Options SAMEORIGIN
プラグインを利用する場合は「WP Anti-Clickjack」がお勧めです。
お奨めのセキュリティプラグイン
WooCommerceに最適なセキュリティプラグインを3つご紹介します。
いずれも高機能で頻繁にアップデートされているプラグインです。
この3つの中から1つ利用すれば良いでしょう。
Wordfence Security
定番のセキュリティプラグインです。
日本語のリファレンスも多く、設定も難しくはありません。
一部の機能が有料となっていますが、無料版でも十分な機能を使えます。
iThemes Security
以前は「Better WP Security」の名称で、歴史の長い定番のセキュリティプラグインです。こちらも一部の機能が有料となっていますが、十分に使えます。
All In One WP Security & Firewall
無料で最も多くの機能があるセキュリティプラグインで、後発ですが人気があります。
完全無料のセキュリティプラグインではダメですか?
有料版にアップデートできる定番プラグインの方が、開発も継続されて安定しています。
頻繁に攻撃される場合は、有料版に切り替えてガードをより固くすることもできますよ。
セキュリティ情報
脆弱性のあるWordPressのテーマやプラグインなどを情報を日々配信しているウェブサイトをご紹介します。
使用するテーマやプラグインなどは導入前に検索すると良いでしょう。
WooCommerceはセキュリティを高めることで、強固なECサイトを運営できる事が分かったと思います。