从外部PHP文件注入后


HTML - Post injection from external PHP file

我有一个想法,假设有一个表单有变量存储一些数据(基于此- form将相应地处理)

假设用户在他们的电子邮件中获得了一个推荐/注册链接,让我们使用加密的GET变量url,如:http://www.example.com?a42as231Adab

例如有一个表单从get变量中获取id:

$usersID = decrypt($_GET['user']);
<form method='POST' action='viewdata.php?userID=$usersID'>

,因为用户可以点击查看源代码,他们将很容易看到操作的引导和它解析的userID。

那么什么能阻止某人:在他们的服务器上创建一个空白的新PHP文件,将原始表单复制到他们的PHP文件中并将其更改为:

<form method='POST' action='viewdata.php?userID=1'>

我的意思是假设在这种情况下userID是顺序的,那么1,2,3最终可能是administrator。

然后viewdata。php如果它注意到userID是admin,它会允许用户管理一些东西

换句话说:有没有办法防止表单被张贴从任何特定的域名?

我知道如果用户可以根据他们的ID访问,这可能被认为是非常差的安全措施,但是,我仍然对此感到好奇,这只是我的一个随机想法。

如果你不想让任何人乱动敏感信息,那就不要给他们。与index.php以加密形式处理此信息的方式相同,viewdata.php也可以这样做。

您也可以将它存储在$_SESSION中,并让viewdata.php从那里获取它。这就是$_SESSION存在的原因。

要防止跨站点发布,请使用postkey。例如:

echo "<form method='POST' action='viewdata.php?userID=$usersID'>";
echo "<input type='hidden' name='postkey' value='" . session_id() . "'>';

现在在viewdata.php中,检查$_POST['postkey'] == session_id()是否知道该用户是否真的提交了配方,或者是否被某些外部源诱导。