基本的に私はクレジット カードを処理するサイトに取り組んでいます。しかし、取引/請求が行われると、クレジットカードに関する情報をデータベースに保存したいと思います。
今のところ、最初の 4 つと最後の 4 つの数字と有効期限を保存することを考えています。ただし、プラン テキストには保存しません。独自の暗号化方法を作成しました。
それは十分に安全ですか?
基本的に私はクレジット カードを処理するサイトに取り組んでいます。しかし、取引/請求が行われると、クレジットカードに関する情報をデータベースに保存したいと思います。
今のところ、最初の 4 つと最後の 4 つの数字と有効期限を保存することを考えています。ただし、プラン テキストには保存しません。独自の暗号化方法を作成しました。
それは十分に安全ですか?
それは十分に安全ですか?考えさせて。うーん、人々が安全だと思っていたサイトから、過去数年間にかなり多くのデータ侵害が発生したことを考えてほしい.
Sony、NHS、EverNote、Yahoo、Ubisoft、Apple、Blizzard、さらには NSA (自社の情報を保護するのに最も適していると思われる機関) などのサイト。ここから:
さらに、独自の暗号化が決定的な攻撃に耐えられる可能性は低いです。
しかし、本当の問題は、なぜその情報が必要なのかということです。情報は実際にはカードの所有者のものであり、それを保存するサイトはその所有者の安全性を低下させています. 顧客が何枚の異なるカードを使用しているかなどを知る必要がある場合は、顧客に別の識別子を使用し、カード番号の非可逆ハッシュ値を保存する方がよい場合があります。ハッシュはカード番号の検索空間全体で衝突が発生しますが、1 人の顧客内で衝突が発生する可能性ははるかに低くなります。
また、法域によっては、保存できるデータが法律によって制限されている場合があります。
PCI 準拠の観点からは、最初の 4 つと最後の 4 つだけをプレーン テキストで保存しても問題ありません。PCI では、実際には最初の 6 桁 (これは IIN または発行者 ID 範囲として知られています) と最後の 4 桁 (最後の桁はチェックサムです) のプレーン テキスト ストレージが許可されています。
これらは、最初の 6 桁と最後の 3 桁を印刷できるレシートの標準に似ています。
ただし、あなたの質問は当然のことながら警鐘を鳴らします。あなた (またはあなたのシステム) が完全なカード番号にアクセスできる場合は、PCI-DSS の対象となります。コンプライアンスの監視と維持には、特にサード パーティの QSA (認定セキュリティ アセッサー) によるコンプライアンスの検証が必要な場合に、時間とコストがかかる可能性があります。
より良いアプローチは、すでに PCI に準拠している支払いゲートウェイを使用することです。カードの承認/決済を実行し、データベースに安全に保存できるトークン ID および/またはカード番号のハッシュを返すことができます。