問題:
Web サイトのスコアリング システム。ハッシュを使用して、 HTTP リクエストの整合性は、リクエストの重複によって悪用されています。攻撃者は高スコアを達成し、リクエストの詳細を複製してシステムを操作しています。
Nonce 解決策:
この攻撃に対抗するには、Nonce システムを実装することが賢明です。 Nonce (一度使用される数値) は各リクエストに一意の値を提供し、同じリクエストの再利用を防ぎます。
Nonce システムを設定する一般的で安全な方法:
サーバー側関数:
クライアント側関数:
実装の詳細:
Nonce システムの例:
// Server-Side getNonce() { $id = identifyRequest(); $nonce = hash('sha512', makeRandomString()); storeNonce($id, $nonce); return $nonce; } verifyNonce($data, $cnonce, $hash) { $id = identifyRequest(); $nonce = getNonce($id); removeNonce($id, $nonce); $testHash = hash('sha512', $nonce . $cnonce . $data); return $testHash == $hash; } // Client-Side sendData($data) { $nonce = getNonceFromServer(); $cnonce = hash('sha512', makeRandomString()); $hash = hash('sha512', $nonce . $cnonce . $data); $args = ['data' => $data, 'cnonce' => $cnonce, 'hash' => $hash]; sendDataToClient($args); }
この nonce システムを実装すると、Web サイトはリクエストの重複を効果的に防止し、スコアリング システムの整合性を維持できます。
以上がWeb サイトの整合性を保護し、リクエストの重複を防ぐために nonce システムを実装するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。