Free lancer’s blog

フリーランス活動に関する記録を記して行こうと思います。

jQuery で HTML テキストを escape する方法

例えば、外部からもらったテキストを

 

var text = jQuery( 'input[name="xxxx"]' ).val();

jQuery( 'xxxx' ).html( text );

 

なんてすると、XSS してくださいと言っているようなもの。

 

けど、jQuery 及び Javascript には escape 関数が用意されていない。

Javascript の escape 関数は主に全角文字、特殊文字をエスケープするもので、HMTL タグをエスケープするものではない。

 

関数を用意してもいいのだけど、スマートな方法を発見したので、覚書

 

var text = jQuery( 'input[name="xxxx"]' ).val();

text = jQuery( '<span/>' ).text( text ).html();

 

こうすることで、何とエスケープできてしまう。

ポイントは text 関数。こいつがテキストの内容をエスケープしている。

 

因みに、Javascript でも

 

elem./*@if(1) innerText @else@*/ textContent /*@end@*/ = text;

 

とすることで XSS は防げる。

安易に html に突っ込まないようにしたい。