브라우저 해킹 vs 보안 독자 증정 이벤트 결과 발표
브라우저 해킹 vs 보안 독자 증정 이벤트 문제 해설.
브라우저 해킹 vs 보안 독자 증정 이벤트를 이 시점에서 마감합니다. 답을 보내 주신 분이 두 분 밖에 없어서 자동으로 두 분이 대상자로 선정되었습니다. 두 분께는 따로 편지 드리겠습니다.
문제가 좀 어려웠나요? 본질적으로 어려운 문제는 아니지만 아마 이쪽에 관심이 없는 분에게는 이런 북마클릿의 의도 자체가 생소하지 않았나 합니다.
문제는 다음과 같았습니다.
문제: 다음은 현재 서핑 중인 웹 페이지를 GpgStudy 게임 개발 소식의 사용자 임시 보관함에 등록하는 북마클릿입니다(원래는 한 줄인데 너무 길어서 줄을 좀 바꾸었습니다. 이 점이 답에 영향을 미치지는 않습니다). 이 코드에서 setTimeout(function ... 3000)
부분은 어떤 의미일까요?
javascript:(function(){var d=document;var s=d.createElement('script');
s.type='text/javascript';s.charset='UTF-8';
var h=encodeURIComponent(d.location.href);
s.src='http://gpgstudy.com/news/js/draft?u='+h;d.documentElement.appendChild(s);
setTimeout(function(){if(typeof gnd_added_=="undefined")
location.href='http://gpgstudy.com/news/add/draft?u='+h},3000)})()
해당 호출이 무슨 일을 하는지, 왜 그런 일이 필요한지 서술하시면 됩니다. 힌트: 짐작하셨겠지만 브라우저의 보안 기능과 관련이 있습니다.
채점 기준은 다음과 같습니다.
- 북마클릿의 전체적인 목적은 현재 페이지 안에 결과를 표시하려는 것임을 언급 : +10점
- setTimeout(...) 부분은 외부 JavaScript 코드의 적재가 실패하는 경우를 대비하는 것임을 언급: +10점
- 적재 실패 이유 언급
-
- https 페이지 안에서 http 자원을 적재하려 하면 적재가 실패할 수 있음을 언급: +10점
-
- 현재 페이지의 Content Security Policy 설정 때문에 적재가 실패할 수 있음을 언급: +10점
- ** Content Security Policy를 번역서에 쓰인 용어인 '내용 보안 정책'이라고 표현: +5점
- setTimeout과 전역 변수를 이용한 방법 이외의 적재 실패 판정 방법 제안: +15점
추가로 설명하자면...
이 북마클릿의 전체적인 목적은 "현재 페이지를 GpgStudy 게임 개발 소식의 사용자 임시 보관함에 추가하되, 그 결과를 현재 페이지 안에 표시한다"는 것입니다. 간단한 북마클릿은 그냥 해당 URL(javascript: ... ) 안의 코드로 모든 일을 수행하지만, 이처럼 페이지 안에 새로운 HTML 요소를 추가하는 등의 좀 더 복잡한 작업을 수행하는 북마클릿은 현재 페이지 안에 동적으로