(動的に挿入された)JavaScriptを使用してWebページを変更するツールを構築しています。任意のWebページ。
アイデアは、ユーザーがそれを使用して、のような既存のWebページへの一連の変更を記録できるようにすることですgoogle.com
(たとえば、変更がすべての<img>
タグに10ピクセルの黒い実線の境界線を適用することであると仮定すると、この変更は明らかにエンコードできますjQueryの短くて甘いスニペットとして)、ツールはこのメタデータと「開始点」を表すURL(この場合google.com
)を含むリンク(または識別子)を生成します。
今私が遭遇した問題は、同一生成元セキュリティポリシー全体です。その目的は、私がしなければならないように思われる正確な種類のことを明示的に拒否することです。
私がする必要があるのは、基本的に特定のサイトに移動し、そのサイトのコンテキストでjavascriptを実行することです。私(ツールの作成者)もスクリプトを共有するユーザーも、必ずしもサイトを制御できるわけではないため、理論的には、セキュリティモデルを適切に実装すると、この概念が機能しなくなるはずです。
このため、あるサイトでコードを実行するプロセスを開始するクリック可能なリンクを1つ持つことはできません。それも完全に理にかなっています。攻撃者のサイトが、任意のサイトで私として機能するコードを実行する、偽装されたクリック可能なリンクを送信するのは簡単です。
ただし、これを回避する方法は、受信者に1つの追加手順を実行するように指示することです。javascript:(function(){.....})();
まず、通常どおりにサイトのURLを開き、次にURL/オムニバーに少し貼り付けます。これは(AFAICT)完全に正当であり、ユーザーはこのスクリプトが実行されていることを理解しているため、許容されるはずです。この時点でJSを簡単に実行できるようにするかどうかは、基本的に今ではどこでも機能するため、多かれ少なかれ無関係です。
これはそれほど悪くはありませんが、ユーザーエクスペリエンスは不必要に損なわれていると思います。たとえば、iOSデバイスのURLバーにJSを貼り付けるよりもうまくいくにはネイティブアプリが必要なようですが、プラグインを受け入れるフルブラウザでは、プラグインで私が望むことを達成できるようです。
つまり、任意のURLに移動した後、ワンクリックでコードを実行します(このコードは承認されたソースから発信されています)。
しかし、どこから始めればよいのかわかりません。どのAPIがこの機能を提供できますか?私はGreasemonkeyタイプのスクリプトでうまくいくことを望んでいます(Greasemonkey互換のプラグインはほとんどすべての優れたブラウザーで利用できるため)が、十分な電力が利用可能かどうかはわかりません。
私は実際、これに関するセキュリティ関連の問題についてまだ少し確信が持てません。私はここに大きな段落を持っていましたが、それはすべて「ソーシャルエンジニアリング」に要約されます。