現在の位置: ホーム> 最新記事一覧> PHPセッションクロスドメイン攻撃保護スキル:Cookieの設定、ソース検証、トークンメカニズム

PHPセッションクロスドメイン攻撃保護スキル:Cookieの設定、ソース検証、トークンメカニズム

M66 2025-06-22

クロスドメイン攻撃のためのPHPセッション予防措置

Webアプリケーションでは、セッションはユーザーのステータスを追跡して情報を保存するための重要な手段です。ただし、Web環境の開放性により、セッションデータはドメインクロス攻撃の影響を受けやすくなっています。この記事では、PHPで共通の実用的な保護手法を共有し、特定のコード例を含めます。

1. Cookieセキュリティプロパティを設定します

セッションIDは通常、Cookieに保存されます。クロスドメイン攻撃を防ぐために、Cookie属性を調整することでセキュリティを強化できます。主に関与:

  • httponly :JavaScriptがCookieにアクセスするのをブロックし、スクリプトを介してセッションIDを盗むことを避けます。
  • 安全:HTTPS接続にCookieのみを送信して、中間の攻撃を防ぎます。

サンプルコード:

session_start();
<p>//今のCookieパラメーターを得るします<br>
$ cookieparams = session_get_cookie_params();</p>
<p>//安全性なCookie財産を設定します<br>
session_set_cookie_params(<br>
$ cookieparams ["lifetime"]、<br>
$ cookieparams ["path"]、<br>
$ cookieparams ["domain"]、<br>
true、// secure<br>
true // httponly<br>
);</p>
<p>$ _Session ["username"] = "user123";</p>
<p>session_write_close();<br>

2.リクエストソースドメイン名を確認します

要求されたソースドメイン名をチェックすることにより、セッション操作が承認されたドメイン名の下でのみ発生し、クロスドメイン攻撃のリスクを減らすことを確認します。 $ _server ['http_referer']を使用して実装できます。

 if (isset($urlParts['host']) && $urlParts['host'] === $allowedDomain) {
    return true;
} else {
    return false;
}

}

//例を使用します
if(validAtereferer( "embles.com")){
//セッション関連操作を実行します
} それ以外 {
//違法ソース、アクセスが拒否またはプロンプトされたエラー
}

3.トークンを生成および検証して、CSRFを防止します

セッションごとに一意のトークンを生成し、クライアントがリクエストしたときに持ち運び、サーバー側のトークンの一貫性を確認して、偽造要求を防止します。

//トークンを生成するします
関数GenerateToken(){
    $ token = bin2hex(random_bytes(32));
    $ _Session ["csrf_token"] = $ token;
    $トークンを戻るします。
}
<p>//トークンを確認します<br>
function validateToken($ token){<br>
Return Isset($ _ SESSION ["CSRF_TOKEN"])&& $ _Session ["csrf_token"] === $ token;<br>
}</p>
<p>//トークンを生成するし、それらを出力して形状します<br>
$ token = generatetoken();</p>
<p>エコー &#39;<form method="post"> &#39;;<br>
エコー &#39;<input type="hidden" name="csrf_token" value="' . $token . '"> &#39;;<br>
エコー &#39;<input type="submit" value="提案しますする"> &#39;;<br>
エコー &#39;</form> &#39;;</p>
<p>//リクエスト処理時に確認します<br>
if(isset($ _ post ["csrf_token"])&& validatetoken($ _ post ["csrf_token"])){<br>
//トークンは有効で、動作しますを実行します<br>
} それ以外 {<br>
//トークンは無効で、動作しますは拒否されます<br>
}<br>

要約します

Cookie属性を合理的に設定し、リクエストソースドメインを確認し、トークンメカニズムを採用することにより、PHPセッションのクロスドメイン攻撃リスクを効果的に保護できます。実際の開発における特定のビジネスシナリオを組み合わせ、セキュリティの脆弱性に注意を払い、ユーザーデータとプライバシーセキュリティを確保するためにタイムリーにポリシーを更新することをお勧めします。