RESTfulWebサービス-セキュリティ

RESTfulWebサービスはHTTPURLパスと連携するため、Webサイトを保護するのと同じ方法でRESTfulWebサービスを保護することが非常に重要です。

以下は、RESTfulWebサービスを設計する際に従うべきベストプラクティスです-

  • Validation−サーバー上のすべての入力を検証します。SQLまたはNoSQLインジェクション攻撃からサーバーを保護します。

  • Session Based Authentication −セッションベースの認証を使用して、Webサービスメソッドに対して要求が行われるたびにユーザーを認証します。

  • No Sensitive Data in the URL − URLでユーザー名、パスワード、またはセッショントークンを使用しないでください。これらの値は、POSTメソッドを介してWebサービスに渡す必要があります。

  • Restriction on Method Execution− GET、POST、DELETEメソッドなどのメソッドの使用を制限することを許可します。GETメソッドはデータを削除できないはずです。

  • Validate Malformed XML/JSON −Webサービスメソッドに渡された整形式の入力を確認します。

  • Throw generic Error Messages − Webサービスメソッドは、403などのHTTPエラーメッセージを使用して、アクセス禁止などを表示する必要があります。

HTTPコード

シニア番号 HTTPコードと説明

1

200

OK −成功を示しています。

2

201

CREATED−POSTまたはPUTリクエストを使用してリソースが正常に作成されたとき。locationヘッダーを使用して、新しく作成されたリソースへのリンクを返します。

3

204

NO CONTENT−応答本文が空の場合。たとえば、DELETEリクエスト。

4

304

NOT MODIFIED−条件付きGET要求の場合にネットワーク帯域幅の使用量を減らすために使用されます。応答本文は空にする必要があります。ヘッダーには、日付、場所などを含める必要があります。

5

400

BAD REQUEST−無効な入力が提供されたことを示します。たとえば、検証エラー、データの欠落。

6

401

UNAUTHORIZED −ユーザーが無効または間違った認証トークンを使用していることを示します。

7

403

FORBIDDEN−ユーザーが使用されているメソッドにアクセスできないことを示します。たとえば、管理者権限なしでアクセスを削除します。

8

404

NOT FOUND −メソッドが使用できないことを示します。

9

409

CONFLICT−メソッドの実行中に競合状況を示します。たとえば、重複するエントリを追加します。

10

500

INTERNAL SERVER ERROR −メソッドの実行中にサーバーが何らかの例外をスローしたことを示します。