「そのドメインは、ロード後に yourmapper.com スクリプトを呼び出すため、リファラーは metromapper.org になると思います」
それは実際には正しくありません。まず、HTTP_REFERER はほとんどの (すべてではない) ブラウザーによって渡される任意のパラメーターであり、簡単にスプーフィングされる可能性があるため、HTTP_REFERER に依存するべきではありません。必要に応じて、CURL を使用して、リファラーが whitehouse.gov であるかのように見せる Web サイト リクエストを送信できます。そこにはセキュリティ対策が講じられていません。
そうは言っても。ブラウザーは、そのパラメーターを、ユーザーが現在読み込まれているページに誘導したページに設定します。スクリプトではありません。したがって、表示されている結果が表示される理由は、ユーザーが stackoverflow.com のリンクによって metromapper.org に参照されたためです。
最後に、ジューシーな部分に行きましょう。JS を使用してブラウザーでコードを記述しています。それでいいですし、まったく問題ありません。ただし、JS はオープン ソースであることを覚えておく必要があります。したがって、人々は、できるという理由だけで、コードをいじって API をいじることができます (またそうするでしょう)。そうは言っても。おそらく最善の策は、JS API でリクエストとともにサイトの URL を渡すことです。これは、スクリプトを使用しているサイトを「追跡」する最良の方法です。サーバー側をチェックして、URL が渡されたことを確認できます。これにより、人々が API を変更して、URL をサーバーに送信するビットを削除するのを防ぐことができます。ただし、他の誰かの URL やランダムな未登録の URL をパラメーターとして使用するように変更することを防ぐことはできません。
サーバー上で実行される PHP API を構築できることは確かです。JS API は PHP API に接続し、PHP API は zend-guard エンコード (またはその他のソース保護コード システム) ですが、ファイルをデコードしてソースに戻って混乱させる人がまだいます。確かに、それができる人ははるかに少なく、平均的なユーザーは API をそのまま使用するだけです。また、エンコードされた PHP ファイルを実行できないサーバーで API を実行できないという問題もあります。
最終的には、必要なセキュリティと認証のレベルを決定する必要がありますが、API はクライアント ブラウザーの JavaScript で実行されているため、難読化以外に利用できるものはほとんどありません。
最良の選択肢は、単純に JS コードで現在のページの URL を取得し、それを API リクエストで送信することだと思います。そこから、サーバーは URL を処理して、ルート ドメインや保存したいその他の情報を取得できます。
他のユーザーの Web サイト URL に対する「なりすまし」リクエストを防止したい場合は、ユーザーのサーバーの特定の場所にインストールされる PHP API を実装できます。例http://www.domain.com/my-app-name.php
すべての JS API 呼び出しは、そのスクリプトを通過する必要があります。ユーザーが API をダウンロードするときは、Web サイトの URL とその他の情報を入力する必要があります。システムは「キー」を生成し、ダウンロードできるようにパッケージ化する前にスクリプトに挿入します。そのキーはドメインに対して有効であり、API との間のすべての送信を、blowfish または別の双方向暗号化アルゴリズムを使用してエンコードするために使用されます。このようにして、API が PHP API ファイルからリクエストを受け取ると、リクエストが行われたページの URL を取得し、あなたとそのサイトの管理者だけが持つキーでエンコードされます。したがって、リクエストは次のように送信されます。metromapper.org/api?site=[url_encoded_page_address]&req=[encrypted_request]
サーバーはページの URL を使用して、データの復号化に使用するキーを決定します。次に、データを復号化します。データが破損しているか、期待どおりに復号化されない場合、それは無効な要求であり、何も返さずに終了する必要があります。
暗号化をJSに書き込むのではなく、暗号化にPHPファイルを使用することをお勧めする理由は、暗号化/復号化の負荷でクライアント(各サイト訪問者)に負担をかけたくないためであり、PHPはそれをはるかに高速に処理します.これらのタスクを処理するために作成されたライブラリがあるため、JS よりも。
いずれにせよ、API に対してさまざまなサイトへのリクエストを追跡および検証できるようになるための正しい軌道に乗るはずです。