2017-10-27 9 views
3

セキュリティまたはプライバシー上の理由から、私はreferrer policy"no-referrer"にグローバルに設定したいと考えています。例えば1つのドメインを除いて私のサイトからのリンクをクリックするときの参照元の送信を防ぎます

は、言い換えれば、Apacheの.htaccessさん

Header always set Referrer-Policy no-referrer 

またはIIS「web.configさん

<configuration> 
    <system.webServer> 
     <httpProtocol> 
      <customHeaders> 
       <add name="Referrer-Policy" value="no-referrer" /> 
      </customHeaders> 
     </httpProtocol> 
    </system.webServer> 
</configuration> 

を使用して、私は、このポリシーをグローバルにすべての単一のウェブページのために、強制されたいです私はこのポリシーをサーバーのレベルで実施します。

しかし、1つの特定のドメイン(たとえばhttps://validator.w3.org/)では、リファラーを送信したいと思います(たとえば、便利なurlhttps://validator.w3.org/check?uri=refererを使用するなど)。

私は実験的なreferrerpolicy attribute of linksを使用できましたが、その属性がどれだけうまくサポートされているかわかりません。そのような属性がサーバーの設定を上書きできるかどうかわかりません。

link type 'norefferer'属性seems to be well supportedが、私は反対を達成したい!

特定のドメインを指しているリンクを除いて、どのように参照元が送信されるのをグローバルに禁止できますか?


免責事項:(そのバリエーション)webmasters.stackexchange.comに投稿されました。賞金にもかかわらず、2週間で100回の視聴回数しかなく、one answerが提供されました。それは何よりも「概念の証明」であり、「はサーバーの設定よりも優先されますか?」の質問には該当しません。

答えて

3

ヘッダーは、Refererヘッダーをまったく送信しないようにユーザーエージェントに指示するため、配信されたコンテンツに触れることはほとんどできません。通常のシナリオでは、サーバーはコンテンツの種類を知らず、Referrer-Policyヘッダーのオプションは要求の発信元のみを処理します。

私が考えることができる唯一の実行可能なオプションは、コンテンツを書き直すことです。 noreferrer属性が広くサポートされているため、たとえばApache's mod_substituteを使用できます。

noreferrer属性を含めるリンクに一致する正規表現を作成する必要があります。 <a\s+[^>]*href="(http://)?www.google.com[^"]*">のようなものは、aのタグがGoogleホームページを指しているものと一致します。

関連する問題