Cookieを無効にするとセッションは確実に使用できなくなるって本当ですか?
1. ASP
ASP では、セッションは Cookie に依存して利用可能になります。セッションはサーバー側に保存されますが、相対的に言えば、セッションは Cookie よりも安全で信頼性が高くなります。
2. PHP
PHP では、関連する設定を通じて、Cookie に依存せずにセッションが存在できます。これは次の理由によるものです:
セッションはサーバー側に保存されます (デフォルトでは、セッションはファイルとして保存されます)。ユーザーのファイルはクライアントから提供されたセッション ID に従って取得され、変数の値が取得されます。 ID はクライアントの Cookie または Http1.1 プロトコルを使用できます。Query_String (アクセスされた URL の「?」以降の部分) がサーバーに送信され、サーバーはセッション ディレクトリを読み取ります。つまり、Session IDはサービス上に格納されているSession変数を取得するためのIDカードです。コード session_start(); が実行されると、サーバー上にセッション ファイルが生成され、それに一意に対応するセッションも生成されます。 ID は、生成されたセッション ファイルに特定の形式で保存されるセッション変数を定義します。セッション ID を通じて、定義された変数を取得できます。ページを通過した後、セッションを使用するには、session_start() を再度実行する必要があります。別のセッション ファイルが生成され、それに応じて、このセッション ID を使用して最初のセッション ファイルを取得することはできません。このセッション ID はそれを開くための「キー」ではないため、変数は入力されます。session_start(); の前にコード session_id($session id); を追加すると、新しいセッション ファイルは生成されず、この ID に対応するセッション ファイルが直接読み取られます。
PHP のセッションは、デフォルトでクライアントの Cookie を使用してセッション ID を保存するため、クライアントの Cookie に問題があるとセッションに影響します。 Session は必ずしも Cookie に依存する必要はなく、これが Cookie と比較した Session の利点でもあることに注意してください。クライアントの Cookie が無効になっている場合、または問題が発生している場合、PHP は自動的にセッション ID を URL に添付し、セッション ID を介してページ間でセッション変数を使用できるようにします。ただし、この添付ファイルには「php.ini の session.use_trans_sid」という特定の条件もあります。 = 1"、またはコンパイル時に "--enable-trans-sid" オプションがオンになります。
フォーラムを使用したことのある友人は、フォーラムに参加するときに、Cookie がオンになっているかどうかを確認するよう求められることがよくあることを知っています。これは、なぜなら、ほとんどのフォーラムはすべて Cookie に基づいており、Cookie は使いやすくするためにユーザー名やパスワードなどのユーザー情報を保存するために使用されます。さらに、多くの友人は Cookie が安全ではないと考えており (実際にはそうではありません)、PHP で無効にすることがよくあります。セッションを使用して Cookie を置き換えます。これは、クライアントが Cookie をオンにするかどうかには依存しません
したがって、Cookie を脇に置き、Session を使用することができます。つまり、ユーザーが Cookie をオフにすることを前提として、Session を使用する方法がいくつかあります。これを実現するには:
1. php.ini 設定ファイルで「session.use_trans_sid = 1」を設定するか、コンパイル時に「--enable-trans-sid」オプションをオンにして、PHP がページ間でセッション ID を自動的に渡すようにします
2 . URL を通じて値を手動で渡し、セッション ID を渡すためのフォームを非表示にします。
3. セッション ID をファイル、データベースなどに保存し、クロスページ プロセス中に手動で呼び出します。
---------------- --------------------------------- ----------------- --------------------------------- -----------------
iguowei2004.blog. 163.com/blog/.""s2.php">次のページ";
echo $url;
?>
--------------------------------------------- ----- -------------------------------------- -----
-------------------------------------- ---------------------------------------------------- ---- ----------------
// s2.php var1'];
?>
--------------- ------------------------ ------------------------ ------------------------ ------------------------
上記のコードを実行すると、クライアント Cookie が正常であれば、「中華人民共和国」という結果が得られるはずです。
ここで、クライアント上の Cookie を手動で閉じて再度実行すると、結果が得られない可能性があります。結果が得られない場合は、php.ini ファイルで「session.use_trans_sid = 1」を設定するか、コンパイル時に「--enable-trans-sid オプション」をオンにすると、「中華人民共和国」という結果が得られます。 」。
パス 2 例:
------------------------------------------ ---------------------------------------------------- ---- ----------------------------------
共和国";
$sn = session_id();
$url="次のページ";
echo $url;
---- ------------------------------------------------ ---- -----------------------------------
-------- ------ -------------------------------------------- ------ -------------------------------------- -----
session_id ($_GET['s']; ?>
------------------------------------ ------------ -------------------------------------- ------------ ------------------
---------------------------- --------------------------------- ------------------- ------------------------
login.html
gt; =" content- type "c/html; charset = gb2312"> -------------------------------------- ------- ------------------------
---- ------------ -------------------------------------- ----------- -------------------------------------- -----------
mylogin1.php
|| !$pass) {
| "; E die ();
}
if (! ($ Name ==" laigw "&& $ pass ==" 1234 ") {
echo" ユーザー名 またはパスワードが間違っています。 & lt; a href = "http : //laiguowei2004.blog.163.com/blog/login.html "& gt; 再ログイン & lt;/a & gt;" "
die () ;
}
//登録ユーザー
phpsid.txt"," w+"); r fwrite ($ fp, $ psid);
fclose ($ fp);
// 認証が成功し、関連する操作
& & lt;";
echo "& lt; a href = "http://laiguowei2004.blog.163.com/blog/mylogin2.php">次のページ";
?>
---------------- ---------------------------- -------------------- ------------------------------ -------------------- -
---------------------------- -------------------- ------------------------------ -------------------- ------------------
mylogin2.php
$fp = fopen( "d:tmpphpsid.txt"、 "r");
$ sid = fread($ fp、1024);関連する操作を行うにはログインしてください
未
& & lt; a href =" http://laiguowei2004.blog .163.com/blog/login.html">ログイン閲覧";
die();
-------------------------------------- ----------- -------------------------------------- -----------
Cookie テストもオフにしてください。ユーザー名: laigw; パスワード: 1234; ファイルを通じてセッション ID を保存します。ファイルは D:/tmp/phpsid です。 txt のファイル名やパスはご自身のシステムに合わせて決めてください。
要約すると、上記のメソッドには 1 つの共通点があります。それは、前のページでセッション ID を取得し、それを次のページに渡す方法を見つけて、その前にコード セッション ID (渡されたセッション ID) を追加することです。 session_start(); コードは次のページにあります。
上記では、Cookie が無効になっている場合でもセッションは使用できるかについて紹介しました。 、関連コンテンツも含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









