미래 지향적인 웹 앱 구축: The Codest의 전문가 팀이 제공하는 인사이트
The Codest가 최첨단 기술로 확장 가능한 대화형 웹 애플리케이션을 제작하고 모든 플랫폼에서 원활한 사용자 경험을 제공하는 데 탁월한 성능을 발휘하는 방법을 알아보세요. Adobe의 전문성이 어떻게 디지털 혁신과 비즈니스를 촉진하는지 알아보세요...
웹 애플리케이션 사용은 모든 사회에서 보편화되었습니다. 우리는 매일 웹 애플리케이션을 다루고 있습니다. 웹 애플리케이션은 우리를 둘러싸고 있다고 할 수 있습니다. 우리는 직장에서, 오락을 위해, 다른 사람들과 소통하기 위한 도구로 웹 애플리케이션을 사용합니다. 사용자와 개발자로서 우리는 이러한 애플리케이션에서 매일 얼마나 많은 보안 취약점이 발견되는지 깨닫지 못하는 경우가 많습니다.
최근 저희는 XSS 취약점과 관련된 웹 애플리케이션 보안. 이번에는 또 다른 위험에 대해 알려드리고자 합니다.
이 백서에서 논의된 취약점은 오랫동안 우리와 함께 해왔으며, 그 단순성 때문에 종종 과소평가되거나 심지어 알려지지 않은 경우도 있습니다. 웹 애플리케이션 개발자.
거의 모든 웹 애플리케이션에는 클릭하면 원래 페이지가 있는 탭이 닫히지 않도록 새 탭에서 열리는 링크가 포함되어 있습니다. 이는 제작자가 사용자가 애플리케이션에서 최대한 많은 시간을 보내기를 원하기 때문에 선호되는 동작입니다.
이 취약점을 악용하는 공격은 소위 "리버스 탭네이빙"입니다. 대상 페이지에서 링크된 페이지가 피싱 사이트 등으로 해당 페이지를 대체할 수 있는 공격입니다.
window.opener.location = 'https://phishing-website/facebook.com';
따라서 웹 API에서 창 개체를 통해 감염된 대상 페이지의 상위 탭을 변경할 수 있습니다. 일반적으로 공격은 발견된 여러 취약점과 피싱 사기를 동시에 사용하는 방식으로 이루어집니다.
링크를 사용하여 브라우저에서 새 탭을 열 때 target="_blank"
속성을 추가하면 새 탭에서 '리퍼러'에 액세스할 수 있습니다. 더 구체적으로 말하면 오프너
속성의 창
객체를 호출하면 해당 객체를 연 창, 즉 상위 페이지에 대한 참조를 반환합니다.
이는 창 열기()
함수. 이 속성에 액세스하면 상위 페이지를 쉽게 바꿀 수 있습니다. 일부 최신 브라우저에서는 window.opener
함수를 대상 탭에서 null
를 사용하여 이 동작을 방지할 수 있습니다.
<code> <a href="https://github.com" target="_blank">GitHub로 이동 - 감염된 링크</a>
const if (링크) link[0].onclick = () => { { if (window) window.opener.location = 'https://stackoverflow.com' }
위에서는 감염된 링크를 볼 수 있는데, 원래는 GitHub 페이지가 있는 새 탭이 열리지만 '부모' 페이지가 Stackoverflow 사이트로 변경됩니다.
1. HTML 링크
추가 rel="noopener noreferrer"
를 <a>
태그.
그리고 rel
속성은 연결된 리소스와 현재 문서 간의 관계를 정의합니다.
noopener
은 브라우저에 대상을 연 부모에 대한 액세스 권한을 부여하지 않고 대상을 탐색하도록 지시합니다. 대상 탭 창 열기
는 null
.
노레퍼러
는 브라우저가 타깃으로 이동할 때 주소나 다른 값을 참조자로 부모에게 보내는 것을 방지합니다. 참조
HTTP 헤더. 이 HTTP 헤더 이름은 의도적으로 "referrer"로 철자가 잘못 표기되어 있습니다.
2. JavaScript 링크
JavaScript의 경우 창 열기
함수에 값을 추가할 수 있습니다. noopener
그리고 노레퍼러
에서 창 기능
매개변수의 창 열기
기능을 사용할 수 있지만 브라우저에 따라 다르게 반응할 수 있으므로 창 열기
as null
사용 후 창 열기()
함수입니다.
자세히 보기:
이 글이 흥미로웠다면 Github에서 Lukasz를 팔로우하세요: https://github.com/twistezo