ホームページ php教程 php手册 php5 的 session 详解之三:SESSION 安全

php5 的 session 详解之三:SESSION 安全

Jun 06, 2016 pm 07:47 PM
php5 session 安全性 詳しい説明

会话模块不能保证存放在会话中的信息只能被创建该会话的用户看到。根据其存放的数据,还需要采取更多措施来主动保护会话的完整性。 评估会话中携带的数据并实施附加保护措施通常要付出代价,降低用户的方便程度。例如,如果要保护用户免于受简单的社交策略侵害(

       会话模块不能保证存放在会话中的信息只能被创建该会话的用户看到。根据其存放的数据,还需要采取更多措施来主动保护会话的完整性。

       评估会话中携带的数据并实施附加保护措施通常要付出代价,降低用户的方便程度。例如,如果要保护用户免于受简单的社交策略侵害(注:指在 URL 中显示的会话 ID 会被别人在电脑屏幕上看到,或被别的网站通过 HTTP Referer得到等),则应该启用 session.use_only_cookies。此情形下,客户端必须无条件启用 cookie,否则会话就不工作。有几种途径会将现有的会话 ID 泄露给第三方。泄露出的会话 ID 使第三方能够访问所有与指定 ID 相关联的资源。

       第一,URL 携带会话 ID。如果连接到外部站点,包含有会话 ID 的 URL 可能会被存在外部站点的 Referer 日志中。

       第二,较主动的攻击者可能会侦听网段的数据包。如果未加密,会话ID会以明文方式在网络中流过。对此的解决方式是在服务器上实施SSL并强制用户使用。默认情况下,所有与特定会话相关的数据都被存储在由INI选项session.save_path 指定的目录下的一个文件中。对每个会话会建立一个文件(不论是否有数据与该会话相关)。这是由于每打开一个会话即建立一个文件,不论是否有数据写入到该文件中。注意由于和文件系统协同工作的限制,此行为有个副作用,有可能造成用户定制的会话处理器(例如用数据库)丢失了未存储数据的会话。上面介绍的函数下文将会用到,但还有一些有关 session 的函数也介绍一下:

session_encode

函数功能:sesssion 信息编码

函数原型:string session_encode(void);

返回值:字符串

功能说明:返回的字符串中包含全局变量中各变量的名称与值,形式如:a|s:12:"it is a test\";c|s:4:"lala"; a 是变量名 s:12 代表变量 a 的值"it is a test 的长度是 12 变量间用分号”;”分隔。

session_decode

函数功能:sesssion 信息解码

函数原型:boolean session_decode (string data)

返回值:布尔值

功能说明:这个函数可将 session 信息解码,成功则返回逻辑值 true

      Php5 不再使用 session_id,而是把它变成一个常量 SID,并保存在 cookie 中。如果客户端禁用了cookie,php 会自动通过 url 自动传动传递 SID,其条件是设置php.ini中的 session.use_trans_sid = 1。此时即使客户端即使禁用了 cookie也没关系了。

strip_tags() 来输出 SID 以避免 XSS 相关的攻击。

Session 跨页传递问题:

session 跨页传递需要考虑三种情况:

1客户端禁用了 cookie。
2浏览器出现问题,暂时无法存取 cookie
3 php.ini 中 的 session.use_trans_sid = 0 或者编译时没有打开--enable-trans-sid选项
       为什么会这样呢?下面解释一下原因:
       Session 文件分为两部分:session 变量保存在服务器端(默认以文件方式存储session);而 session id 则以 cookie 形式保存在客户端。(注意:session 默认是基于 cookie 的)。当用户的浏览器向服务器提出请求时,同时发送包含session id的cookie(默认情况下)。服务器根据客户端提供的 session id 来得到用户的文件,即保存在服务器端的 session 变量值。事实上,session id 可以使用客户端的Cookie 或者 Http1.1 协议的 Query_String(就是访问的 URL 的“?”后面的部分)来传送给服务器,然后服务器读取 Session 的目录......。也就是说,session id是取得存储在服务上的 session 变量的身份证。当代码session_start();运行的时候,就在服务器上产生了一个 session 文件,随之也产生了与之唯一对应的一个 session id,定义 session 变量以一定形式存储在刚才产生的 session 文件中。通过 session id,可以取出定义的变量。跨页后,为了使用 session,你必须又执行 session_start();将又会产生一个 session 文件,与之对应产生相应的session id( 注 : 又 会 产 生 是 有 条 件 的 , 如 果 用 户 没 有 禁 止 Cookie 的话,session id 是可以隐藏的传过去的,也就是说不会产生新的 session id,但如果禁止了 Cookie 的话,就需要手动传递 session id 来解决此问题了,见例 2)),用这个session id 是取不出前面提到的第一个session文件中的变量的,因为这个session id 不是打开它的“钥匙”。如果在 session_start();之前加代码session_id($session id);将不产生新的 session 文件,直接读取与这个 id 对应的 session 文件。PHP中的session在默认情况下是使用客户端的 Cookie 来保存 session id的,所以当客户端的 cookie 出现问题的时候就会影响 session 了。必须注意的是:

       session不一定必须依赖cookie,这也是session相比 cookie 的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把 session id 附着在 URL 中,这样再通过 session id 就能跨页使用 session 变量了。但这种附着也是有一定条件的,

其一:“php.ini 中的 session.use_trans_sid = 1 或者编译时打开打开了--enable-trans-sid 选项”;

其二:运行 PHP 的服务器必须是 unix/linux系统,windows 不具备此项功能。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Windows11セキュリティセンターをオフにする方法を詳しく解説 Windows11セキュリティセンターをオフにする方法を詳しく解説 Mar 27, 2024 pm 03:27 PM

Windows 11 オペレーティング システムでは、セキュリティ センターは、ユーザーがシステムのセキュリティ状態を監視し、マルウェアから防御し、個人のプライバシーを保護するのに役立つ重要な機能です。ただし、特定のソフトウェアをインストールするときやシステム チューニングを実行するときなど、ユーザーがセキュリティ センターを一時的にオフにする必要がある場合があります。この記事では、システムを正しく安全に運用するために、Windows 11 セキュリティ センターをオフにする方法を詳しく紹介します。 1. Windows 11 セキュリティ センターをオフにする方法 Windows 11 では、セキュリティ センターをオフにしても、

Windows セキュリティ センターでリアルタイム保護をオフにする方法の詳細な説明 Windows セキュリティ センターでリアルタイム保護をオフにする方法の詳細な説明 Mar 27, 2024 pm 02:30 PM

Windows オペレーティング システムは、世界で最も多くのユーザーを抱えるオペレーティング システムの 1 つとして、常にユーザーに支持されています。ただし、Windows システムを使用する場合、ユーザーはウイルス攻撃、マルウェア、その他の脅威など、多くのセキュリティ リスクに遭遇する可能性があります。システム セキュリティを強化するために、Windows システムには多くのセキュリティ保護メカニズムが組み込まれています。その 1 つが Windows セキュリティ センターのリアルタイム保護機能です。今回はWindowsセキュリティセンターのリアルタイム保護をオフにする方法を詳しく紹介します。まず、しましょう

Windows セキュリティ センターでリアルタイム保護をオフにするためのヒント Windows セキュリティ センターでリアルタイム保護をオフにするためのヒント Mar 27, 2024 pm 10:09 PM

今日のデジタル社会において、コンピューターは私たちの生活に欠かせないものとなっています。 Windows は最も人気のあるオペレーティング システムの 1 つとして、世界中で広く使用されています。しかし、ネットワーク攻撃手法がエスカレートし続けるにつれ、パーソナル コンピュータのセキュリティを保護することが特に重要になってきています。 Windows オペレーティング システムは一連のセキュリティ機能を提供しますが、その重要なコンポーネントの 1 つが「Windows セキュリティ センター」です。 Windows システムでは、「Windows セキュリティ センター」が役に立ちます。

C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス Jun 01, 2024 am 09:26 AM

C++ で機械学習アルゴリズムを実装する場合、データ プライバシー、モデルの改ざん、入力検証などのセキュリティを考慮することが重要です。ベスト プラクティスには、安全なライブラリの採用、権限の最小化、サンドボックスの使用、継続的な監視が含まれます。実際のケースでは、Botan ライブラリを使用して CNN モデルを暗号化および復号化し、安全なトレーニングと予測を確保する方法を示します。

Struts 2 フレームワークのセキュリティ構成と強化 Struts 2 フレームワークのセキュリティ構成と強化 May 31, 2024 pm 10:53 PM

Struts2 アプリケーションを保護するには、次のセキュリティ構成を使用できます。 未使用の機能を無効にする コンテンツ タイプ チェックを有効にする 入力を検証する セキュリティ トークンを有効にする CSRF 攻撃を防ぐ RBAC を使用してロールベースのアクセスを制限する

PHP マイクロフレームワーク: Slim と Phalcon のセキュリティに関する議論 PHP マイクロフレームワーク: Slim と Phalcon のセキュリティに関する議論 Jun 04, 2024 am 09:28 AM

PHP マイクロフレームワークにおける Slim と Phalcon のセキュリティ比較では、Phalcon には CSRF および XSS 保護、フォーム検証などのセキュリティ機能が組み込まれていますが、Slim にはすぐに使用できるセキュリティ機能がなく、手動で実装する必要があります。セキュリティ対策。セキュリティ クリティカルなアプリケーションの場合、Phalcon はより包括的な保護を提供するため、より良い選択肢となります。

Spring Boot フレームワークのセキュリティを強化する方法 Spring Boot フレームワークのセキュリティを強化する方法 Jun 01, 2024 am 09:29 AM

SpringBoot フレームワークのセキュリティを強化する方法 ユーザー データを保護し、攻撃を防ぐには、SpringBoot アプリケーションのセキュリティを強化することが重要です。 SpringBoot のセキュリティを強化するためのいくつかの重要な手順を次に示します。 1. HTTPS を有効にする HTTPS を使用してサーバーとクライアントの間に安全な接続を確立し、情報の盗聴や改ざんを防ぎます。 SpringBoot では、application.properties で次の設定を行うことで HTTPS を有効にできます:server.ssl.key-store=path/to/keystore.jksserver.ssl.k

Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Jun 04, 2024 pm 02:53 PM

Java フレームワーク設計では、セキュリティ ニーズとビジネス ニーズのバランスをとることでセキュリティを実現し、主要なビジネス ニーズを特定し、関連するセキュリティ要件に優先順位を付けます。柔軟なセキュリティ戦略を策定し、脅威に階層的に対応し、定期的に調整します。アーキテクチャの柔軟性を考慮し、ビジネスの進化をサポートし、抽象的なセキュリティ機能を考慮します。効率と可用性を優先し、セキュリティ対策を最適化し、可視性を向上させます。

See all articles