私はウェブサイトを持っていて、Zoopla、天気などのサードパーティのサービスからパブリックAPIを利用したいと思っています。
サードパーティのサービスから取得したデータから悪意のあるコード/マルウェアを消費しないようにしたいと思います。
サードパーティのパブリックAPIを使用するときに考慮すべきセキュリティチェック/ベストプラクティスは何ですか?
AWS API Gatewayを使用しています。
他の人が言及したことに加えて、私はこれらのガイドラインに従うことをお勧めします:
サードパーティスキーマの検証サードパーティが公開されたSwagger/OpenAPIスキーマを持ち、APIの構造を適切に定義している場合(たとえば、minLength、maxLength、タイプなど)、スキーマに基づいて受信データを検証するようにしてください。
独自のスキーマ検証受信データセットの一部を使用していると仮定して、そのデータのみを抽出し、入力が期待に沿っていることを検証します(たとえば、度単位の天気、整数であることを確認してください)
バイナリにサードパーティのマルウェアスキャン/検証ツールを使用しますバイナリを取得している場合は、ラムダ関数を利用して、オープンソースを使用してファイルをスキャンできますClamAVでスキャンする( この記事の行の何か )または検証にVirusTotalを使用する( これは、slack統合+ラムダ+ virustotalの例です )
ここにいくつかのヒントがあります:
上記の回答を @ mhr および @Raimonds-Liepiņš で拡張するには:
パブリックAPIから取得したすべてのデータを入念に検証します。テキストまたは「不明な」データは、 セキュリティエンコーディングライブラリ でフィルタリングする必要があります。
たとえば、公開APIから取得される気象データについて考えてみます。
1
になります。具体的に。何か違うとエラーになります。A-Za-z0-9
と標準の句読点を使用した基本的なテキスト。許可されるテキストの最大量を定義し、そのしきい値を超えるものに対してエラーを生成します。または、データを切り捨てて、このアクションを示す...
サフィックスを適用することを検討してください。このデータは Security Encoding Library でフィルタリングする必要があります。クライアントがパブリックAPIに課せられたレート制限を乱用しないことを確認してください。パブリックAPIには独自の強制方法がある可能性がありますが、善良な市民であり、基準を下回らないことが最善です。
TLSは、下記のように多くの保護を提供します。安全なプロトコル(TLS 1.2
など)と強力な暗号を使用する必要があります。エラーが発生しないようにしてください。
暗号化された接続 のすべての利点を利用できます!
- 証明書の検証を通じてターゲットWebサイトに直接接続していることを保証します。これは、次を防御します。中間者攻撃、DNSハイジャック、BGPハイジャック、ドメインスプーフィング( HTTPが安全でない理由 )。
- すべてのコンテンツが
HTTPS
を介して読み込まれるため、ターゲットWebサイトはより安全です。いくつかの例には、ログインとCookieを保護しながら httpからhttpsへの投稿 と混合コンテンツからの保護が含まれます。- 一部のISPは、暗号化が無効になる広告配信目的で接続を監視することが知られています。
- 隣接するシステムが危険にさらされても、あなたは保護されます。
投稿には、使用されているフレームワークと消費されたデータに関する詳細が含まれていないため、上記は、すでに提供されている回答を拡張する一般的なガイドラインです。詳細については、 [〜#〜] owasp [〜#〜] および チートシートシリーズ をご覧ください。メインページでは、探しているものを見つけるために検索が必要になる場合がありますが、それだけの価値があります。
APIの使用やユーザー入力の受け入れとは無関係に、データを確認せずに信頼しないことをお勧めします。
したがって、データが予想どおりであることを確認する必要があります。
MITMの傍受とデータの変更を軽減するには、TLSを使用する必要があります(http(s)経由でデータを取り込むことを前提としています)。