3

PHP Web アプリケーションで、セッション ID をファイル名として使用しています。ある時点で、これらのファイルは次のようなコードで削除されます

unlink('tmp/'.session_id());

ユーザーが自分のセッション ID を変更できるという事実を認識しています。したがって、セッションIDを「/../../etc/passwd」のようなものに変更できないかと思います。

私の質問は、そのような「ハッキング」が可能かどうか、そしてどうすれば自分のコードを最善に保護できるかということです。

回答ありがとうございます。

コメント: 私は、ユーザーが他のユーザーのセッションをハイジャックすることに関する危険性と防止方法について知っています。これは、現時点では私の場合の問題ではありません。

4

2 に答える 2

5

セットアップが非常に台無しにされていない限り、ユーザーはセッション ID を直接変更することはできません。これは直接パラメーターであってはならないためです。存在するかどうかを確認するために使用する必要がありますが、任意のセッション ベースを作成するためには使用しないでください。その名前で。

ただし、システムがそうでない場合は、サニタイズすることをお勧めします。preg_replace("#([^0-9a-f]+)#i","",session_id());

于 2013-05-24T20:30:37.100 に答える
0

正規表現を使用して、すべての悪い文字を置き換えることができます。

$sess = session_id();
$clean_sess = preg_replace("/[^a-zA-Z0-9]/Uis", "", $sess);
unlink('tmp/'.$clean_sess);
于 2013-05-24T20:31:32.697 に答える