我正在寻求实施删除确认表的最佳做法建议。
以下页面以及其他选项包含删除按钮...
/website/features/f/123
...点击后,一个简单的表格会被加载到以下网址:
/website/features/f/delete/123
用户必须在简单的删除确认表中确认删除。完成'检查以确认' 复选框后,删除按钮将启用。
一切都很好,但是我担心提供删除选项的直接网址可能会导致......比如,可以避免的情况。
有没有更好的方法来处理这种情况?也许引用验证?
答案 0 :(得分:3)
最常见的情况可以避免"是:
答案 1 :(得分:2)
实际上删除某些内容应该要求用户登录该站点,并且您应该检查该用户是否具有实际删除某些内容的必要权限。如果您的用例允许可以公开删除某些内容,那么如果确认是否被检查则无关紧要(想想巨魔)。如果您的用户有权删除某些内容,那么除非在URL中输入错误内容,否则应该没有任何问题。
为避免这种情况,您还可以实现DELETE http请求(想想REST)。权限和DELETE的组合应该足以避免绕过确认对话框。
另一种解决方案可能是实现验证令牌。确认对话框生成需要由删除操作验证的秘密令牌。
答案 2 :(得分:1)
我实现了我最初的推荐理念。但一如既往,我愿意接受建议和建设性的批评。
if(empty($_SERVER['HTTP_REFERER'])) $this->_app->redirect('/website/features', 302);
请注意,这是基于slim的重定向。