Security

セキュリティ対策

管理画面のある案件での実装例

管理画面のある案件で、実際に実装している守り方です。何をどう減らしているかと、その限界を書いています。

Access

誰が入れるか

管理画面に入れる人を、メールアドレス単位で絞ります。

管理画面の入口

パスワードを作らず、許可した人だけが入る

管理画面の入口に Cloudflare Access を置きます。許可したメールアドレスの人だけが、メールに届く使い捨てのコード(ワンタイムコード)で入れます。

使う人の足し引きと期限

メールアドレス単位で足し引きする

使う人の名簿は1か所に置きます。そこを直せば、Access で守っているすべての画面に反映されます。

ログイン状態には期限がある

期限は24時間です。名簿から外しても、すでに開いている画面は期限が切れるまで使えることがあります。

裏口を作らない

API にも同じ入口を重ねる

管理画面の API・Worker の直 URL にも同じ入口を付けます。さらに API 側でも、Access が発行した確認票(JWT)の発行元と宛先をもう一度確かめます。

確認用・試作用の環境も同じ入口

管理画面の確認用・試作用の環境と、Cloudflare Pages がデプロイのたびに発行するプレビュー URL にも、同じ入口を付けます。

使わない入口は閉じる

使わなくなった公開 URL(Cloudflare の workers.dev)は閉じます。保護の外に入口を残さないためです。

検索に出さない・埋め込ませない

検索と埋め込みを止めるヘッダー

管理画面などの画面には、検索結果に出さない指示(noindex)と、他のサイトへの埋め込みを禁止するヘッダーを付けます。

Data

入った後に何が見えるか

入れた人に見せる範囲と、残す記録を決めます。

見せてよい項目だけを返す

一覧は項目を固定したビューから返す

購入希望者の一覧は、データベースの「ビュー」(見せてよい項目だけを切り出したもの)からだけ読みます。ビューには氏名・連絡先の列がないので、元の表に列を足しても、ビューを直さない限り一覧には出ません。

管理操作の記録

管理画面での操作を記録する

誰が・何に対して・どんな操作をして・結果がどうだったか(成功・拒否・競合・エラー)を、記録として残します。

通知に入れない情報

通知の本文に連絡先や入力内容を入れない

この実装例では、LINE のサービスメッセージの本文は、受付番号・種別・日時・定型文だけです。連絡先や入力内容は載せず、中身はミニアプリのマイページで見てもらいます。

Customer

お客様の本人確認

お客様に新しいパスワードを作っていただかず、LINE のログインで本人を確かめます。

LINE ログインの検証

LINE のログイン証明を自分で検証する

LIFF から受け取った ID トークンを、LINE の公開鍵で検証します。発行元と、自社のチャネル宛てかどうかも照合します。

ログイン状態の持たせ方

セッションの Cookie に守りを付ける

ログイン後の状態は Cookie で持たせます。HttpOnly(画面のスクリプトから読めない)・Secure(https のときだけ送る)・SameSite=Lax(他のサイトからの送信には原則付けない)を指定し、署名(HMAC)で改ざんを見分けます。期限も付けます。

Secrets

秘密情報の置き方

署名用の鍵など、漏れると困る値の扱いです。

秘密情報は直接登録する

コードにも、インフラ構成の定義(Terraform)にも書かず、Cloudflare に直接登録します。Terraform に入れると、状態ファイルに平文で残るためです。

Process

開発の進め方と検査

テストや CI などの検査は品質基準のページに、セキュリティの考え方の解説はブログにまとめています。

セキュリティの解説記事

Limits

限界と、発注前に確かめたい点

ここまでの対策で、危険がなくなるわけではありません。案件ごとに要件を確認し、構成を決めます。

メールアドレスが守りの要になる

パスワードを持たない代わりに、守りの要は登録したメールアドレスに移ります。メールには二段階認証を設定し、共有ではなく一人ひとりのアドレスを登録することをおすすめします。

外しても、開いた画面は期限まで残りうる

使う人を名簿から外しても、すでに開いている画面は、ログイン状態の期限(24時間)まで使えることがあります。急ぐ場合は、ご相談ください。

CONTACT

AIシステム開発・導入まずは無料で相談

アイデア段階からの壁打ちも歓迎。
エンジニアが直接ヒアリングします。

最短翌営業日に回答
相談無料秘密保持契約対応可オンライン完結