2

私の API エンドポイントは POST リクエストを受け入れます。

ServletRequest.getParameterリクエストパラメータ値を取得するために使用します。getParameter要求された文字列または POST フォーム本体のいずれかでパラメーター値を見つけることができます。このような動作を考えると、私の API ユーザーは、GET リクエストのようなパラメーターを渡す POST リクエストを送信できます。

/callApi?paramA=123&paramB=123

ただし、APIURL パラメータではなくフォーム値を受け入れる必要があります。

問題はありません。

しかし、優れた設計の観点からすると、ユーザーがそのようなリクエストを行おうとすると、API はエラーを報告する必要がありますか?

4

3 に答える 3

0

私の本能は、使用する HTTP 動詞やデータが渡される方法に関係なく、サーバー側のコードが同じ方法でセキュリティを処理する必要があることに基づいて、「はい、問題ありません」と言います。入力をスクラブして SQL インジェクションを回避することは、そのような例の 1 つです。

あなたが説明したクラスとメソッドに精通していませんが、一貫性を保つために、2つを区別する方法があると仮定して、クエリ文字列データではなくPOSTされたフォームデータを使用すると思います。

于 2013-09-24T01:38:49.157 に答える
0

最終的にパラメータを取得したときに、クエリ文字列であるかボディであるかを判断するデフォルトの方法がないため、問題ないと思います。クエリ文字列をチェックして、パラメータがそこに存在するかどうかを確認し、それに応じて行動する必要があります。

クエリ文字列ではなく本文でそれを行うようにドキュメントに指定し、送信先の URL をできるだけ無駄にしないようにします。

回答を提供するときにこれが役立つことがわかりました。

于 2013-09-24T01:48:39.597 に答える