HTMLエンティティとは

click fraud protection

ハイパーテキストマークアップ言語(HTML)は、インターネット上のWebページの主要言語です。 これには、JavaScriptやCSSなどの追加機能やスタイルを追加する他の多くの言語のサポートが含まれています。 これらの言語はすべてテキストベースであり、ブラウザに出力する必要のあるリテラル文字列と解釈および実行する必要のあるコードを区切るために使用されるいくつかの意味のある文字を使用しています。

このデザインにはいくつかの問題がありますが、意味のある文字の1つをブラウザーに印刷するときに、これらの問題が明らかになります。 使用するのに最適な文字の例は、「より小さい」および「より大きい」記号です。 それぞれ、これらのシンボルは、HTMLのコードセグメントを開いたり閉じたりするために使用されます。 これらの文字を画面に安全に印刷する正しい方法は、HTMLエンティティを使用することです。

HTMLエンティティとセキュリティ

これらの文字には特別な意味があるため、ブラウザに出力する場合は、HTMLエンティティバージョンに置き換えるように注意する必要があります。 残念ながら、多くのWeb開発者は、ユーザーが多くのWebサイトに入力を送信できることを忘れています。 このユーザー入力に意味のある文字が含まれていて、それらがHTMLエンティティに置き換えられていない場合、サニタイズと呼ばれるプロセスで、Webサイトにクロスサイトスクリプティング(XSS)の脆弱性があります。

ヒント:XSSの脆弱性を見つけるために、特殊文字をWebサイトに送信しようとしないでください。 これを行うことは技術的にハッキングであり、ウェブサイトの所有者からの許可がない限り、犯罪です。

HTMLエンティティがどのように機能するか(場合によっては機能しない)

HTMLエンティティは、ブラウザが関連する特殊文字として表示し、特殊文字として扱わないことを認識しているため、機能します。 すべてのHTMLエンティティは、アンパサンド「&」で始まり、セミコロン「;」で終わります。 ほとんどの文字はエンティティ番号で識別されますが、一部の特殊文字にも省略名があります。 たとえば、「&」、「」には、エンティティ番号「&」、「」と、エンティティ名「&」、「」がそれぞれあります。 ブラウザは、これらの文字列が関連する文字を表示する必要があることを意味することを認識しています。

ヒント:文字エンティティ名の完全なリストを見つけることができます ここ、エンティティ名のサポートはブラウザによって異なりますが。

ほとんどの場合、ユーザーはHTMLエンティティが表す文字のみを表示する必要があります。 ただし、「ダブルエンコーディング」と呼ばれるプロセスを通じて、エンコードされた文字(通常はアンパサンド「&」)を表示することは可能です。 これは、アンパサンド文字が独自のエンコードされたバージョンで表示されるときに発生します。 ダブルエンコーディングは通常、入力が送信されたときに正しくエンコードされたときに発生しますが、出力されたときに再びサニタイズされます。 これにより、「&」の先頭のアンパサンドが2回エンコードされ、「&」として表示されます。その後、ブラウザは HTMLエンティティをデコードし、部分を無視した「&」として出力される文字列として正しく解釈します 実在物。