我有一个php页面,它执行插入操作,然后重定向到显示订单详细信息的“success”页面。我正在使用变量重定向,但我认为这不太安全:
header("location:success.php?id=$orderid");
这将生成如下url:success.php?id=22
然后,我使用URL获取订单ID号,并在此基础上进行查询以显示订单详细信息:

$getName = explode('?id=', $_SERVER['REQUEST_URI']);
$id = $getName[1];

$query = <<<SQL
SELECT * FROM `order` WHERE `orderid` = ?;
SQL;

$request = $mysqli->prepare($query);
$request->bind_param("i", $id);
$request->execute();

显而易见的问题是,任何人都可以简单地更改URL id号来获取不同订单号的详细信息。我不太担心,因为这是一个严格的内部网站,但我仍然想纠正这种行为。有没有更好、更安全的方法来做到这一点?

最佳答案

这里有一个更简单的解决方案:将orderid存储在这样的会话中。
在重定向时,您将得到如下值:

$getName = explode('?id=', $_SERVER['REQUEST_URI']);
$id = $_SESSION['orderid'];

$query = <<<SQL
SELECT * FROM `order` WHERE `orderid` = ?;
SQL;

$request = $mysqli->prepare($query);
$request->bind_param("i", $id);
$request->execute();

关于php - PHP更安全的重定向方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30461867/

10-12 17:38
查看更多