web-dev-qa-db-ja.com

PUTまたはDELETEは、GETまたはPOSTよりもセキュリティ上の利点がありますか?

REST APIがあり、POSTを介してすべてのHTTPリクエストを処理したい。

POSTを使用して、ユーザーが要求するすべてのCRUD操作を実行し、実行する操作(およびその他の情報)を指定するJSONを送信する)にセキュリティ上の問題はありますか?

7
Maf
  • GET(およびHEADOPTIONSおよびTRACE)は、安全なメソッドとして定義されていますRFC 7231、4.2.1 )。この定義では、GETを使用してPUTDELETEなどを置き換えることはできません。

  • PUTDELETEべき等法ですRFC 7231、4.2.2 ):

    リクエストメソッドは、そのメソッドによる複数の同一リクエストのサーバーへの意図した影響が、そのような単一のリクエストの影響と同じである場合、「べき等」と見なされます。この仕様で定義されている要求メソッドのうち、PUT、DELETE、および安全な要求メソッドはべき等です。

POSTメソッドにはこれらの制限はありませんが、Representation State TransferRESTはソフトウェアのアーキテクチャスタイルであることを覚えておいてください。 W3Cワーキンググループノート2004年2月11日 .1. から、強調は私のものです。

Representation State Transfer(REST)と呼ばれる信頼性の高いWebアプリケーション用のさらに制約されたアーキテクチャスタイルは、Roy Fieldingによって提案され、W3C Technical Architecture Groupのアーキテクチャドキュメント[Web Arch ]そしてそれをWebサービスを構築する方法のモデルとして見ている多くの人々[Fielding]。 REST Webは、エージェントが提供するWWW(HTTPに基づく)のサブセットです均一なインターフェースセマンティクス-本質的に作成、取得、更新、削除-任意またはアプリケーション固有のインターフェースではなく、表現の交換によってのみリソースを操作します。さらに、REST対話は、メッセージの意味が会話の状態に依存しないという意味で「ステートレス」です。

したがって、POSTの代わりにPUTを使用しても、DELETEは直接的なセキュリティへの影響はありませんが、APIはRESTfulではなくなりますが、任意のアプリケーション固有のインターフェース

8
Esa Jokinen