REST APIがあり、POSTを介してすべてのHTTPリクエストを処理したい。
POSTを使用して、ユーザーが要求するすべてのCRUD操作を実行し、実行する操作(およびその他の情報)を指定するJSONを送信する)にセキュリティ上の問題はありますか?
GET
(およびHEAD
、OPTIONS
およびTRACE
)は、安全なメソッドとして定義されています ( RFC 7231、4.2.1 )。この定義では、GET
を使用してPUT
、DELETE
などを置き換えることはできません。
PUT
とDELETE
はべき等法です( 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ではなくなりますが、任意のアプリケーション固有のインターフェース。