mo-fu note

技術のこととか色々書きます

クレジットカード決済のセキュリティについて学ぶ(情報漏洩対策とPCI DSS)

クレジットカード決済を利用したシステムを開発している時に、この実装で大丈夫なのか??この処理はこのままで大丈夫なのか??と思うことがたびたびあったので、クレジットカード決済まわりについてWEB+DB PRESS Vol.76 のWeb決済入門を読んだ。

TL;DR

  • 新しくクレジットカード決済を使用するサービスを開発する時はPCI DSS の要件を確認して仕様を検討する必要がある
    • PCI DSS に準拠することで、情報漏洩等のリスクを抑えられる
    • PCI DSSの要件を確認して仕様を決めることでPCI DSS準拠のコストを抑えられる

クレジットカード漏洩時の損害

国際カードブランドから課される罰金

  • MasterCardやVISAなどの国際カードブランドから課される罰金
  • PCI DSSへの不遵守が発覚した場合は1回の事故で15,000ドルから100,000ドルの罰金
  • 漏洩したカード情報の件数に応じて対応にかかる費用

クレジット所有者に対する保証

  • クレジットカードが漏洩すると、そのカードは再発行になる
  • 再発行費用の負担
  • 顧客対応にかかるコスト

ブランド価値の低下

  • 失ったブランド価値によってビジネス機会を逃す
  • 一度傷ついたブランドを回復するには多大な努力が必要

守らないといけない情報

  • 特に重視されているのはクレジットカード番号
  • 有効期限や所有者名、住所等が漏洩しても番号が漏洩しなければ2次被害を防げる

情報漏洩が起きる3大リスクポイント

保存

クレジットカード情報をそのままDBに保存 → SQLインジェクションで番号を抜き出されるなど

  • データを保存しない
  • トークン決済
    • 決済代行サービスが提供しているクレジットカードのトークン化機能を利用
  • 保存する場合
    • ネットワークのセグメント化
      • インターネットにアクセスするサーバとカード番号を保存するDBを別のネットワークに分離
    • データベースの暗号化

処理

処理部分に悪意のあるコードを仕込まれる可能性がある

  • 遷移型の決済ページを利用する
    • 決済代行サービスの決済ページを利用して決済をおこなう
    • クライアントサイドでのトークン化
      • クレジットカード情報をクライアントサイドでトークン化、トークンのみをWebサービスに渡す

伝送

中間者攻撃で通信が傍受されたり、第三者のサーバに送信されたりする

  • SSLでの通信の暗号化
  • クライアントサイドでのトークン化

PCI DSS

  • セキュリティ基準のまとめとして PCI DSS(Payment Card Industry Data Security Standard) がある
  • American Express, Discover, JCB, MasterCard, VISA の5大ブランドが共同で設立したPCI SSC(PCI Security Standards Council)によって策定
  • 現在だとバージョン3.0まで出ている

PCI DSSの12の要件

12の大きな要件と288の詳細な項目で規定されている。 PCI SSCのWebサイトからPDFをダウンロードして閲覧できる。 https://ja.pcisecuritystandards.org/onelink/pcisecurity/en2ja/minisite/en/docs/PCI_DSS_v3.pdf

運営するWebサービスやアプリケーションの準拠カテゴリタイプによって準拠すべきPCI DSSの項目数が異なる。最大で288の項目に準拠しないといけない。

参考