2

当分の間非公開のままにする API を保護するための最善の方法について、いくつかの提案を使用できます。バックエンド API は開発されており、独自のシステム上にあります。フロントエンドのコンシューマー Web サイトは、プライベート API キーを介してこの API にアクセスできます。これはすべてサーバー側のコードです。ただし、新しい要件が明らかになりました。コードを生成するために、Web サイトも AJAX 要求を行う必要があります。JavaScriptコードでAPI呼び出しやトークンを公開したくないので、オプションを見つけようとしています。1 つはフロントエンドのサーバー側に REST コントローラーを作成し、JavaScript コードで呼び出すことができますが、これは API キーのセキュリティ対策を効果的に回避するため、真の解決策ではありません。

では、このための一般的な慣行は何ですか?私は理想的には(そして私はこれに向かって進んでいますが、現在は時間的に実現可能ではありません)OAuthトークンを使用してリクエストを検証し、いくつかのAPI呼び出し(一般的な情報を引き出す)を認証などの形式を必要としないようにしますが、 AJAX要件を考えると、いくつかの問題があります。クライアント側のjavascriptと関連するAJAX呼び出しを安全に保つ方法はおそらくありますか?

これはすべて言いたいことです-私は現在、ここで何をすべきか途方に暮れています。

ありがとう。

編集: 現在の考えでは、リスクのないフェッチを API に送信する ajax 経由でアクセスできるフロント エンドにコントローラーを作成することです。さらに、ログインは AJAX スタイルのリクエストではないため、ログインは信頼できるセキュリティ テストになるはずです。

4

1 に答える 1

0

AJAX 要求を受け入れるハンドラーを開発し、公開されていないコードの他の場所で使用する通常のアクセス トークン アプローチを使用して、プライベート API に渡すことができます。

そうすれば、JavaScript でトークンや API を公開しません。ハンドラーで API 呼び出しのホワイトリストを作成して、(おそらく) フロントエンドからの無害な AJAX 要求のみを処理することができます。このハンドラーは、不正なリクエストに対するファイアウォールであると同時に、プライベート API の実際のメカニズムを保護する方法でもあります。

API メソッドのいずれかがデータに対して潜在的に危険または破壊的である場合、これを公開 Web サイトの認証メカニズムと組み合わせて使用​​できます (また使用する必要があります)。

モックアップ (PHP):

$whitelist = array(
  'SomeApiCallPublicAlias'=>'RealApiMethod',
  'AnotherPublicAlias'=>'SomeSafeApiMethod'
);
$call = $_POST['call']; // <-- SomeApiCallPublicAlias
if (!array_key_exists($call, $whitelist))
  die('permission denied');
$data= $_POST['data'];

// hook in to the private API, pass the data, return the response
$response = make_private_api_call($whitelist[$call], $data);
die(json_encode($response));
于 2013-02-14T18:45:38.947 に答える