当我编辑来自用户的帖子时,我使用以下网址:
../post/edit/3 //If the id of the post is 3 for example
为了避免用户故意修改 url,例如/post/edit/5
,我使用以下逻辑来确保用户在没有权限时不会编辑帖子:
if (//user is allowed to edit post){
//edit post
}
else {
throw new AccessDeniedException('You do not have the permission to edit this post');
}
这是您在编辑帖子时使用的一般方法吗?有没有办法做一些更清洁的事情,这样用户就不能在 url 中使用帖子的 id 了?
编辑
我想得越多,我就越意识到我从来没有在一个关注安全的网站中看到像这样的 url 中的 id。所以,我同意我们仍然可以使用 id 并检查用户是否可以显示/看到这个 id,但用户仍然可以做太多事情。对 id 进行哈希处理不是更好吗,允许我们使用任何可用的算法生成一个新的加密 ID:
<?php
echo hash('md5', 'id_to_edit');
?>
保护 url 中的 id 的标准方法是什么?一般来说,在 url 中显示像 id 这样的信息是个好主意吗?