catch-img

【Shopify】liquidカスタマイズによるパスワードのバリデーションチェック

Shopifyの標準仕様は、「8文字以上」「特殊文字必須」など、会員パスワードのルール設定機能を提供していないため、セキュリティを強化するためには「Helium Customer Fields」のようなアプリを利用して、会員新規登録時に入力されるパスワードのバリデーションチェックを設定しています。しかし、「Helium Customer Fields」を利用するとしても、メール認証による会員登録設定時のパスワード設定画面やパスワードを忘れた際にパスワードをリセットする画面では、アプリの仕様上バリデーションチェックが設定できません。その結果、会員新規登録時には登録できなかった「12345」のようなパスワードが、パスワードのリセットではできてしまうことになります。そのため、アプリではパスワードのバリデーションチェックが設定できない画面のliquidをカスタマイズすることで、パスワードのバリデーションチェックを実現しセキュリティを強化する方法をご紹介します。それによって、ストア全体としてのパスワードルールが定まるようになります。

※本記事は、「Helium Customer Fields」のアプリでバリデーションチェックを実装している前提での内容となります。「Helium Customer Fields」でのパスワードバリデーションチェックの設定方法は下記ページをご覧ください。
https://transcosmos-ecx.jp/blog/shopify/97


shopifyに関するお問い合わせをするボタン​​​​​​​  shopify資料のダウンロードをするボタン


目次[非表示]

  1. 1.Shopify標準のパスワードルール
  2. 2.カスタマイズ対象のパスワード登録/設定画面
  3. 3.パスワードバリデーションチェックのliquidカスタマイズ
  4. 4.最後に


Shopify標準のパスワードルール


Shopify標準のパスワードルールは「5文字以上」で、「数字/英字/特殊文字」の組み合わせ制限がありません。例えば、「12345」「abcde」なども入力が可能な仕様です。セキュリティをより強固にしたい場合に、これからご紹介する方法を試していただければと思います。


カスタマイズ対象のパスワード登録/設定画面

アプリ「Helium Customer Fields」を利用することで「会員新規登録画面」と「会員情報変更画面」に、パスワードのバリデーションチェックが設定可能です。しかし、上記以外にもパスワードの登録/設定が可能な以下のような画面が存在します。もちろん、該当画面のパスワードルールはShopify標準の「数字/英字/特殊文字の組み合わせ制限なしで、5文字以上」になります。
※「会員情報変更画面」は、アプリ「Helium Customer Fields」を利用して作成した画面です。

・Helium Customer Fields
https://apps.shopify.com/customr?locale=ja


①パスワードリセット画面
パスワードを忘れた場合に利用するメール経由で案内されるリンクから表示される画面です。

②パスワード設定/アカウント有効化画面
会員新規登録において、メールアドレスによる2段階認証を利用する場合、メール経由で案内されるリンクから表示される画面です。
※メールアドレスによる2段階認証はShopifyの標準機能ではなく、アプリ「Helium Customer Fields」の機能になります。


パスワードバリデーションチェックのliquidカスタマイズ

各画面のliquidにパスワードの正規表現を追加する方法は以下になります。
※liquidのファイル名やコードはテーマによって異なる場合があります。
※下記のサンプルコードは「半角英数字をそれぞれ1種類以上含む8文字以上100文字以下」をパスワードルールとしてliquidをカスタマイズしています。


①パスワードリセット画面

1)「customers/reset_password.liquid」に以下のコードを追加します。
⇒パスワードのinputタグid「ResetPassword」を指定したスクリプトを追加します。

<script>
$(function() {
  $('#btn_reset_password').on('click', function(e) {
    password = $('#ResetPassword').val();
    if (password.match(/^(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}$/i)) {
      //alert('match');
    } else {
      alert('半角英数字をそれぞれ1種類以上含む8文字以上100文字以下に指定してください。');
      return false;
    }
  });
});
</script>


⇒追加したスクリプトで指定したボタンid「btn_reset_password」をボタンタグに付与

<button type="submit" class="btn btn--full" id="btn_reset_password">
  {{ 'customer.reset_password.submit' | t }}
</button>


2)ログイン画面から「パスワードを忘れた」機能を利用し、「パスワードリセット画面」のリンクをメールに転送します。

「半角英数字をそれぞれ1種類以上含む8文字以上100文字以下」のルールに適合していないパスワードを入力し、リセットボタンを押下した場合、ポップアップアラートが表示され、パスワードが登録できないことを確認します。


②パスワード設定/アカウント有効化画面

1)「customers/activate_account.liquid」に以下のコードを追加します。
⇒パスワードのinputタグid「CustomerPassword」を指定したスクリプトを追加します。

<script>
$(function() {
  $('#btn_activate_account').on('click', function(e) {
    password = $('#CustomerPassword').val();
    if (password.match(/^(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}$/i)) {
      //alert('match');
    } else {
      alert('半角英数字をそれぞれ1種類以上含む8文字以上100文字以下に指定してください。');
      return false;
    }
  });
});
</script>


⇒追加したスクリプトで指定したボタンid「btn_activate_account」をボタンタグに付与

<button type="submit" class="btn" id="btn_activate_account">
  {{ 'customer.activate_account.submit' | t }}
</button>


2)会員新規登録画面からメールアドレスを登録し、「パスワード登録/アカウント有効化画面」のリンクをメールに転送します。

「半角英数字をそれぞれ1種類以上含む8文字以上100文字以下」のルールに適合していないパスワードを入力し、アカウント有効化ボタンを押下した場合、ポップアップアラートが表示され、パスワードが登録できないことを確認します。
※本機能の活性化はアプリ「Helium Customer Fields」を利用し、「メールアドレスによる2段階認証」機能を導入する必要があります。



最後に

会員の個人情報のみならず、エンドユーザの決済情報も扱っているECストアは、最も高い水準のセキュリティが求められています。その中でもエンドユーザのアカウントパスワードはセキュリティ強化の第一だと言えるほどです。「数字/英字/特殊文字」の組み合わせ制限なしの「5文字以上」というShopify標準ルールを補うためにアプリを導入したにもかかわらず、「パスワードリセット画面」と「メールアドレスによる2段階認証画面」では適用されないことは、ストア運用の観点からすると、ストアセキュリティの「穴」になります。アラートの出し方など、ストアのテーマに合わせたデザイン対応は工夫ポイントでありますが、liquidの記述のみで簡単に対応できる対策としては有効な方法になると思いますので紹介しました。


shopifyに関するお問い合わせをするボタン  shopify資料のダウンロードをするボタン


shopify構築サービスバナー​​​​​​​

トランスコスモスShopifyエンジニア
トランスコスモスShopifyエンジニア
トランスコスモスはShopify公式認定パートナーです。ShopifyでのECサイト制作・Shopifyアプリ開発を担うのが、トランスコスモスShopifyエンジニアチームです。Shopifyアプリの解説・紹介、Shopifyの基本的な使い方など制作や開発の過程で得られた知見をご紹介します。

Shopify導入についてのサービス問い合わせ

会社でお使いのメールアドレスをご記入ください。
所属されている企業ドメイン以外のフリーメールアドレスでのお問合せはご遠慮願います。

Shopifyアプリ解説・紹介記事


セミナー動画視聴


EC関連サービス

数字で見るトランスコスモス

売上高

 3,622億円

 顧客体験向上を支援するCXサービスや
BPOサービスなどを提供

従業員数

 約70,000人

多様な人材が世界各国の拠点で活躍

お客様企業数

 約3,500社

金融、公共、情報サービスなど
多種多様なお客様との取引実績

サービス展開

 36の国と地域
184拠点

アジア最大規模のサービス提供体制で
DXサ-ビスを提供(2025年9月時点)

Webソリューション

 国内1位※1

お客様のデジタル施策を全方位的に
支援し、プレゼンスを発揮

コンタクトセンター

 国内1位※2

※2 出所:2023年度コールセンター
売上高ランキング(通販新聞社刊)

アウトソーシング(BPO) 

 国内1位※3

※3 出所:会社四季報 業界地図2025年版
(東洋経済新報社刊)

取引年数5年以上の
主要お客様企業

 70%以上

サービスが信頼され継続的な取引を獲得

※1 出所:ネット広告&Webソリューション市場の現状と展望 2023年度版(デロイトトーマツ ミック経済研究所刊、https://mic-r.co.jp/mr/02860/)より、当社および当社子会社Jストリームを合算した当社作成データです
※記載のない数値は2024年3月末時点のものです
お気軽にお問い合わせください

Shopify(ショッピファイ)
ECストア構築・運用代行

実績豊富なトランスコスモスへぜひご相談ください
ECソリューションをお届けするサービスサイト

トランスコスモス株式会社
CX事業統括
ECX本部

〒150-0011
東京都渋谷区東1-2-20
渋谷ファーストタワー
050-1751-7700(代表)

トランスコスモス株式会社
企業サイト(コーポレートHP)
Global Digital Transformation Partner.
お客様企業のデジタル・トランスフォーメーション・パートナー。
経済産業省が定める「DX認定事業者」
トランスコスモスは経済産業省が定める「DX認定事業者」
トランスプラス
トランスコスモスの全社的な情報を発信するオウンドメディア
cotra
コンタクト/コールセンターに携わる方への情報サイト
法人向けメタバース情報メディア
「メタバース情報局 by transcosmos」
shopify構築・制作・運用