2013-01-05 1 views
2

'htm'확장명을 가진 파일에 다음 내용을 저장하면 해당 내용이 렌더링되고 표시됩니다. JavaScript 경고.html 또는 body 태그가없는 html 파일이지만 div 만 모든 브라우저에서 렌더링됩니다.

브라우저에서 html 파일을 렌더링하는 데 최소한 HTML 및 body 태그가 필요하다는 인상을 받았습니다.

브라우저가 정상적으로 작동합니까? 이로 인해 보안 관련 문제가 발생합니까?

 <table width="100%" height="100%" border="1"> 
      <tr> 
       <td style="margin:0 auto;"> 
        <div style='color:red;height:100%;width:100%;margin:0 auto;text-align:center;border-width:1px;border-color:blue;border-style:solid;vertical-align:middle' id="div1"> 
         Does this render in a Browser, since there are html, head and body tags? 
         <div id='div2' style='height"100%;width:100%;margin:0 auto;text-align:center;border-width:1px;border-color:green;border-style:solid;'>Hello! Will the browser show this?</div> 
        </div> 
       </td> 
      </tr> 
     </table> 
     <script type='text/javascript'> alert('showing without tags');</script> 
+8

대부분의 브라우저는 잘못 작성된 코드를 보완하려고 노력하며 이해할 수있는 코드를 실행하기 위해 최선을 다할 것입니다. – j08691

+2

[Quirks Mode] (http://en.wikipedia.org/wiki/Quirks_mode)를 구하십시오! 또한 [whatwg] (http://quirks.spec.whatwg.org/)에도 나와 있습니다. – Oded

+0

그러면 문제가 발생하지 않을까요? – Sunil

답변

1

(문서 타입 제외) 같은 HTML을 직면하고, 대부분의 브라우저는 quirksmode로 이동합니다.

HTML을 해석하고이 시점에서 렌더링하는 방법은 표준화되지 않았으며 구현에 따라 다릅니다.

이것은 또한 향후 버전에서도 동일하게 유지되는 동작에 의존 할 수 없음을 의미합니다.

즉, 특정 방식으로 HTML을 렌더링하는 브라우저에 의존하지 마십시오. 변경 될 수 있습니다.

귀하의 보안 문제에 관해서는 - 보안과 관련하여 (정상적인 브라우저 보안 문제를 제외하고) 어떤 관계가 있는지 실제로 알지 못합니다.

+1

Quirks 모드는 유효성과 아무런 관련이 없습니다. 이는 Doctype에 의해서만 결정됩니다. – Quentin

+0

@Quentin - 고마워요. – Oded

+0

Quentin의 답변에서 설명하는 것처럼'html'과'body' 태그가 없어도 문서가 무효화되지 않고 브라우저 의존적 인 행동을 유발하지 않습니다. –

2

브라우저는 문서의 내용과 관련이없는 파일 확장자 (로컬 파일의 경우) 또는 Content-Type HTTP 헤더 (HTTP를 통해 액세스하는 파일의 경우)를 기준으로 문서가 HTML인지 여부를 결정합니다. (HTML이 아닌지 알아보기 위해 비 텍스트/HTML 문서를 감지하는 Internet Explorer의 일부 버전 제외).

일단 브라우저가 문서가 HTML이라고 판단하면 무효화 할 수있는 모든 내용에도 불구하고 가능한 한 최상의 상태로 렌더링합니다. 브라우저가 악의적 인 문서와 나쁜 문서를 처리 할 수 ​​있기 때문에 작성된 브라우저 조합은 모든 브라우저에서 점점 더 강력한 오류 복구 루틴을 만들어 냈습니다.

누락 된 htmlbody 태그는 유효하지 않으므로 해당 요소의 시작 및 종료 태그는 모든 HTML 버전에서 옵션입니다 (단, 선택 태그가없는 XHTML은 제외). 이 문서는 적절한 Doctype과 제목이 주어지면 유효합니다.

브라우저에 유효하지 않은 HTML을 제공 할 때 본질적인 보안 문제는 없습니다. 사이트에 추가 할 수있는 콘텐츠를 사용자가 생성했는지에 대해 신중해야합니다 (브라우저가 유효한 문서 만 받아들이더라도주의해야합니다). 그리고 때로 나쁜 HTML이 브라우저의 보안 허점을 악용 할 수 있습니다 이러한 문제를 해결할 책임은 브라우저 공급 업체의 책임입니다.)

+0

그래서이 유형의 동작이 주요 브라우저의 향후 릴리스에 항상 존재하게 될 것 같습니다. – Sunil

관련 문제