2

次のコンテンツを「htm」拡張子のファイルに保存すると、レンダリングされ、JavaScript アラートも表示されることに驚きました。

私は、ブラウザーが 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>
4

2 に答える 2

2

ブラウザーは、ドキュメントが HTML であるかどうかを、ファイル拡張子 (ローカル ファイルの場合) または Content-Type HTTP ヘッダー (HTTP 経由でアクセスされるファイルの場合) に基づいて判断します。非 text/html ドキュメントをスニッフィングして HTML であるかどうかを確認する Internet Explorer の一部のバージョン)。

ブラウザーがドキュメントが HTML であると判断すると、それが無効になる可能性があるにもかかわらず、可能な限り最善の方法でレンダリングします。不適切な文書に対処するように作成されたブラウザーと、ブラウザーがそれらに対処できるために作成された不適切な文書の組み合わせにより、すべてのブラウザーでますます強力なエラー回復ルーチンがスパイラル化されています。

欠落しているタグhtmlbodyタグが無効になることはありませんが、これらの要素の開始タグと終了タグは、HTML のすべてのバージョンでオプションです (ただし、オプション タグのない XHTML は除きます)。適切な Doctype とタイトルが与えられていれば、ドキュメントは有効です。

無効な HTML をブラウザに提供することに本質的なセキュリティ上の問題はありません。サイトへの追加を許可するユーザー生成コンテンツについて注意する必要があります (ただし、ブラウザーが有効なドキュメントのみを受け入れる場合でも注意が必要です)。また、不適切な HTML がブラウザーのセキュリティ ホールを悪用することがあります (ただし、これらの問題を修正するのは、ブラウザー ベンダーの責任です)。

于 2013-01-05T20:15:27.237 に答える
1

このようなHTML(Doctypeなし)に直面すると、ほとんどのブラウザーはクァークズ モードになります。

この時点でHTMLを解釈してレンダリングする方法は標準化されておらず、実装固有です。

これは、将来のバージョンで同じ動作を維持することに依存できないことも意味します。

つまり、今日このようなHTMLを特定の方法でレンダリングするブラウザに依存しないでください。変更される可能性があります。

セキュリティ上の懸念については、これがセキュリティとどのような関係にあるのかはわかりません(通常のブラウザのセキュリティの問題は別として)。

于 2013-01-05T20:01:23.587 に答える