今日のグローバルシナリオでは、すべての企業が所有する最も重要な資産は、データとその可用性、およびパーソナライズされたサービスの提供を委託されていることです。 したがって、データは、保護とセキュリティテストの観点から重要な位置を正しく与えられる必要があります。
特にアプリケーションに関しては、 アプリケーションプログラミングインターフェイス(API)は、機密データへの複数の脆弱なアクセスポイントを提供します。 私たちの目標は、本番のすべての段階でAPIの保護を確保することです。
APIとは
API 通常、XNUMXつのシステム間で情報を転送するために使用され、コードレベルまたはネットワークレベルで機能します。 これは、両方のシステムが同じマシンで動作しているかどうかによって異なります。 注意すべき重要な詳細は 最新のAPIは、Representational State Transfer(REST)の形式を取ります。 それは提供します 特定のAPI呼び出しを設計する簡単な関数 Webサービスの変更またはアクセスに必要なすべての情報を呼び出すため。 もうXNUMXつの興味深い利点は、 フロントエンド間の明確な分離層を提供します (プレゼンテーションの詳細)と バックエンド (データアクセスメカニズム)。
成功するAPIセキュリティテストの原則
主にあります APIセキュリティテストを成功させるための2つの原則
- 入力基準
APIはすべきです 誤ったタイプの入力を拒否する (nullや空など)または 間違ったサイズ。 後者は、REST APIが顧客のアプローチを予測する必要があるため、受け入れ可能な入力の範囲を定義するのにいくらかの困難があります。
すべての入力には期待される出力があります –そして他に何も受け入れられるべきではありません。 定義された入力および出力範囲の場合、ユーザーが独自のコンテンツ(チャットプラットフォームなど)を送信する状況とは異なり、これは簡単な作業です。
予想されるドメイン外の入力は受け入れられません。
- 知る必要のあるデータを提供する
権限が定義されると、 ユーザーには、要件に従ってのみデータへのアクセスを提供する必要があります。 権限とそれに関連するリソースへのアクセスが実装されると簡単に見えますが、変更できる変数が多すぎます。
これらは、データ侵害やその他の危険な状況を回避するためにすべてのAPIをテストする必要があるいくつかのパラメーターです。 適切に設計およびテストされたAPIは、防御の初期層を設定できる必要があります。これは、セキュリティテストプロトコルによって承認される必要があります。
さまざまなタイプのAPIセキュリティテスト
- セキュリティ監査プロセス– 理想的なセキュリティ監査プロセスでは、基本的なセキュリティバリアとして次の要素が考慮されます。
- ユーザーが必要とする条件と権限 特定のレベルのデータにアクセスする
- 認証レベル APIと識別方法を使用するためにユーザーが必要とする
- 暗号化ルール 保存されたデータと復号化のインスタンス用
- ペネトレーションテスト– この段階では、攻撃をシミュレートして、APIの脆弱性、コーディングの誤り、またはその他のセキュリティリスクをテストします。 これは、外部セキュリティの強化と初期段階からの開発エラーの解決に役立ちます。 自動化されたツール(Metasploit、Acunetixなど)と手動ツールを組み合わせることで、APIテストを制御された環境で実行できます。
- 続行します 既知の脆弱性のリスト API内
- ランキングを設定する 各問題が提示するリスクに応じて(OWASP Webサイトは、関連するリスク要因の十分な理解を提供します)
- リクエストの送信と設計攻撃 ネットワークの内外から、これらのセキュリティリスクを念頭に置いて
- 目を開いてください その他の問題 テストプロセス中にポップアップする可能性があります
- すべての脆弱性を書き留めます、改善策について話し合い、それらを実装し、再テストします。
- ファジングテスト– 基本的なセキュリティチェックリストを設計し、ハッキングの試みを設計したら、次は APIを極限までプッシュする 結果を評価します。 これは、同時に送信される大量のリクエスト(DDoS攻撃)、受信するデータの種類の迅速な変更などによって実行できます。これにより、システムに圧力がかかっているときにさまざまな脆弱性が発生し、解決することも同様に重要になります。 。
APIセキュリティテストを実行するための基本的な手順
APIセキュリティテストでは通常、クライアントソフトウェア(Insomniaなど)を介してアプリケーションエンドポイントにリクエストを送信し、アプリケーションエンドポイントを評価します。 テストの一部には自動化されたソフトウェアを使用することを忘れないでください。目的がスピードアップします(セキュリティ監査またはファズテストを実行できます)。
- システムのセキュリティ要件は何ですか?
- の必要性 TLS / SSL証明書 & HTTPS経由でアクセス可能
- 許可レベルの数 さまざまなリソースにアクセスするため
- 認証の流れ および外部プロバイダーの要件
- 攻撃される可能性のあるAPIの側面 と弱点
- テスト環境を設定し、すべてが順調かどうかを確認します
応じて 小規模または大規模なアプリケーション、テスト用のステージング環境を設計する必要があります。 大きいものは、リソースのモックアップを使用した別の環境でより適切に機能します。 いくつかのテストリクエストでAPIが正しく機能しているかどうかを確認します。
- 入力ドメインを提供する
個別のテストに入る前に、次のことを行う必要があります。 各パラメータの意味と許可されるさまざまな組み合わせを定義します。 これにより、許可されていない値や、SQLインジェクションやブルートフォースなどの攻撃に対して脆弱な値を適切に定義できます。
- 開発して実行する
残っているのは、テストを実施し、 受信した出力が期待どおりかどうかを確認します。 次のようないくつかの質問でチェックインします。
- ファイルアップロードのオプションがある場合、悪意のあるファイルが発生した場合はどうすればよいですか?
- ユーザーに情報を求めるスペースで、HTML / JS入力をするとどうなりますか?
- 権限レベルを超えたリソースへのアクセス(およびHTTPおよびHTTPS経由でアクセスできる場合)
APIセキュリティテストには、特定のアプリケーションで知っておく必要のある他のパラメータがあります。 と アストラセキュリティ、もうささいなことを見逃すことを心配する必要はありません!