nooopener

링크 타입: noopener

noopenera, area, form태그의 rel속성에 들어가는 속성 값이다. 이 값은 새로운 창이 열려있을 때, 기존에 브라우징 되어있는 요소에 접근할 수 없도록 한다.

A브라우저에서 링크를 타고 B브라우저를 새탭에서 열었을 경우 Window.opener라는 객체가 생기는데, 이걸 통해 B브라우저가 A브라우저를 악의적으로 동작하게 만들 수 있기 때문에 noopener는 이 객체를 생성하지 않고 널값을 반환한다.

이 값은 특히 신뢰할 수 없는 사이트에 들어갈 때 유용하다. 이 값을 사용하면 Window.opener를 통해서 현재 브라우저에 접근할 수 있는 통로를 차단한다. (이 값을 사용한다는 기본 전제는 RefererHTTP 헤더를 사용한다는 것이다. 리퍼러는 사용자가 어디에서 새 브라우저로 왔는지 url에 보여준다. 이 정보가 명확히 있기 때문에 Window.opener에서 조작할 수 있는건데, noreferrer를 사용한다면 애초에 어디서부터 왔는지 보이지 않기 때문에 noopener를 사용할 이유가 없어진다.)

noopener를 사용할 경우 target속성에 기존 속성값이 아닌 임의의 값을 넣으면 _blank처럼 여겨져서 계속 새로운 창을 띄운다.(원래는 프레임 내임으로 탭이 하나 생성되고 링크를 여러번 타도 그 창을 삭제하지 않는 한 새로운 탭이 생성되지 않는다.)

현재 target="_blank"<a>태그에 사용하면 이 값이 암묵적으로 적용된다.