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 noreferrernoreferrerの機能が含まれているため、冗長です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ヘッダーが新しいページに送信されるのを防ぎます。詳細については、公式ドキュメントを参照してください。