감안할 코드 : 같이 HTML 이스케이프HTML을 HTML의 스크립트 태그에서 HTML 이스케이프 처리해야합니까? 이 같은
<script src="http://example.com/?foo=1&bar=2"></script>
src
의 값이되어야 하는가?
내 실험 및 연구 결과가 모호합니다.
감안할 코드 : 같이 HTML 이스케이프HTML을 HTML의 스크립트 태그에서 HTML 이스케이프 처리해야합니까? 이 같은
<script src="http://example.com/?foo=1&bar=2"></script>
src
의 값이되어야 하는가?
내 실험 및 연구 결과가 모호합니다.
예. 의문이 생길 때 W3C validator을 사용할 수 있습니다. &
은이 경우 &
으로 이스 케이 핑해야합니다.
큰 따옴표 속성은 this rules에 따라 구문 분석됩니다. &
이 발견되면 additional allowed character 인 U + 0022 따옴표 (").
그리고 Character reference in attribute value state와 character reference in attribute value state에
스위치,
시도 consume a character reference에 구성
아무 것도 반환되지 않으면 U + 0026 앰퍼샌드 문자 ()를 추가하십시오. 0)을 현재 속성 값인 으로 변경합니다.
그렇지 않으면 반환 된 문자 토큰을 현재 속성 값에 추가하십시오.
마지막으로 이 상태로 전환 된 속성 값 상태로 다시 전환하십시오.
따라서
&
을 탈출하지 않았다면 (아마도) 작동 할 것입니다. 그러나, consumption of the character reference 동안 구문 분석 오류가 발생합니다 : 일치가 이루어지지 않으면, 다음에 문자가 소모되지 않으며, 아무것도 는 반환되지 않습니다. 이 경우, U + 0026 앰퍼샌드 문자 (&) 뒤에있는 문자가 하나 이상의 영숫자 ASCII 문자와 U + 003B 세미콜론 문자 (;)의 순서로 구성되어 있다면이 문자는 parse error입니다. 당신이 안전하려면 당신이 그것을 탈출해야
참고 :
특정 포인트를 구문 분석 알고리즘은 parse errors이라고한다. 구문 분석 오류에 대한 오류 처리가 잘 정의되어 있지만 (이 사양 전체에 설명 된 처리 규칙) 사용자가 에이전트는 HTML 문서를 구문 분석하는 동안 발생하는 첫 번째 구문 분석 오류 인 에서 파서를 중단 할 수 있습니다. 에이 사양에 설명 된 규칙을 적용하고 싶지 않습니다.
예. –
감사합니다! 내 실험에서 알 수 있듯이 적절한 테스트를 포함하지 않았습니다. 당신의 대답은 지금 나의 발견과 일치합니다.(내가 왜 투표에 실패했는지 확신 할 수 없다. 아주 간단한 질문이지만, SO 또는 다른 곳에서 다른 구체적이고 결정적인 토론을 찾을 수 없었다). –