2

Web拡張機能でホストのブロックを実装していますが、現時点では["http://*/*", "https://*/*"]と一致していて、正規表現機能を使用してURLをフィルタリングしていますが、毎回正規表現マッチングを使用するのではなく、これは可能ですか?Firefox拡張機能でwebRequestをブロックするためのTLDワイルドカード?

+1

ドキュメントおよびサンプル拡張でわかるように、addListenerはURLフィルタリングをサポートしています。 – wOxxOm

+0

TLDフィルタやワイルドカードは表示されませんが、他の方法に移行する前にこれが本当に正しいかどうかを確認しています。 (それは時間の節約になるので) – regularjoe

+0

はい、TLD wirldcardはありません。とにかく、宣言的なURLフィルタリングが適切な方法です。 – wOxxOm

答えて

1

webRequest.RequestFilterMDN URL指定子Match PatternsMDNです。マッチパターンには、トップレベルドメインをワイルドカードする機能がありません。それらはにはこの機能を持たないでください。 TLDにワイルドカードを使用すると、は本質的に安全ではありませんです。そうしようとしてはいけません。 方法はありませんあなたがカバーしようとしている会社/サイトがすべての単一TLDの名前のすべての単一バージョンを取得することを保証するための方法はありません。

複数のTLDを持つ会社がある場合は、各TLDで自分が所有するドメインのリストを特定し、個別に指定する必要があります。はい、限定されたTLDのセットを提供する正規表現でそれを指定するのはテキストが少ないかもしれません。その後、例えば

、正規表現が許可された場合、https://example.comhttps://example.org/、およびhttps://example.edu//https?:\/\/(?:[^.\/]*\.)*example\.(?:com|edu|org)\//のようなものだったかもしれないが、マッチパターンは正規表現を持っていません。 *という限定されたワイルドカードは、TLDの代わりに使用される場合、TLD、またはドメインとサブドメインにも一致するものを表します。したがって、最終的には、TLDを含む各ドメインを個別にリストする必要があります。

あなたが決定したように、もう1つの方法は<all_urls>(または類似のもの)を使用し、ハンドラ内でフィルタすることです。そうすることは最適ではない。そうした場合は、リスナーを早くする作業に取り組む必要があります。少なくともURLがそうであると判断されるまで、無関係の操作を実行すべきではありません。それ以上の処理は行われません。

+1

私はTLDワイルドカードがwebrequest BLOCKINGに関して安全でないという議論を聞きたいと思っていますが、私は間違いなく内容を注入することに関してセキュリティの面を理解しています。 – regularjoe

+0

@regularjoe、あなたが*唯一の*ブロッキングの場合、問題は設計意図/ユーザーの期待に反する操作です。しかし、インターフェースとパターンマッチは、一般に、コンテンツスクリプトを挿入するときを含め、より広範なアプリケーション用に設計されています。これは、 'webRequest.RequestFilters'のためにもっと複雑なものを使うことができなかったという意味ではありません。結局のところ、彼らは['events.UrlFilter'](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/events/UrlFilter)を使用している可能性があります。既に存在し、 'webNavigation'で使用されており、RegExpのマッチングをサポートしています。 – Makyen

関連する問題