受信したデータが本物であることを php スクリプトに知らせる方法が必要です。
クライアント側
送信するすべてのデータを連結して文字列にします。現在の日付と時刻 (クライアント側) も文字列に入れます。その情報も送信する必要があります。
次に、たとえば静的文字列「xyw#q''wz」または送信されたデータから派生したものなど、さらにデータを使用して文字列を「ソルト」します。
その文字列をチェック文字列と呼びましょう
最後に、チェック文字列の MD5 ハッシュを計算し、データと現在の日付と時刻と共に送信します。
サーバ側
PHP スクリプトは、すべてのデータと MD5 ハッシュを受け取ります。
クライアント側で行ったのとまったく同じ方法で、受信したデータに対して同じ操作 (連結、ソルティングなど) を実行して、 check-stringを再構築します。
その MD5 を計算し、2 つのハッシュ (受信したハッシュと計算したばかりのハッシュ) を比較します。
それらが一致する場合、データは本物であり、データベースに追加できます。それ以外の場合は、再投稿されていないか、再投稿されています。
-
まとめ
クライアント: データ -> 文字列を作成 -> 文字列から MD5 を作成 -> データを送信 & MD5
サーバー : データ (受信) -> 文字列を構築 -> 文字列から MD5 を作成
(クライアント側 MD5 == サーバー側 MD5) ? はい データ本物 : NO 偽物または転載
-
使い方
どのようなデータ セットでも、有効な MD5 ハッシュは 1 つだけです。誰かが偽のデータを投稿したい場合は、有効な MD5 も渡す必要があります。しかし、彼は MD5 がどのように構築されているかを知りません。
ハッカーを困らせるために、文字列にランダムなデータを「塩漬け」するように言いました。
これは、あなたが望むものを達成するための1つの方法です(私が思うに簡単です)。
クライアント側のアプリが (Java ではなく) JavaScript で記述されていた場合、JS コードがcheck-stringを構築するプロセスを公開するため、このアプローチは非常に脆弱であることに注意してください。
最後の注意として、それは防弾ではありません。賢いハッカーは、チェック文字列をどのように構築するか、または Java を逆コンパイルするかを推測し、(いくらかの労力を払って)チェック文字列がどのように構築され、偽のデータの MD5 を生成するかを突き止めることができます。