セキュリティについて
このシステムでは、アカウントの乗っ取りや、他社のデータの閲覧・改ざんを防ぐため、次のような対策を行っています。
不正ログイン・アカウントの乗っ取り
- パスワードの総当たり
- 短時間に何度もログインに失敗すると、ログインを一時的に止めます。
- 登録されているメールアドレスの調査
- ログインやパスワード再設定では、登録の有無にかかわらず同じ応答・同じ処理時間を返し、メールアドレスが登録されているかを判別できないようにしています。
- データベースからのパスワード漏えい
- パスワードは元に戻せない形(業界標準の方式によるハッシュ化)で保存し、そのままの形では保持していません。
- なりすまし登録
- メールアドレスの本人確認(確認メールのリンク)を完了しないとログインできません。
- 管理者アカウントの乗っ取り
- 卸業者の管理者アカウントでは、認証アプリによる二要素認証を設定できます。スマートフォンを紛失したとき用に、使い捨てのリカバリーコードも発行します。
- 二要素認証コードの総当たり・使い回し
- コードの入力ミスの回数を制限し、一度使ったコードは再利用できません。
- メールの大量送信
- パスワード再設定メールや店舗アカウントの招待メールは、短時間に送れる回数を制限しています。
- 攻撃の見落とし
- ログインの制限がかかったときや、リカバリーコードが使われたときは、監視システムが運営者に即時に通知します。
パスワード・メールアドレスの変更
- ログイン中の画面を使った勝手な変更
- パスワード・メールアドレスを変更するときは、現在のパスワードの入力が必要です(二要素認証を設定している場合は認証コードも必要です)。
- パスワード変更に気づかない
- パスワードを変更すると、登録メールアドレスにお知らせを送り、変更した端末以外のログイン状態を解除します。
- メールアドレスの書き換えによる乗っ取り
- 新しいメールアドレスに届く確認リンク(24 時間有効)を開くまで変更されません。変更が完了すると、変更前のメールアドレスにもお知らせを送ります。
- 取引先のなりすまし
- 名前・メールアドレスが変更されると、取引のある相手にも通知し、変更前と変更後を並べてお知らせします。
ログイン状態の盗用
- 悪意のあるスクリプトによるログイン情報の盗み取り
- ログイン情報は、ブラウザ上のプログラム(JavaScript)から読み取れない Cookie に保存しています。
- 通信の盗聴
- すべての通信を HTTPS で暗号化しています。ログイン情報の Cookie も暗号化された通信でのみ送ります。
- 盗まれたログイン情報の長期間の悪用
- ログイン情報は短い時間で期限が切れ、更新のたびに新しいものに入れ替わります。
- パスワード再設定後も古いログイン状態が残る
- パスワードを再設定すると、すべての端末のログイン状態を解除します。
- 削除済みアカウントでのアクセス
- 削除されたアカウントはログインできず、残っていたログイン状態も無効になります。
- 他のサイトから操作を実行させる攻撃(CSRF)
- Cookie に SameSite 属性を設定し、外部のサイトからの不正な操作を防いでいます。
権限のないデータ・他社のデータへのアクセス
- 発注者による管理者機能の利用
- 卸業者・本部・店舗でアカウントの種類を分け、画面とサーバーの両方で、操作できる権限があるかを確認しています。
- 他社のデータの閲覧・操作
- すべての操作で、対象のデータがログイン中のアカウントのものかをサーバー側で確認しています。URL などの番号を書き換えても、他社のデータは表示・操作できません。
- 他社の商品の注文・金額の改ざん
- 注文の内容と金額はサーバー側で計算し直して確認します。画面から送られた金額はそのまま使いません。
- 招待リンク・パスワード再設定リンクの使い回し
- 招待リンクは 7 日間、パスワード再設定リンクは 1 時間で期限が切れ、一度使うと無効になります。
Web アプリケーションへの攻撃
- データベースへの不正な命令(SQL インジェクション)
- 入力された値は命令として実行されない仕組み(パラメータ化クエリ)でデータベースに渡しています。
- 画面への不正なスクリプトの埋め込み(XSS)
- 画面に表示する文字や、メール本文に差し込む文字は、プログラムとして動かないよう変換(エスケープ)して表示しています。
- 偽のサイトに埋め込んで操作させる攻撃(クリックジャッキング)
- 他のサイトへの埋め込み(iframe)を禁止しています。
- CSV ファイルを使った攻撃(CSV インジェクション)
- ダウンロードする CSV ファイルでは、Excel などで開いたときに数式として実行されそうな値を、ただの文字として扱われるよう変換しています。
- 不正な値の送信
- 入力された値の形式・文字数・範囲を、サーバー側で確認しています。
- 画像に見せかけた不正なファイルのアップロード
- ファイルの中身から画像の形式を判定し、JPEG・PNG・WebP 以外のファイルや、サイズの大きすぎるファイルは受け付けません。
運用・インフラ
- 障害・異常の検知
- エラー監視の仕組みを導入し、異常があれば運営者に通知されます。
- ログからの情報漏えい
- パスワードやログイン情報などは、ログや監視サービスに記録しません。
- インフラ
- 主要な国際的セキュリティ認証を取得したクラウドサービス上で運用し、データベースに保存するデータは暗号化しています。
