【发布时间】:2011-07-11 12:24:25
【问题描述】:
我正在做一个游戏,我为它创建了一个“管理”面板。 它的工作原理是这样的:
admin.php
admin/code1.php
admin/code2.php
admin.php:
<?php
include("lib.php");
$player = check_user($secret_key, $db);
if($player->rank != "Administrador")
{
header("Location: personagem.php");
exit;
}
include("templates/private_header.php");
head("Admin Panel","adminpanel.png");
startbox();
if(isset($_GET['page']))
{
include("admin/" . $_GET['page'] . ".php");
}
else
{
?>
<A href="admin.php?page=code1">Kill Players</a><br>
<A href="admin.php?page=code2">Heal Players</a><br>
<?php
}
endbox();
include("templates/footer.php");
?>
我想知道我是否容易被黑客入侵。 code1.php 和 code2.php 使用 lib.php 中包含的自定义查询库,因此无法直接执行它们而不会出错。
在我的模板中我也有:
if($player->rank == "Administrador")
{
echo "<a href='admin.php'>Admin Panel</a>";
}
这样我可以更快地访问面板。那里也有风险吗?
请注意,$player 是一个通过查询玩家数据库创建的对象,它代表实际玩家。在我看来,破解这个问题的唯一方法是将他们在表格中的“排名”状态更改为“管理员”,对吗?或者有什么我放过的? 提前致谢
【问题讨论】:
-
if($player->rank != "Administrador")- 为什么不使用(数字)常量呢? -
check_user($secret_key, $db);完成所有数据库声明并将 $player 设置为代表播放器的对象
标签: php security administration code-injection