ホームページ > バックエンド開発 > PHPチュートリアル > PHP の Post-Redirect-Get (PRG) パターンはデータの重複と CSRF 攻撃をどのように防ぐのでしょうか?

PHP の Post-Redirect-Get (PRG) パターンはデータの重複と CSRF 攻撃をどのように防ぐのでしょうか?

Patricia Arquette
リリース: 2024-12-17 04:50:25
オリジナル
944 人が閲覧しました

How Does PHP's Post-Redirect-Get (PRG) Pattern Prevent Data Duplication and CSRF Attacks?

PHP Post-Redirect-Get (PRG) コード例

PHP で PRG パターンを実装する場合は、正しい手順に従うことが重要ですページのリロードと戻るボタンの問題から確実に保護します。基本的な実装を見てみましょう:

コード内:

  1. フォームは検証スクリプト (validate.php) に送信されます。
  2. validate.php は、
  3. 生成された HTML (確認ページまたはエラー)
  4. validate.php は、header('Location: ') を使用してユーザーを submit.php または valid_input.php ページにリダイレクトします。
  5. ターゲット ページには、$_SESSION 変数に保存されている HTML が表示されます。

このアプローチでは、 CSRF 攻撃に対するシンプルかつ効果的なソリューションであり、意図しない再送信やデータの重複を防ぎます。

最も単純な PRG シナリオ

簡素化された PRG 実装の場合、次のコード スニペットを使用できます。

if ($_POST) {
    // Validate the input
    
    if (/* input is OK */) {
        // Execute code (database updates, etc.)
        
        // Redirect to the same page
        header("Location: {$_SERVER['REQUEST_URI']}", true, 303);
        exit();
    }
}
ログイン後にコピー

代わりに REQUEST_URI を忘れずに使用してください。 PHP_SELF は、PHP_SELF が別のスクリプト (index.php など) にリダイレクトされる可能性がある CMS システムおよびフレームワークとの互換性を確保します。

以上がPHP の Post-Redirect-Get (PRG) パターンはデータの重複と CSRF 攻撃をどのように防ぐのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート