0

私は本当にシンプルなウェブサイトに取り組んでいます。私は通常、本格的な管理者を使ってサイトを編集しますが、今回はその場で編集することを考えました(contenteditable = "true")。

ユーザーのログインを簡素化するために、通常のログインフォームの代わりに、アドレスバーに入力してログインできるパスワードをユーザーに提供したいと思います。したがって、彼はdomain.com/page?p=the_passwordにアクセスし、次に彼のデータをセッションに保存し、セッションID(通常のもの)を含むCookieを渡して、domain.com/pageにリダイレクトします。

これはどれくらい安全/危険ですか?私はこれをPHPで行っていますが、サーバー側のどの言語にも当てはまると思います。

4

2 に答える 2

2

ログインのアイデアは安全ではありません。リクエストのURLはWebサーバーのログやその他の場所に記録されるため、パスワードはWebサーバーのログに記録されます。

あなたの「コンテンツ編集可能な」アイデアはおそらく安全ではありませんが、もっと微妙な方法です。また、(おそらく)HTTP仕様に準拠していません。

GET要求は常にべき等である必要があります。これは、ユーザーエージェント(ブラウザー、キャッシュなど)が、GETユーザーの同意なしに同じ要求を何度でも再発行できるためです。ブラウザがこれを行う理由の1つは、ユーザーが[戻る]ボタンを押すと、前のページがキャッシュに存在しなくなったためです。要求がべき等でない場合は、2回目の要求を発行すると、予期しない望ましくない副作用が発生する可能性があります。

「インプレース編集」機能が常にべき等であるとは限らないようです。単純な編集には多くの種類があり、実際にはべき等であるため、間違っている可能性がありますが、たとえば、この種のインターフェイスを介して新しいアイテムをリストに追加できるようになると、そうではありません。

べき等でない要求は、、、、などPUTの方法で発行する必要がPOSTありDELETEます。

于 2012-09-27T13:33:54.857 に答える
1

@Celadaの回答に追加します。URLはブラウザの履歴またはネットワークキャッシュ/プロキシに保存されるため、この方法でパスワードが漏洩する可能性があります。また、たとえばdomain.com/page?p=the_passwordを指すimg要素を持つWebサイトを作成することにより、ランダムなインターネットユーザーを他の誰かとしてログインすることは簡単です(クロスサイトリクエストフォージェリ攻撃にログイン)。

これについては書きませんが、ユーザーがログインしたら、スキームはクロスサイトリクエストフォージェリから保護する必要があります(したがって、ランダムなページはログインしたユーザーの動作に対して管理アクションを実行できません)。

于 2012-09-27T19:04:21.643 に答える