🔧

WooCommerce+SiteGuardWPでセキュリティ向上のカスタマイズをする

2023/11/07に公開

記事を書こうと思ったきっかけ

WooCommerceで構築された日・英対応の多言語ECサイトの担当者から、海外から会員登録フォームを介して大量のユーザー登録がなされるいたずらをされているという事象が発生したという相談を受けました。

そのサイトがSiteGuardWPを導入していたので、それを活かしてセキュリティ向上をする必要が生じた…というのがきっかけです。

管理画面ログインの方の防御も含め、今回はWooCommerceとSiteGuardWPを組み合わせた際に行うカスタマイズをご紹介致します。

なお、コメントフォームに関しては元からWordPress側で無効としているため、今回はログイン・パスワードリセット・ユーザー登録の3つのフォームに対してのカスタマイズということでご紹介致します。

結論から

下記のコードをfunctions.phpに追加して、SiteGuardWPの画像認証をONにします。

if ( isset( $siteguard_captcha ) ) {
  add_filter( 'woocommerce_login_form_start', [ $siteguard_captcha, 'handler_login_form' ] );
  add_filter( 'woocommerce_register_form_start', [ $siteguard_captcha, 'handler_register_form' ] );
  add_filter( 'woocommerce_lostpassword_form', [ $siteguard_captcha, 'handler_lostpassword_form' ] );
}

WooCommerceとSiteGuardWPはそのままだと上手く機能しない

https://usamisaki.site/blog/woocommerce_sitegurd/

上の記事がとても参考になります。
というか…今回のカスタマイズも上で紹介されている方法と同じです。
WooCommerceはSiteGuardWPを導入している場合、コード側で画像認証の追加処理を書かないと機能しないため、今回のカスタマイズが必要でした。

SiteGuardWP側の設定

上の画像の通りです。

フックについて

add_filterで使用されている各フックについては
woocommerce_login_form_start:ログインフォームへの追加処理に使用
woocommerce_register_form_start:ユーザー登録フォームへの追加処理に使用
woocommerce_lostpassword_form:パスワードリセットフォームへの追加処理に使用

このようにWooCommerce側で準備されていたので、これらを使用しています。

SiteGuardWPのハンドラーについて

紹介しているコード内に、SiteguardWP側で設定されているハンドラーを利用して画像認証部分を呼び出している箇所があります。

プラグインのファイルを見てみると、画像認証を呼び出すのに使える以下のハンドラーが見つかります。
handler_login_form:ログインフォーム用
handler_lostpassword_form:パスワードリセット用
handler_register_form:ユーザー登録用
handler_comment_form;コメント用

これとWooCommerceのフックを組み合わせて、add_filterで追加処理をしている…というような流れになります。

最後に

個人的にはWooCommerce導入も設計に入れたセキュリティプラグインは存在しているのでそちらを主に利用していたのですが、SiteGuardWPも広く使用されているプラグインでしたので、活用の機会があるかと思ったカスタマイズでした。

それにしても、セキュリティに対して策を講じるのは当たり前な話なのですが…こういった事象を目にすると、「人間の質」が低いクオリティのままな可哀想な人が世界にはたくさん存在してしまっているんだな…とちょっと悲しくなりました。
そんないたずらができる時間や労力・スキルがあるなら他の良いアクションをするような方向に持っていけばいいのに…

一人ひとりが他の人のために行動できるような内面が皆に備わっていれば、こんなセキュリティ施策が発展することもなかったんだろうなぁ…

ちょっと感傷に浸ってしまいましたが、今回の記事もお役に立ちましたら幸いです。

Discussion