REST APIセキュリティを確保する方法

Webアプリケーションプログラミングインターフェイス(Api)は、最新のwebおよびモバイ Web API呼び出しはすべてのwebトラフィックの80%以上を占めており、サイバー犯罪者はApiをターゲットにすることが増えているため、web APIのセキュリテ REST Apiは、webサービス用の最も一般的なタイプのweb APIです。 REST APIのセキュリティを確保するために何ができるかを見てみましょう。

REST APIセキュリティ

REST APIとは何ですか?

REST(REpresentational State Transferの略)は、web開発のためのソフトウェアアーキテクチャスタイルであり、通常はHTTP通信で使用されます。 RESTful Api(または単にREST Api)は、RESTの原則に従うアプリケーションプログラミングインターフェイスであり、webクライアントとサーバーが膨大なさまざまなwebリソー REST Apiは、標準のHTTP動詞(メソッド)とステータスコードを使用して、ある程度の標準化を提供します。 これらはHTTP Urlを介してアクセスされ、webサービスに広く使用されています。

注: REST ApiはHTTPプロトコル自体のようにステートレスであり、現在の接続やセッションに関する情報は保存されません。 RESTful webサービスはリソースにアクセスして操作する方法を提供しますが、セッション管理はアプリケーションで処理する必要があります。

2つのレベルのREST APIセキュリティ

技術的な詳細に入る前に、注意すべき重要なことが1つあります。 Web APIはwebアプリケーションへのインターフェイスを公開するため、APIへのアクセスとアプリケーションへのアクセスという2つのレベルでセキュリテ

APIレベルでは、許可されたクライアントのみがインターフェイスを使用し、許可された操作のみを実行できるように、適切な認証、承認、アクセス権な アプリケーションレベルでは、アプリケーションエンドポイント(インターフェイスへのアクセスに使用されるUrl)が、インターフェイスを介して取得またはバイ

これらの2つのレベルでREST APIセキュリティを確保する方法を見てみましょう。 APIセキュリティのベストプラクティスの詳細については、”OWASP REST Security Cheat Sheet”を参照してください。

安全なAPIアクセスの確保

ほとんどのweb Apiはインターネットに公開されているため、悪用を防止し、機密データを保護し、認証されたユーザーと承認されたユー

接続セキュリティ

セキュリティはHTTP接続自体から始まります。 安全なREST Apiは、すべてのAPI通信がSSL/TLSを使用して暗号化されていることを確認するために、HTTPSエンドポイントのみを提供する必要があります。 これにより、クライアントはサービスを認証し、API資格情報と送信されたデータを保護します。

APIアクセス制御

多くのweb Apiは、プライベートであるか、登録や支払いが必要なため、認証されたユーザーのみが利用できます。 REST Apiはステートレスであるため、アクセス制御はローカルエンドポイントによって処理されます。 最も一般的なREST API認証方法は次のとおりです:

  • HTTP基本認証:資格情報は、暗号化せずにBase64エンコーディングのHTTPヘッダーで直接送信されます。 これは、最も簡単な認証方法であり、実装するのが最も簡単です。 機密データはプレーンテキストとして送信されるため、HTTPSと組み合わせてのみ使用する必要があるため、安全性も最も低くなります。
  • JSON Web Tokens(JWT):認証情報およびその他のアクセスパラメータはJSONデータ構造として送信されます。 これらのアクセストークンは暗号的に署名することができ、REST Apiへのアクセスを制御するための推奨される方法です。 JSON Webトークンの概要についてはOWASP JWTチートシート、完全な仕様についてはRFC7519を参照してください。
  • OAuth:標準のOAuth2.0メカニズムを認証と承認に使用できます。 OpenID Connectは、OAuth2.0を介した安全な認証を可能にします。 たとえば、GoogleのApiは認証と承認にOAuth2.0を使用しています。

APIキーを使用したユーザー認証

APIキーは、パブリックRESTサービスへのアクセスを制御する方法を提供します。 公開webサービスのオペレータは、APIキーを使用してAPI呼び出しのレート制限を適用し、サービス拒否攻撃を軽減できます。 収益化されたサービスの場合、組織はapiキーを使用して、購入したアクセスプランに基づいてアクセスを提供できます。

APIクライアントの制限

セキュリティリスクを最小限に抑えるために、RESTサービスオペレータは、クライアントの接続をサービスに必要な最小限の機 これは、サポートされているHTTPメソッドを制限して、誤った構成または悪意のあるクライアントがAPI仕様および許可されたアクセスレベルを超え たとえば、APIでGET要求のみが許可されている場合、POSTおよびその他の要求タイプは、応答コード405メソッドnot allowedで拒否する必要があります。

Apiを公開するアプリケーションの保護

クライアントが正当なアクセス権を持っていれば、基になるwebアプリケーションを不正な入力や悪意のある入力から保護する必要があります。 REST APIの呼び出しと応答には、制御が必要な機密データも含まれます。

API通信における機密データ

API呼び出しには、認証情報、APIキー、セッショントークン、およびその他の機密情報が含まれることがよくあります。 Urlに直接含まれている場合、これらの詳細はwebサーバーのログに保存され、サイバー犯罪者がログにアクセスした場合に漏洩する可能性があります。 機密情報の漏洩を避けるために、RESTful webサービスは常にHTTP要求ヘッダーまたは要求本文(POSTおよびPUT要求の場合)で送信する必要があります。

コンテンツタイプの検証

APIクライアントの制限のテーマを続けて、RESTサービスは許可されたコンテンツタイプを正確に定義し、HTTPヘッダーに正しい宣言 これは、Content-TypeAcceptヘッダーの両方で許可された型を慎重に指定し、文字セット(可能な場合)と一緒に指定することを意味します。 サービスにJavaScript(またはその他のスクリプトコード)が含まれている場合は、ヘッダー内のコンテンツタイプが要求本文と同じであることを確認する必要が これは、ヘッダ注入攻撃を防ぐのに役立ちます。

応答セキュリティヘッダー

追加のHTTPセキュリティヘッダーを設定して、要求のタイプとスコープをさらに制限することができます。 これには、MIMEスニッフィングに基づくXSS攻撃を防ぐX-Content-Type-Options: nosniffと、古いブラウザでのクリックジャックの試みを防ぐX-Frame-Options: denyが含まれます。

サービスがクロスドメイン呼び出しをサポートしていない場合は、応答ヘッダーでCORS(cross-origin resource sharing)を無効にする必要があります。 このような呼び出しが予想される場合、CORSヘッダーは許可された起点を正確に指定する必要があります。

入力検証

Apiは、ユーザーの操作なしで自動アクセス用に設計されているため、すべての入力が有効で期待されることを確認することが特に重要です。 API仕様に準拠していない要求はすべて拒否する必要があります。 入力検証の典型的なベストプラクティスガイドラインが適用されます:

  • すべてのパラメータ、オブジェクト、およびその他の入力データを信頼できないものとして扱います。
  • 使用可能な場合は、組み込みの検証機能を使用します。
  • リクエストのサイズとコンテンツの長さとタイプを確認します。
  • APIパラメータに強力な型指定を使用します(サポートされている場合)。
  • SQLインジェクションを防ぐには、クエリを手動で作成しないようにします。
  • ホワイトリストのパラメータ値と文字列入力を可能な限り可能にします。
  • すべての入力検証の失敗をログに記録して、資格情報の詰め込みの試行を検出します。

REST APIセキュリティが重要な理由

Web Apiは現代のwebおよびモバイル開発のバックボーンです。 アプリケーションとサービスは、ハードウェアとソフトウェアのプラットフォーム間でデータを通信および交換することができます。 他のAPI形式(SOAPなど)もまだ使用されていますが、現在はREST Apiが支配的なタイプであり、すべての公開web Apiの80%以上を占めています。 それらは移動式適用およびIoT装置の大半にバックエンドを提供し、システムおよび適用を渡る容易な統合を可能にする。

WEBアプリケーションと同じ技術を使用しているため、REST Apiは同じ攻撃に対して脆弱になる可能性があります。 同時に、Apiは手動アクセス用に設計されていないため、特に一部のエンドポイントや機能が文書化されていない場合は、テストが困難になる可能性 APIセキュリティテストでは、完全なカバレッジを確保するために正確な自動化ツールが必要です。 Netsparkerは、さまざまな認証方法と自動URL書き換えによるREST API脆弱性スキャンを完全にサポートします。

完全な技術的な詳細については、Netsparker REST APIテストサイトのドキュメントを参照し、NETSPARKERで脆弱性を検出するREST Apiのスキャンに関する記事全文をお読みくだ

ズビグニェフ・バナッハ

著者について

Zbigniew Banach

Netsparkerのテクニカルコンテンツライター。 ITジャーナリストや技術翻訳者としての経験を活かし、Netsparkerのブログやウェブサイトでwebセキュリティをより多くのユーザーに提供するために最善を尽く

webセキュリティの動向を最新の状態に保つ

You might also like

コメントを残す

メールアドレスが公開されることはありません。