1

Web サイトで Windows アプリケーションを販売しています。Paypal と LibertyReserve を支払い処理業者として使用しています。購入プロセスを自動化するチェックアウト ボタンを作成しました。購入が完了すると、購入者はサンキュー ページにリダイレクトされます。

チェックアウト完了後にシリアルとダウンロードリンクを発行しています。現在PHPを使ってやっていますが、安全ではありません。

約 100 の連載を含むテキスト ファイルがあります。ユーザーがサンキュー ページにアクセスするたびに、PHP スクリプトは Cookie が設定されていないかどうかを確認します (繰り返しのアクセスを避けるため)。Cookie が設定されていない場合は、シリアルを含むテキスト ファイルを開き、最初のシリアルを読み取り、Cookie に保存します。シリアルがテキスト ファイルから削除されます。その後、ユーザーは「ヘッダー」を使用して、Cookie の内容を表示する最終ページにリダイレクトされ、「これはあなたのシリアル キーです: [シリアルを含む Cookie の値はここに入る]」と表示されます。

これで、ちょっとした頭脳を持つ人なら誰でも、シリアル キーを使ってテキスト ファイル全体を読むことができます。どうすればこれを保護/改善できますか?

どんな提案も役に立ちます。ありがとう!

4

2 に答える 2

0

すべてのシリアル コードを MySQL データベースに保存します。テーブルは次のようになります。

id, serial, purchased, date, hashcode

ユーザーが支払いに成功してペイパルから戻ってきたら、シリアル番号をハッシュコードで取得してユーザーに出力する serial.php?hashcode={hashcode} スクリプトのようなものにリダイレクトします。また、スクリプトはシリアル行を購入済みとして設定します。ユーザーがこのページを 2 回目に表示したくない場合は、それを行うことができます。

于 2013-03-03T14:05:02.737 に答える
-1

すべてのシリアル キーを含むテーブルがあります。

+--------+-----------+
| id     | serial    |
+--------+-----------+
| 1      | 123-45    |
+--------+-----------+
| 2      | 456-43    |
+--------+-----------+

トランザクションが実行され、トランザクションの一意の識別子がある場合、一意の識別子に属するシリアル ID を保持する別のテーブルが作成されます。

+--------+-----------+-----------+
| id     | trans     |  serialId |
+--------+-----------+-----------+
| 1      | 654326    |  1        |
+--------+-----------+-----------+
| 2      | 876430    |  2        |
+--------+-----------+-----------+

serialId/trans 列は一意であるため、2 つのトランザクションが同じシリアル ID を持つことはありません。

于 2013-03-03T14:06:48.613 に答える