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 に答える