2017-09-21 5 views
2

仮想ホストのない同じサーバー上にルーメンバックエンドとAngularjsプロジェクトがあります。私がAPIにアクセスする方法は、単にwww.example.com/api/public/get_some_dataのようなURLだけです。私はこれらのエンドポイントを公開しないようにしたいが、Angularjsからのアクセスしか許可しない。すべてを拒否しますが、同じサーバー上のAngularjsからのアクセスのみを許可します

私は

Order deny, allow 
Deny from all 
Allow from 127.0.0.1 

しかし、角度が同様に拒否されます、API /パブリックフォルダ内の.htaccessにこれを追加してみました。

私は

function login(user) { 
    return $http({ 
    method: 'POST', 
    url: 'api/public/login/user', 
    data: user, 
    headers: {'Content-Type': 'application/json'} 
    }).then(function(response){ 
    console.log(response); 
    localStorage.setItem('token', response.data.token); 
    }).catch(dataServiceError); 
} 

答えて

1

角度は、クライアント側のフレームワークであり、このように角度からエンドポイントにアクセスします。要求がAngularアプリケーションや他の場所から来た場合、サーバーに違いはありません。

アクセスは、要求ヘッダー(example)のようなクライアント側のアプリケーションが満たすことができるいくつかの条件に基づいて制限できます。

セキュリティの不明瞭さはセキュリティの最も弱いフォームであり、信頼されるべきではありません。この場合の適切な解決策は、基本認証またはトークンベースの認証です。

侵入者がAngularアプリケーションにアクセスすると、APIエンドポイントへのアクセス権が自動的に取得され、アプリケーションから認証情報を抽出できます。

+0

ありがとうございます。それが私が知りたいことです。私は既にトークン認証を実装しました。 Angularによって消費されたデータを隠すだけです。 – yifei3212

+0

侵入者がアプリにアクセスできる場合は、何も隠すことはできません。一方、誰でも自分のウェブサイトでこのAPIを使用できるということを心配するなら、それは別の質問です。これはCORSによって解決されます。 – estus

+0

これは、すべてのAngularコードがクライアント側にあるので、実際には透過的であることを意味しますか? – yifei3212

関連する問題