2017-08-10 17 views
0

javax.ws.rsを使用してREST APIを実装しています。実装の目標は可能な限り安全であるため、すべての入力を検証する必要があります。javax.ws.rsで入力検証を実行するにはどうすればよいですか?

入力の検証のために、私はを実装する公開クラスValidatingHttpRequestを実装しています。

私は11つのメソッドを呼び出すこともできます。他のメソッドはすべてUnsupportedOperationExceptionをスローします。しかし、これらのメソッドの中には、RESTフレームワークで使用されているものを処理するものがあります。例えば、私のコードはヘッダを気にしませんが、getHeadersが呼び出されます。多くのリバースエンジニアリングでは、どのヘッダが使用され、検証されるべきかを理解することができ、もちろん検証を行うことができます。おそらく、最適でない振る舞いや、おそらくいくつかのバグを導入することがあります。また、HTTP要求のいくつかの同様の側面があります。

これまでに誰もこれをやったことはありませんでした。実際にRESTフレームワークの仕組みを実際に知っている人はいませんか?フレームワークそのものをだますことができないので、それは不要ですか?

したがって、完全に検証されているHttpServletRequest実装、またはこの場合には不要な理由を探しています。もちろん、実装を使用してリクエストボディとパラメータを検証します。

答えて

2

javax.ws.rsを使用してREST APIを実装しています。 [...]入力検証のために、を実装するpublicクラスValidatingHttpRequestを実装しています。

JAX-RSの全体的なポイントがありません。 JAX-RSでは、注釈付きのリソースクラスとメソッドを扱うので、 "低レベル"というサーブレットを書く必要はありません。

私は完全に検証するHttpServletRequestの実装、またはこの場合には不要な理由を探しています。

あなたは間違いなく検証目的のためにサーブレットを書くこと(を必要としないとを望んでいません。

Jersey、RESTEasy、Apache CXFなどのJAX-RS実装では、Java Beanを検証するアノテーションベースのAPIであるBean Validationをサポートしています。要求ヘッダー、パラメータ、エンティティなど、必要なものをすべて検証することができます。

JAX-RS specificationの第7章を参照して、検証の仕組みについて説明します。ただし、JAX-RS実装と豆の検証を統合するために、あなたは、ベンダー固有のdocumentantion見たい:

関連する問題