PHP のページ間でクレジット カード情報を安全に渡すにはどうすればよいですか? 私は e コマース アプリケーションを構築しており、ユーザーが次のようにチェックアウトできるようにしたいと考えています。
情報を入力 -> 確認 -> 注文を確定
問題は、ユーザーが信用情報を入力してから処理するまで (注文の確定ステップで) 信用情報を安全に渡す方法がわからないことです。暗号化を使用しても、セッションの使用は安全ではないと聞きました。
どんな助けでも大歓迎です!
PHP のページ間でクレジット カード情報を安全に渡すにはどうすればよいですか? 私は e コマース アプリケーションを構築しており、ユーザーが次のようにチェックアウトできるようにしたいと考えています。
情報を入力 -> 確認 -> 注文を確定
問題は、ユーザーが信用情報を入力してから処理するまで (注文の確定ステップで) 信用情報を安全に渡す方法がわからないことです。暗号化を使用しても、セッションの使用は安全ではないと聞きました。
どんな助けでも大歓迎です!
どこにも保管しません。それはあまりにもリスクが高く、おそらく倫理的ではありません。
https 経由でフォームを投稿して支払いゲートウェイにリクエストを送信し、トランザクションの結果のみを保存します。
おそらく、トランザクションが承認されたか拒否されたかだけを気にします。番号が何であるか誰が気にしますか?
クレジットカード情報をセッションに保存したり、データベースに保存したり、ファイルに保存したりしないでください。代わりに、非表示のhtml入力でcc情報をレビューページに書き戻します。
したがって、プログラムフローは次のように機能します。
この方法の利点は2つあります。
この最後の点は、別の懸念を引き起こします。レビューページを作成することで、暗号化されたクレジットカードデータがネットワークを介して送信される回数が2倍になります。この方法では、最小4つの送信があります。クライアントからサーバー、サーバーからクライアント、クライアントからサーバー(ここでも)、サーバーからゲートウェイです。レビューなしでは、クライアントからサーバーへの送信とサーバーからゲートウェイへの送信の2つ以上の送信があります。レビューページの利便性は、余分な送信のリスクに見合う価値がありますか?これは、Web開発者(およびクライアント)としてのあなたが下す決定です。
まず、HTTPS プロトコルを使用して、接続が暗号化されていることを確認する必要があります。
その後、データを$_SESSION
スーパーグローバルに保存できます。データはサーバーに保存されるため、比較的安全です。
注文データベースに情報を挿入する同様の手法を実行できます。キーは、GUID またはかなりランダムで一意のものです。次に、その人が注文を変更/レビューするときに、注文 ID を URL の GET 部分に保存する必要があります (または、妄想的な場合は、Cookie/セッション変数)。
https://example.com/order?orderID=akjgflkhaslasdfkjhalsdjkljahs
セキュリティを強化するために、注文テーブルに IP アドレスを保存し、IP と注文 ID が一致することを確認することもできます。
1 つの代替方法は、 Authorize.net の Customer Information Managerなどの支払いプロファイル サービスを使用することです(他にもあります)。API を介してプロファイルに支払い情報を保存し、実際にカードに請求するときにプロファイル ID を使用します。この方法では、サーバーにデータを保存することはありません。
同意せざるを得ないと思います。クレジットカード番号を保存することはリスクが大きすぎ、その結果は想像を絶するものになる可能性があります。
理想的な方法は、情報をサード パーティのプロセッサに渡し、返された結果を使用してスクリプト ロジックを形成することです。
if (transaction){
// code goes here
}
else{
// code goes here
}
ポイントを理解していただければ幸いです... :)
私の専門分野ではありませんが、CSRF攻撃を回避するために、セッションに保存するだけでなく、「同期トークン」(または最近の子供たちが呼んでいるもの)も使用したいと思います。
もちろん、https を (正しく) 使用したり、URL や非表示フィールドに機密データを含めたり、非常に機密性の高い情報を応答に含めたりすることは避けたいと考えています。