PHP可以搞砸重定向吗?这可能吗?

时间:2017-12-01 15:56:53

标签: php security

情景1:

<?php
header('Location: accessdenied');
//code to delete your entire database below
?>

情景2:

<?php
header('Location: accessdenied');
die();
//code to delete your entire database below
?>

假设我想知道标题是否有可能失败?

让我们说你有一些代码,你从来没有想要被执行,你遗漏了一个死();是否有可能以任何方式执行场景1中的代码。

场景2我知道以下代码永远不会被执行。

但我的问题是,情景1也是如此吗?

谢谢:)

P.S。我知道很少有这种情况会让人感到高兴(因为你可以使用if语句等等,但假设我想知道标题是否无法工作然后导致下面的代码执行?

3 个答案:

答案 0 :(得分:9)

header()在输出中附加一个标题。它不会停止在其所属的文件中执行代码。调用header()后的任何代码仍然会运行,即使它是重定向。浏览器仍将重定向,但代码仍将在服务器上运行。

答案 1 :(得分:0)

始终建议在任何标头重定向后使用exit()或die()。否则有可能执行不必要的代码。 exit()或die()确保在服务器中停止代码执行。

答案 2 :(得分:0)

你需要确保在header函数之后使用exit()或die(),你的场景#1将会失败

http://php.net/manual/en/function.header.php

header("Location: http://www.example.com/");/* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;