私は既存のWebサイトで作業しており、セキュリティの問題を探しています。ブラウザがリダイレクトされた後、PHPスクリプトが中止されたと言っても差し支えありませんか、それとも巧妙なユーザーがスクリプトを強制的に続行させることができますか。ユーザーが現在ログインしている場合、「is_logged_in」は1または0を返すと想定します。この関数には脆弱性がないと想定します。コードは次のとおりです。
<?
$fp = fopen("./debug.txt", "a");
fwrite("BEFORE LOGIN CHECK\n");
if(!is_logged_in()) {
fwrite("Not authed \n");
header("Location: $url", TRUE, 302);
}
fwrite("Passed auth check \n");
/* Code to do some logged in functionality here */
?>
ログインしたユーザーで通常のブラウザを使用すると、
BEFORE LOGIN CHECK
Passed auth check
ログインしていないユーザーの場合
BEFORE LOGIN CHECK
Not authed
生のリクエストを使用して、スクリプトを開いたままにする(そしてリダイレクトを無視する)ことは可能ですか?
BEFORE LOGIN CHECK
Not authed
Passed auth check
基本的に、ifブロックに入り、リダイレクトヘッダーを取得して無視し、スクリプトの実行を続行します。
そうでない場合は、次のようにして問題を修正します。
if(!is_logged_in()) {
fwrite("Not authed \n");
header("Location: $url", TRUE, 302);
die();
}
しかし、これが問題であるかどうかはわかりません。