0

(動的に挿入された)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互換のプラグインはほとんどすべての優れたブラウザーで利用できるため)が、十分な電力が利用可能かどうかはわかりません。

私は実際、これに関するセキュリティ関連の問題についてまだ少し確信が持てません。私はここに大きな段落を持っていましたが、それはすべて「ソーシャルエンジニアリング」に要約されます。

4

2 に答える 2

0

セキュリティは常に知識に関するものです。逆に言えば、何かを知らないと不安になります。

私のウェブブラウザがデフォルトで禁止している、あなたが望むことをするための安全な方法はありません. 回避策はありますが (上記で説明したように URL を貼り付けるなど)、ユーザーが何をしているかを知っている限り、それらはすべて安全です。

それが社会的影響です。技術的な解決策は次のとおりです。

  1. ブックマークレットを試す
  2. Greasemonkeyのようなブラウザ プラグインを使用できます。

どちらも任意の JavaScript を実行できます。前者は毎回ユーザーからの明示的な許可が必要ですが、後者は自動的に行います。

もちろん、機能のコアを離れた場所に移すと、知識のある私のようなユーザーでも、何が起こっているのかを理解して信頼することは困難になります。

これは、関数の本体がブックマークレットやグリースモンキー スクリプトになく、代わりに<script>リモート URL のタグを追加した場合です。これにより、スクリプトが「奇妙な」ことをしないようにすることが難しくなります。たとえば、ブックマークレットを使用せずに JavaScript をダウンロードしようとすると、別のスクリプトが返される可能性があります。

于 2013-02-22T08:41:38.907 に答える
0

この種のことは、一般的にブックマークレットで行われます。

スクリプトを掲載している Web サイトで、href="javascript:(function(){/* ... */})()". 次に、ユーザーはそのリンクをお気に入りにドラッグ アンド ドロップするだけです (ブックマークします)。お気に入りバーのボタンとして使用します。

ブックマークレットには、スクリプトを直接含めることも<script src=http://mywebsite.com/script.js">、ドキュメントにタグを挿入する単純なローダーを含めることもできます。このようにして、スクリプトを更新し、すべてのユーザーに直接「配布」できます。

于 2013-02-22T08:40:27.760 に答える