nooopener
링크 타입: noopener
noopener
란 a
, area
, form
태그의 rel
속성에 들어가는 속성 값이다. 이 값은 새로운 창이 열려있을 때, 기존에 브라우징 되어있는 요소에 접근할 수 없도록 한다.
A브라우저에서 링크를 타고 B브라우저를 새탭에서 열었을 경우
Window.opener
라는 객체가 생기는데, 이걸 통해 B브라우저가 A브라우저를 악의적으로 동작하게 만들 수 있기 때문에noopener
는 이 객체를 생성하지 않고 널값을 반환한다.
이 값은 특히 신뢰할 수 없는 사이트에 들어갈 때 유용하다. 이 값을 사용하면 Window.opener
를 통해서 현재 브라우저에 접근할 수 있는 통로를 차단한다. (이 값을 사용한다는 기본 전제는 Referer
HTTP 헤더를 사용한다는 것이다. 리퍼러는 사용자가 어디에서 새 브라우저로 왔는지 url에 보여준다. 이 정보가 명확히 있기 때문에 Window.opener
에서 조작할 수 있는건데, noreferrer
를 사용한다면 애초에 어디서부터 왔는지 보이지 않기 때문에 noopener
를 사용할 이유가 없어진다.)
noopener
를 사용할 경우 target
속성에 기존 속성값이 아닌 임의의 값을 넣으면 _blank
처럼 여겨져서 계속 새로운 창을 띄운다.(원래는 프레임 내임으로 탭이 하나 생성되고 링크를 여러번 타도 그 창을 삭제하지 않는 한 새로운 탭이 생성되지 않는다.)
현재
target="_blank"
를<a>
태그에 사용하면 이 값이 암묵적으로 적용된다.