PHPの脆弱性徹底解説(7) - セッションハイジャック
サーバーとクライアントはセッションを通じて通信します。クライアントのブラウザがサーバーに接続すると、サーバーはユーザーのセッションを確立します。各ユーザーのセッションは独立しており、サーバーによって維持されます。各ユーザーのセッションは、セッション ID と呼ばれる一意の文字列によって識別されます。ユーザーがリクエストを行うと、送信される http ヘッダーにはセッション ID の値が含まれます。サーバーは http ヘッダーのセッション ID を使用して、どのユーザーがリクエストを送信したかを識別します。
セッションは各ユーザーの個人データを保存します。一般的な Web アプリケーションは、認証されたユーザー アカウントとパスワードを保存するためにセッションを使用します。異なる Web ページを変換するときにユーザーの身元を確認する必要がある場合は、セッションに保存されたアカウント番号とパスワードを使用して比較します。セッションのライフサイクルは、ユーザーがサーバーに接続したときに開始され、ユーザーがブラウザを閉じるかログアウトして session_destroy 関数がセッション データを削除したときに終了します。ユーザーが 20 分以内にコンピューターを使用しない場合、セッションは自動的に終了します。
セッションを処理するための PHP アプリケーション アーキテクチャ
セッション ハイジャック
セッション ハイジャックとは、攻撃者がさまざまな手段を使用してターゲット ユーザーのセッション ID を取得することを指します。セッション ID を取得すると、攻撃者はターゲット ユーザーの ID を使用して Web サイトにログインし、ターゲット ユーザーの操作権限を取得することができます。
攻撃者がターゲットユーザーのセッションIDを取得する方法:
1) ブルートフォースクラッキング: クラックされるまでさまざまなセッションIDを試します。
2) 計算: セッション ID が非ランダムな方法で生成された場合、それを計算することが可能です
3) 盗用: ネットワーク傍受、XSS 攻撃、その他の方法を使用して
セッション ハイジャック攻撃手順
インスタンス
//login.php session_start(); if (isset($_POST["login"])) { $link = mysql_connect("localhost", "root", "root") or die("无法建立MySQL数据库连接:" . mysql_error()); mysql_select_db("cms") or die("无法选择MySQL数据库"); if (!get_magic_quotes_gpc()) { $query = "select * from member where username=’" . addslashes($_POST["username"]) . "’ and password=’" . addslashes($_POST["password"]) . "’"; } else { $query = "select * from member where username=’" . $_POST["username"] . "’ and password=’" . $_POST["password"] . "’"; } $result = mysql_query($query) or die("执行MySQL查询语句失败:" . mysql_error()); $match_count = mysql_num_rows($result); if ($match_count) { $_SESSION["book"] = 1; mysql_close($link); header("Location: http://localhost/index.php?user=" . $_POST["username"]); } ….. // 打开Session 访客的 Session ID 是:echo session_id(); ?>
ログイン後、
攻撃開始
// Attack.php
php
//セッションを開く
();
エコー「セッション」ターゲット ユーザーの ID は次のとおりです。 "
";
echo "ターゲット ユーザーのユーザー名は次のとおりです。"
";
echo "対象ユーザーのパスワードは次のとおりです: " . $_SESSION["password"] . "
";
// 冊数を 2000 に設定します
$_SESSION["book "] = 2000;
?>
Submit http://localhost/攻撃.php?PHPSESSID=5a6kqe7cufhstuhcmhgr9nsg45 このIDは取得した顧客セッションIDです。顧客ページ更新後
セッション固定攻撃
ハッカーは、攻撃を完了するためにセッション ID をユーザーに送信する方法を使用できます
http://localhost/index.php?user=dodo&PHPSESSID=1234 このリンクを表示するためにユーザー dodo に送信します
その後、攻撃者は http://localhost/ Attack.php ?PHPSESSID=1234 にアクセスし、顧客ページが更新されて
予防方法
1) セッションIDを定期的に変更する
関数 bool session_regenerate_id([bool delete_old_session])
delete_old_session trueの場合、古いセッションファイルが削除されます。 falseの場合、古いセッションが削除されます。デフォルトは false です。
Add
session_start();
session_regenerate_id(TRUE);
...
これにより、リロードされるたびに新しいセッション ID が生成されます。 2) セッションの名前の変更
セッションのデフォルト名は PHPSESSID です。ハッカーがパケットをキャプチャして分析しない場合、名前を推測して一部の攻撃をブロックすることはできません。
session_start();
int_set("session.use_trans_sid", 0);
session_start();
$seid = md5(uniqid(rand()), TRUE ));

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

この記事では、Laravel Webフレームワークの通知システムを検討します。 Laravelの通知システムを使用すると、さまざまなチャネルでユーザーに通知を送信できます。今日は、通知ovを送信する方法について説明します
