Unicode escape sequence

javascript: 스키마를 사용하려 했는데 여기서 javascript는 Unicode escape sequence로 우회하면 안되는 건가요?

#web
Author
Answers 1
avatar
Xion
No badge

자바스크립트 문법 상 unicode escape sequence가 지원되는 것으로, 이외의 환경에서도 동일한 방식으로 우회할 수 있는 것은 아닙니다.

예를 들어 특정 링크 클릭 시 자바스크립트 코드를 실행시키기 위해 <a href="javascript:confirm()">click</a>와 같은 코드를 구현한 경우, javascript:confirm()href attribute의 값이 됩니다.

브라우저는 href attribute의 값을 URL으로 간주하고, javascript: 스키마를 인식하여 confirm()을 자바스크립트 코드로 실행하게 되는 것입니다. 이때 javascript: 이후의 문자열은 자바스크립트 코드로 간주되기 때문에 javascript:\u0063onfirm()과 같이 표현할 수 있습니다.

만약 이를 j\u0061vascript:confirm()로 표현하게 되면, 브라우저는 이 URL이 javascript: scheme을 가지는 URL이 아닌, j/u0061vascript:confirm()라는 상대경로로 파싱하게 되어 의도한 동작을 수행하지 않게 됩니다.

2023.03.20. 15:48
Do you know the answer?
Share and earn points!
Answer and earn points