2017-05-19 7 views
0

安全なRESTful APIから取得したデータを表示するjQueryプラグインを開発しました。 APIは、基本認証とトークンによって保護されます。トークンを作成するための基本的な認証資格情報やロジックを漏洩しないように、私は基本的にそのように見えるproxy.phpにそれらを移動:安全にphpプロキシ経由でJavascriptで保護されたAPIにアクセスするには?

$url = "http://the-api.com/path"; 
$context = stream_context_create(
    array(
     'http' => array(
      'header' => 
       "Authorization:Basic " . base64_encode("$username:$password") . "\r\n" . 
     ) 
    ) 
); 
$response = file_get_contents($url, false, $context); 

header("content-type: application/json"); 
header("Access-Control-Allow-Origin: *"); 
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Max-Age: 86400'); 
header("Access-Control-Allow-Methods: GET, OPTIONS"); 
header('Access-Control-Allow-Headers: X-Requested-With, Origin, Content-Type, Authorization'); 
return $response; 

それは必要な資格情報を使用して要求を転送しての応答を返します。 API。ここまでは順調ですね。資格情報はJavascriptコードに含まれていません。 しかし、他の人はproxy.phpを呼び出すだけで同じリクエストを実行できます。 jQueryプラグインだけがproxy.phpを正常に呼び出せることを確認する方法はありますか?クッキーとトークンの組み合わせでできますか? proxy.phpは、jQueryプラグインと同じホスト/ドメイン上にあります。

+0

theresの道はありません... –

+0

あなたはそのproxy.phpがajax呼び出しだけ許可されているのを防ぐことができます。このSOの質問はあなたを助けるかもしれません。 http://stackoverflow.com/questions/1393904/ajax-only-access –

+0

[secure a php proxy](https://stackoverflow.com/questions/13440663/secure-a-php)を見てみるとよいでしょう。 -proxy) – ajoposor

答えて

0

jQuery Pluginのみがproxy.phpを正常に呼び出せることを確認するにはどうすればよいですか?

できません。

これを制限しようとするものは、最終的には「ブラウザがHTTPリクエストを行う」ということになります。そのHTTPリクエストのすべての詳細は、ブラウザのユーザが利用できます(注意:ブラウザは、Webサイトではなくユーザのために機能します)。ユーザーはそれらの詳細をコピーして好きなように使うことができます。

クッキーとトークンの組み合わせでできますか?

いいえ。クッキーとトークンは、ブラウザ、つまりユーザーに見えるため、コピーできます。

+0

トークンがPHPによって生成され、JS(letトークン= <?phpトークン();?>)に提供された場合はどうなりますか?トークンは、特定の期間(数秒間)有効です。 JSからの各要求に対して、新しいトークンが生成され、トークンは他のものに対して再現できないように生成される。その後、他の人がリクエストを再送信できませんでした。 – rsdev

+0

「APIにアクセスしたい人は、最初に、トークンを取得するためにHTTPリクエストを行う必要があります。あなたが求めるものに誰かに与える」。それはいかなる保護でもありません。 – Quentin

関連する問題