2

ほとんどのMVCフレームワークは、Web ページに配置する前に、サーバー データのエスケープをサポートしています。jQueryajaxメソッドに同じことを行うオプションが見つかりませんでした。実際、ページに適切に表示するために文字列をエスケープするネイティブの jQuery 関数を見つけることさえできませんでした (コンテンツを に入れ、divを呼び出し.html(ても、空白が保持されるとは限りません)。underscoreこの関数が jQuery では利用できないのに、prototypeライブラリで見つけることができるのはなぜですか?

4

1 に答える 1

2

HTML マークアップ ( <br/><a>、 など&) が HTML マークアップとして扱われないようにしたいということだと思います。ユーザーに直接表示したいだけです。これにより、XSS (クロスサイト スクリプティング) などの攻撃を防ぐことができます。

これは実際には jQuery を使用すると非常に簡単ですが、エスケープとは異なります。メソッドを使用しているだけですtext。つまり、コンテンツはマークアップとしてではなく、テキスト コンテンツとして扱われます。

$.ajax({
    url: 'someurl',
    success: function(data) {
        $('#yourElement').text(data);
    }
});

クライアント側とサーバー側では動作が異なります。サーバー側で作業すると、マークアップを処理します。これは、パーサーがテキストであるべきコンテンツをマークアップとして処理するのを停止するためにエスケープする必要があります。クライアント側では、マークアップは既に解析されているため、ブラウザに「これはテキスト コンテンツです」と伝えるだけで済みます。これは、さまざまな方法 ( innerTextdocument.createTextNode、さらにはdocument.createCDATASection) で実行できます。jQuery のdataメソッドがこれを行います。

于 2012-08-28T09:31:32.123 に答える