3

この記事では、

サイトが共有 Web サーバー上で実行されている場合は、同じサーバー上の他のユーザーがセッション変数を簡単に表示できることに注意してください。

GoDaddy のような大規模なホストでは、これに対する保護は本当にありませんか? それは本当に簡単でしょうか?それが簡単な場合、ホスト上の他のユーザーのセッション変数はどこにあるので、チェックアウトできますか?

4

5 に答える 5

8

デフォルトではLinuxインストールおよびWindowsの同様のものをphp.ini#session.save_path指しているため、これは途方もなく簡単です。/tmpほとんどのユーザーは、必要なために読み取りおよび書き込み特権を持っているため、これは悪いこと/tmpです。これを防ぐには、セッション状態をデータベースに保存するか、PHPアプリケーションがセッションファイルを保存するかどうかを変更します。session_save_path

于 2009-01-28T14:58:52.567 に答える
2

デフォルトでは、セッションファイルはphp.iniのsession.save_pathで指定された場所に保存されます。これは仮想ホストごとに個別に定義できますが、ファイルはhttpdプロセスで読み取り可能である必要があるため、場所がわかっている場合、スクリプトは別の仮想ホストからセッションファイルを読み取ることができます。

サーバーの他のユーザーがPHPソースを読み取ってデータベースのクレデンシャルを学習できない場合は、セッションをデータベースに保存できます(たとえば、ADODbを使用)。

于 2009-01-28T14:56:26.130 に答える
1

これらの問題を回避するために、セッション データを DB に保存することをお勧めします。これにより、ユーザーのセッションからのライブ情報へのアクセスが容易になるという追加の利点があります。

于 2010-05-21T10:03:53.937 に答える
1

PHP を使用していて、セッションの乗っ取りが心配な場合は、session_regenerate_id( Link to Manual ) を参照してください。

ここで他の人が述べたように、これは session_save パスが公開されているという問題を解決しませんが、ハイジャック攻撃の 99.999% を防ぐ必要があります。

于 2009-01-28T15:08:21.860 に答える
0

session.save_path を使用して、シャード ホストにいるときはいつでも、アカウント スペース内でのみ訪問者セッションを設定、保存、および処理します。

ディレクトリにアクセスできるホストの従業員以外はアクセスできません。

共有ホスト上のデフォルトのセッション ハンドラー/場所に依存しないでください。

<?php

        $handle = opendir(session_save_path());
        if ($handle == false)
            {
                return -1;
            }
        while (($file = readdir($handle)) !== false)
            {
                echo session_save_path() . '/' . $file .':<BR />';
                if (ereg("^sess", $file))
                    {
                        $file_array = file(session_save_path() . '/' . $file);
                        foreach ($file_array as $this_line)
                            {
                                echo $this_line."<BR />";
                            }
                echo '<BR /><BR />';

                    }
            }
        closedir($handle);

?>
于 2009-05-07T08:51:41.157 に答える