機密データ(クレジットカードなど)を保存するための最良の方法は何ですか?元のテキストを取得できる必要があるため、ハッシュできません。いくつかのアイデアがあります。
AES_ENCRYPT()
およびとMySQLを使用するAES_DECRYPT()
を使用して暗号化してファイルに保存します
fwrite()
MySQLの暗号化および復号化機能が安全ではないことがわかりましたが、PHPで使用できる、簡単、高速、安全な暗号化はありますか?
サーバーにクレジットカード番号を保存しないでください。この情報をデータベースに保存すると、ハッカーにとって非常に魅力的な標的になります。そして、あなたがそれを守ることができると思うなら、もう一度考えてください。ハッカーは、優れたセキュリティを備えた企業のセキュリティを打ち負かしました。あなたのセキュリティはこれ以上良くなることはありません。
最善の策は、Authorize.NetのCustomer Information Manager(CIM)のようなサービスを使用することです。このサービスを使用すると、サーバー上に支払いプロファイルを作成し(つまり、情報を保存し)、料金を請求します。そうすれば、必要なときにいつでも顧客に請求できますが、クレジットカード情報を保存する必要はありません。
自分でそれを行うことを主張する場合は、このガイドで概説されているPCIルールに従う必要があります。ただし、このガイドの方が理解しやすい場合があります。知っておくべきことについては、14ページをご覧ください。基本的には保存できますが、PCI規格に従って暗号化する必要があります。
参考までに、サーバーとネットワークも安全である必要があります。パズルのいずれかの部分がPCIに準拠していない場合、クレジットカード番号を保存することはできません。それは解決策としてほとんどの共有ホスティング会社を除外します。
通常、カード番号を保存する唯一の理由は、サブスクリプション/定期支払いのためです。優れた決済サービスプロバイダーは、カードの詳細ではなく保存するトークンを提供していることがわかります。その後、それをもう一度プッシュします。
PHP mcryptライブラリを見てください。ただし、カード番号を暗号化/復号化する必要があり、覚えておく必要がある場合は、3桁のセキュリティコードをどこにも保存しないでください。これまで。