target="_blank"
リンクを使用して別のウィンドウで開くときはいつでも、を配置することをお勧めする人がいますrel="noopener noreferrer"
。たとえば、Chromeで開発者ツールを使用したり、rel属性を削除したりするのをどのように防ぐのでしょうか。次に、リンクをクリックします...
それでも脆弱性を維持する簡単な方法ですか?
target="_blank"
リンクを使用して別のウィンドウで開くときはいつでも、を配置することをお勧めする人がいますrel="noopener noreferrer"
。たとえば、Chromeで開発者ツールを使用したり、rel属性を削除したりするのをどのように防ぐのでしょうか。次に、リンクをクリックします...
それでも脆弱性を維持する簡単な方法ですか?
noopener
少なくとも、以下で指摘するように、noreferrer
冗長です):hacks.mozilla.org/2020/07/firefox-79
回答:
脆弱性を誤解している可能性があります。あなたはここでそれについてもっと読むことができます:https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/
基本的に、rel="noopener noreferrer"
リンクに追加することで、リンクしたサイトが(不正なJSを介して)ブラウザを乗っ取る可能性からサイトのユーザーを保護します。
開発者ツールを使用してその属性を削除することについて質問しています。これは、あなた(属性を改ざんしている人)を脆弱性にさらす可能性があるだけです。
noopener noreferrer
noreferrer
の機能が含まれているため、冗長ですnoopener
。html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
target="_blank"
それらのリンクは、新しく開いたタブによってユーザーの注意がそらされている間、リファラーページがバックグラウンドでスワップアウトされることに対して脆弱です。これは逆タブナッピングとして知られています:
参照ページはに保存されてwindow.opener
おり、悪意のあるサイトが次の方法でこれを変更する可能性があります。
if (window.opener) {
window.opener.location = "https://phish.example.com";
}
追加rel="noopener noreferrer"
すると、すべての主要なブラウザでこの脆弱性が修正されます。
理論的には、操作によってrel
クライアント側を削除できることに注意してください...しかし、なぜそうしたいのでしょうか。あなたがしているのは、意図的に攻撃に対して無防備にすることだけです。
同じWebサイトにアクセスする(そして自分のクライアント側コードを変更しない)他のユーザーは、サーバーが引き続きサービスを提供するため、引き続き安全rel="noopener noreferrer"
です。それのあなたの除去はあなただけに適用されます。
アンカータグrel=”noopener”
またはrel=”noreferrer”
属性はWebサイトのセキュリティを向上させますが、Webサイトの検索エンジン最適化に影響を与えると考えるため、無視したい人もいますが、それは単なる神話です。それはあなたのウェブサイトの聴衆の機密性を保護し、悪意のあるコードを広めることによって外部のウェブサイトを防ぎます。
noreferrer
部分については。
灯台のベストプラクティス監査レポート:
rel="noopener"
またはrel="noreferrer"
を外部リンクに追加して、パフォーマンスを向上させ、セキュリティの脆弱性を防止します。
一般に、を使用する場合はtarget="_blank"
、常にrel="noopener"
またはrel="noreferrer"
:を追加してください。
例えば:
<a href="https://www.kaiostech.com/store/" target="_blank" rel="noreferrer">
KaiStore
</a>
rel="noopener"
新しいページがwindow.opener
プロパティにアクセスできないようにし、別のプロセスで実行されるようにします。rel="noreferrer"
同じ効果がありますが、Referer
ヘッダーが新しいページに送信されるのを防ぎます。詳細については、公式ドキュメントを参照してください。