정보보안의 원리
웹 416쪽 무료 · 종이책 B5 416쪽
CASE STUDY · 방향 6 · 원문 사례
위 예제의 입력에는 실행 스크립트가 없습니다. 그래도 데이터와 HTML 구조의 경계를 확인할 수 있습니다.
출처: 네 번째 발걸음 · 브라우저가 데이터를 코드로 읽지 않게 한다. 연결된 쪽은 해당 발걸음의 시작 쪽입니다.
위 예제의 입력에는 실행 스크립트가 없습니다. 그래도 데이터와 HTML 구조의 경계를 확인할 수 있습니다.
innerHTML에 넣으면 b 태그가 해석되어 글자가 굵게 보입니다. 이는 입력이 단순한 글자 대신 HTML 구조를 만들 수 있다는 뜻입니다. 공격 가능한 입력이 허용되면 이 경계가 더 큰 문제로 이어질 수 있습니다.
일반 div의 textContent에 넣으면 <b>라는 글자까지 그대로 보입니다. 먼저 HTML 이스케이프한 문자열을 또 넣는 것이 아니라 원래 문자열을 텍스트로 전달합니다. 스크립트나 스타일 요소의 내용에 같은 원리를 무조건 적용해서는 안 됩니다.
만약 사용자가 굵은 글씨 등 제한된 HTML을 정말 작성해야 한다면, 필요한 요소와 속성만 허용하는 검증된 정화 기능을 사용합니다. 정화 후 다시 위험하게 문자열을 합치면 효과가 사라질 수 있습니다.
깨달음화면에 보일 데이터와 브라우저가 실행·해석할 구조를 분리합니다. 필요한 기능이 단순 텍스트라면 HTML 해석을 허용할 이유가 없습니다.
© K-BOOKS · 무료 웹 열람용 콘텐츠입니다. 무단 복제·저장·인쇄·재배포를 제한합니다.
무료 학습은 그대로, 종이책은 필요한 분을 위한 선택지입니다.
웹 416쪽 무료 · 종이책 B5 416쪽
웹 513쪽 무료 · 종이책 B5 513쪽