개발

target="_blank" 다른 탭으로 링크 이동하기

flowertaekk 2021. 11. 12. 01:22

몰랐던 프론트 세계..!

 

업무 중에 새로운 탭을 열어서 링크 이동시켜달라는 사양이 있어서,

'아! 이건 아주 간단히 되겠구나~~'하고 PR을 날렸지만.. Approve받기 실패한..

가슴 아프지만, 내일의 나를 위해 기록해두자!


우선, 새로운 탭을 열고 '링크' 이동을 하기 위한 속성으로는 `_blank` 가 있다.

이거 자체로 '새 탭으로 이동' 은 가능하다!


문제는 Security(보안) 그리고 SEO(Search Engine Optimizer)!

 

결론부터 말하자면, `_blank` 속성은 반드시 아래의 속성과 같이 써야한다.

3가지 속성을 모두 쓰는 것이 좋다!

 

보안 관련된 속성부터 보자면, `noopener`, `noreferrer`!

window.opener

`noopener`를 사용하지 않으면, 링크로 이동한 탭에서 `window.opener`를 이용해서 이전 페이지(부모 페이지)를 제어할 수 있게 된다.

문제는 이 제어가 가능한 점을 악용할 수 있다는 것.

 

window.opener로 무엇을 할 수 있을까?

  1. 부모 페이지에서 사용된 변수에 접근이 가능하다.
  2. 부모 페이지에 정의된 함수를 실행할 수 있다.

위의 두 가지 점만 보더라도, 일반 유저에게 이러한 제어권을 넘기는 것 자체가 위험..!

 

`noreferrer` 도 `noopener`와 마찬가지로 window.opener를 감추지만, 차이점은 `noreferrer`는 브라우저가 참조할 수 있는 이전 페이지의 정보도 감춘다는 것!

따라서, 로그분석툴 등을 사용 중이라면, 유저의 행동패턴 추적이 어려울 수 있다. 이게 문제가 되는 이유는 이 정보가 간단하지 않은 디버깅에서 아주 중요한 역할을 하기 때문에... 경험해본 사람은 알 것..

다음 SEO 랑 관련해서 `nofollow`!

SEO에서 중요한 것 중 하나가 신뢰도 높은 링크를 보유하는 것!

이를 통해서 서비스의 SEO 순위를 높일 수 있다!

 

우선 '링크쥬스' 라는 SEO 용어를 알아야하는데,

링크쥬스란,  한 페이지 또는 다른 페이지로 전달되는 가치 나 자산을 나타내는 용어 라고 한다.

예를 들어, 하나의 페이지에 더 많은 수의 링크가 있을수록 SEO는 더 신뢰도 높은 페이지로 인식하고 검색순위를 올린다는 것.

이때, 하나하나의 링크를 쥬스라는 개념으로 더 많은 쥬스를 소유한 페이지가 더 유익한 페이지로 인식하는 방식이다.

 

`nofollow`는 이 링크쥬스를 전달하고 싶지 않을 때 사용한다.

TBD: nofollow에 대해서는 좀 더 알아봐야겠다..!

 

 

'개발' 카테고리의 다른 글

Jest 사용법 (Usage)  (0) 2021.05.30
프론트엔드 vs. 백엔드 테스트  (0) 2021.05.22
Java 접근 제한자 (Access Modifier)  (0) 2021.05.15
concourse 테스트  (0) 2021.05.05
circle-ci 테스트  (0) 2021.04.30