将图像ID传递给php文件的安全方式

时间:2017-03-31 12:59:27

标签: php html security

大家好我正在制作一个小图片上传网站。我发现了一个问题可以解决,我会告诉你。

我使用foreach来显示每个图像,因此html中的1个图像如下所示:

<a href="edit.php?id=ID_OF_PIC"><img src="IMG_PATH"></a>

用大写字母写的东西只是例子,但有工作价值。在edit.php中,id用于更新图片名称。但如果我是一个偷偷摸摸的聪明黑客,我可以更改id中的href,并且像这样我可以更改另一篇文章。那么如何/在哪里可以保存/隐藏id以便没有人可以更改它?

2 个答案:

答案 0 :(得分:1)

简单解决方案:使用表格foreach图像。像:

<form action="edit.php" method="post">
   <input type="hidden" value="ID_OF_PIC" name="id">
   <input type="hidden" value="TOKEN" name="tokenID_OF_PIC">
   <img src="IMG_PATH"><input type="submit" value="edit">
<form>

在发送表单之前,请创建TOKEN并将其保存在与ID相关的会话中。

$_SESSION['tokens'][ID_OF_PIC]='TOKEN_FOR_ID_OF_PIC';

TOKEN应该是每个图片ID的唯一字符串。

发布表单时,您获得了id和令牌。 您知道可以检查ID和TOKEN是否有效。

if($_SESSION['tokens'][ID_OF_PIC]==$_POST['tokenID_OF_PIC']){}

因此,这允许用户仅编辑服务器通过带有正确令牌的表单发送的图片。

但是,当IMG_PATH中还有ID时,这并不会阻止用户在浏览器中打开pic normal来查看它。

答案 1 :(得分:1)

@Qirel找到了一个简单的解决方案。实际上并不是很难做到这一点。在我的示例中,我只需要检查编辑图像的用户是否是图像的所有者。