2

我正在寻求实施删除确认表单的最佳实践建议。

除其他选项外,以下页面包含删除按钮...

/website/features/f/123

...单击时,会在以下 url 下加载一个简单的表单:

/website/features/f/delete/123

用户必须在一个简单的删除确认表单中确认删除。选中“检查以确认”复选框后,删除按钮将启用。

一切都很好,很清楚,但是我担心提供删除选项的直接 URL 可能会导致......比如说,可以避免的情况。

有没有更好的方法来处理这种情况?也许是推荐人验证?

4

3 回答 3

3

最常见的“可以避免的情况”是:

于 2016-12-06T08:11:42.660 回答
2

实际删除某些内容应该要求用户登录到该站点,并且您应该检查该用户是否具有实际删除某些内容的必要权限。如果您的用例允许可以公开删除某些内容,那么是否检查确认并不重要(想想巨魔)。如果您的用户有权删除某些内容,那么除非在 URL 中输入错误内容,否则应该没有任何问题。

为避免这种情况,您还可以实现 DELETE http 请求(想想 REST)。权限和 DELETE 的组合应该足以避免绕过确认对话框。

另一种解决方案可能是实现验证令牌。确认对话框生成一个秘密令牌,需要通过删除操作进行验证。

于 2016-12-06T18:20:40.103 回答
1

我实现了我最初的推荐人想法。但与往常一样,我愿意接受建议和建设性的批评。

if(empty($_SERVER['HTTP_REFERER'])) $this->_app->redirect('/website/features', 302);

请注意,这是一个基于苗条的重定向。

于 2016-12-06T08:05:09.493 回答