2

감안할 코드 : 같이 HTML 이스케이프HTML을 HTML의 스크립트 태그에서 HTML 이스케이프 처리해야합니까? 이 같은

<script src="http://example.com/?foo=1&amp;bar=2"></script> 

src의 값이되어야 하는가?

내 실험 및 연구 결과가 모호합니다.

+0

예. –

+0

감사합니다! 내 실험에서 알 수 있듯이 적절한 테스트를 포함하지 않았습니다. 당신의 대답은 지금 나의 발견과 일치합니다.(내가 왜 투표에 실패했는지 확신 할 수 없다. 아주 간단한 질문이지만, SO 또는 다른 곳에서 다른 구체적이고 결정적인 토론을 찾을 수 없었다). –

답변

3

예. 의문이 생길 때 W3C validator을 사용할 수 있습니다. &은이 경우 &amp;으로 이스 케이 핑해야합니다.

큰 따옴표 속성은 this rules에 따라 구문 분석됩니다. &이 발견되면 additional allowed character 인 U + 0022 따옴표 (").

그리고 Character reference in attribute value statecharacter 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 문서를 구문 분석하는 동안 발생하는 첫 번째 구문 분석 오류 인 에서 파서를 중단 할 수 있습니다. 에이 사양에 설명 된 규칙을 적용하고 싶지 않습니다.

관련 문제