web-dev-qa-db-ja.com

OPTIONSメソッドがHTTPサーバーで許可されないのはなぜですか?

OPTIONSメソッドがHTTPサーバーで許可されないのはなぜですか?

16
Tanaji Padwal

セキュリティの重要な部分は、不要な機能を削除して攻撃対象を減らすことです。通常、これは十分にテストされていない機能でもあるため、予期しない攻撃のベクトルとなる可能性があります。たとえば、GET、POSTに固有であり、他のメソッドを無視するWebアプリケーションに制限/許可があるかもしれません。一方、アプリケーションコードの一部は、リクエストメソッドを無視し、したがって、保護されていないリクエストメソッドを使用すると、保護されたリソースへのアクセスが可能になる可能性があります。

ただし、クロスオリジンリクエストを許可するには、オプションが [〜#〜] cors [〜#〜] に関連して必要になる場合があります。この場合、それを削除すると機能に影響するため、削除しないでください。

一般に、問題となる可能性のあるリクエストメソッドをブラックリストに登録することはお勧めできません。代わりに、ホワイトリストを実行する必要があります。つまり、アプリケーションで適切に処理されることがわかっているリクエストメソッドのみを許可します。

34
Steffen Ullrich

他の人は、攻撃対象を制限し、一部のAjaxサイトが合法的にOPTIONSを使用していることを認識したいと指摘しています。とにかく、私はあなたと最近の経験を共有したいと思いました。

サイトをテストしたところ、実行可能ファイルのアップロードに対して脆弱であることがわかりました。大まかに言えば、JSPファイルをプロフィール写真としてアップロードし、JSPファイルを実行してサーバーを制御することができます。

クライアントが修正を最初に試みたところ、GETリクエストでJSPをフェッチできませんでした。しかし、OPTIONSリクエストを使用してJSPを実行できることをまだ発見しました。 JSP出力は得られませんが、アウトオブバンドメカニズムに接続するようにJSPをコーディングするのは簡単です。

この場合、OPTIONSを許可すると、リモートサーバーが侵害されます。


Rは、それは欠陥のあるオプションではないとコメントしました。それは本当です、それは欠点で悪いコーディングです。しかし、OPTIONSが多層防御策として全面的に無効化されていた場合、このサイトは悪用可能ではなかったでしょう。

4
paj28