10

私のウェブサイトにデータを送信して取得するようにリクエストする必要があるGoogle Chrome拡張機能を作成したいので、実際にはここに書かれているようにajaxリクエストを行う必要がありますhttps://developer.chrome.com/extensions/ xhr.html

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://api.example.com/data.json", true);

コードを保護する方法や、他のユーザーが私の API を使用できないようにする方法があるかどうかを尋ねたかったのです。実際には、他のユーザーが拡張機能をインストールするときにそのソース コードを確認できるため、私が気付かないうちに私の API を使用できるからです。

編集:

何らかの認証を行う必要がある場合、ajax 呼び出しを行う前にユーザーを認証するにはどうすればよいですか? 認証のためにサーバーにリクエストを送信する必要がありますが、そのためにはユーザー名とパスワードなどを送信する必要があります。これは拡張機能のファイルのどこかに保存する必要があり、実際にはユーザーがインストール時に見ることができます拡張子。

ありがとう

4

3 に答える 3

5

ブラウザを信頼せず、代わりにユーザーを認証する手順を実行してください。したがって、この場合、サーバーとの通信に使用するパスワードを入力するように要求することができます。

Google 拡張機能では、AJAX を使用してサーバーと通信しようとする前に、パスワードを入力する必要があります。

ブルートフォース攻撃から身を守る手段を組み込む必要があることに注意してください。したがって、間違ったパスワードが少数以上ある場合は、すべてをロックするなどのことを行ってください。

パスワードを使用して XHR の送信先を単純に復号化することも検討できますが、このルートを使用する場合は、オフラインでブルート フォース攻撃が可能になるため、これを非常に慎重に保存する必要があります。

編集 APIをロックダウンして、単一のアプリケーションのみが使用できるようにすることは、実用的でも技術的にも不可能であるため、使用しているアクセスソフトウェアに関係なく、APIを使用してユーザーを認証することだけを望んでいます. 法的にあなたの内線だけに制限する契約にユーザーに署名させることもできますが、これはほとんど強制力がなく、悪用者を追跡するのに時間を費やすことになると思います.

認証されていない人に API の場所さえ知られたくない場合は、帯域外メカニズムを使用して認証を実行できます。電話、電子メール、SMS、または単純に、ユーザーにパスワードまたはトークンを付与する別の API を使用します。 API へのリクエストに付随する必要があります。

この帯域外プロセス中に、認証されたセッションごとにのみ有効な一意の URI (API アクセス ポイント) をユーザーに付与することもできます ( https://api.totally-cool-extension.com/api/ijyeDvB5dYvSiWG97OLuTAoNWwbhuZ0 /など)。サーバーへのその他の URI へのリクエストは、まったく機能しません。ただし、これは理論的には、同じ API アクセス ポイントを使用し、適切なパスワードを使用することと大差ありません。認証および/または認可チェックを実行するアーキテクチャ内の場所の数を変更するだけです。

<aside>私の投票は、許可/認証ポイントの数をできるだけ少なくして、複数の場所やおそらく複数のロジックの欠陥やその他の脆弱性につながる可能性のあるものではなく、1 つの場所を正しくすることに多くの時間を費やすことができるようにすることです。</aside>

また、公開キー インフラストラクチャやワンタイム パスワード スキーム、またはデバイス ベースのトークン ジェネレーターなどを使用して調べることもできますが、最終的には、認証済みおよび承認済みのユーザーに API の使用を許可することになります。そして、インターネットのおかげで、これは長い間非公開の URI のままではありません。

さらに重要なことは、誰かが自分でデータを使用することを妨げるものではありません。これらすべての対策が講じられていても、許可されたユーザーが拡張機能にストリーミングされているときにこのデータを収集するのは簡単です. または、ポイントツーポイント暗号化を採用している場合、彼らはスクリーン スクラップを作成したり、コードそのものに対して何らかの形式の JS イントロスペクションを使用したり、コンピューターのメモリからデータを抽出したりすることさえできます。

ここで特効薬を探していたのは知っていますが、存在しません。

于 2013-06-05T11:38:19.500 に答える
3

私はあなたが間違っていると思います。インターネット ユーザーの PC で起こっていることを決して信用してはなりません。一度もない!

信頼の境界線を 1 歩内側に移動し、API を公開してから、サーバー側で完全に制御できるセキュリティを設計します。

于 2013-05-26T19:52:52.193 に答える
1

ユースケースの正しい側面を取得できませんでした

いくつかのポイント:

  • 拡張コードはalways追跡可能です (拡張機能をインストールした人なら誰でもコードを表示できます)
  • セキュリティを探しているとcomplicated or obfuscated coding patterns、全体ではなくプロセスの理解が遅くなります。
  • 拡張機能をインストールするユーザーが他のすべてのユーザー (不正なアクセスを取得したり、コードをダウンロードして編集したりしたユーザー) にアクセスして無効化できるようにすることが目標である場合、インストールごとにセッション共有キーを持っています。

より良いサポートができるように、さらに使用例を説明してください。

于 2013-06-03T10:15:07.163 に答える