跳至內容

react/jsx-no-target-blank 正確性

此規則預設為開啟。

功能說明

此規則旨在透過要求外部連結的 href 和表單動作使用 rel='noreferrer',並可選擇性地要求任何動態產生的連結 href 和表單動作使用 rel='noreferrer',來防止使用者產生的連結 href 和表單動作產生安全漏洞。

為何這是不好的?

當建立一個具有 a 標籤的 JSX 元素時,通常會希望使用 target='_blank' 屬性讓連結在新分頁中開啟。然而,單獨使用此屬性而不搭配 rel='noreferrer' 是一種嚴重的安全漏洞(詳情請參閱 noreferrer 文件noopener 文件)。此規則要求您在 target='_blank' 屬性中加入 rel='noreferrer'

範例

jsx
/// correct
var Hello = <p target="_blank"></p>;
var Hello = <a target="_blank" rel="noreferrer" href="https://example.com"></a>;
var Hello = <a target="_blank" rel="noopener noreferrer" href="https://example.com"></a>;
var Hello = <a target="_blank" href="relative/path/in/the/host"></a>;
var Hello = <a target="_blank" href="/absolute/path/in/the/host"></a>;
var Hello = <a></a>;
/// incorrect
var Hello = <a target="_blank" href="https://example.com/"></a>;
var Hello = <a target="_blank" href={dynamicLink}></a>;

參考資料

以 MIT 許可證發布。