HTML处理 |
stripTags | escapeHTML | unescapeHTML |
|
|
JSON处理 |
unfilterJSON | isJSON | evalJSON | parseJSON |
脚本处理 |
stripScripts | extractScripts | evalScripts |
これで、
HTML 文字列、JSON 文字列、および HTML のスクリプト文字列に対応する文字列部分が、関連付けられた特定のアプリケーションに転送されます。
[ランダムな文ですが、JSON については、http://www.cnblogs.com/TomXu/archive/2012/01/11/2311956.html をご覧ください]
以下は個別に説明されています:
1. HTML 文字列
stripTags: 文字列内のすべての HTML タグを削除します。
escapeHTML: HTML 特殊文字を同等のエンティティに変換します。 (&corresponds
corresponds> )
unescapeHTML: 文字列からタグを削除し、エンティティによって表される HTML 特殊文字を通常の形式に変換します。 (escapeHTML の逆の操作)
stripTags/[このメソッドで注意すべき点は次のとおりです。ただし、stripTags は <script> タグを削除します。そのため、<script> 内のコンテンツが公開され、ページ構造に影響を与える可能性があります。] <br>2. スクリプト文字列 <br>文字列内のすべての HTML スクリプト ブロックを削除します。スクリプト タグのstripTags メソッドの欠点を補います。<br>extractScripts: 文字列に含まれるすべてのスクリプトの内容を抽出し、文字列配列として返します。<br>evalScripts: すべてを実行します。文字列に含まれるスクリプト ブロック。各スクリプトの実行後に返される値を含む配列を返します。stripScripts の正規表現は、stripTags の正規表現を発展させたものです。 ><br><br> コードは次のとおりです。 <div class="codetitle">
<span> <a style="CURSOR: pointer" data="10424" class="copybut" id="copybut10424" onclick="doCopy('code10424')">functionstripScripts() { <u>var pattern = new RegExp('<script[^>]*>([ \ S\s]*?)</script>', 'img');//大文字と小文字を無視、mlinebreak,gglobalreturn this.replace(pattern, '');
コードをコピー
コードは次のとおりです。
Map は配列の拡張です。一部のブラウザにはこのネイティブ メソッドがあります。「Chrome ネイティブ メソッド配列」を参照してください。
最終的に得られるものは、すべてのスクリプト タグの内部コンテンツの配列であるため、evalScripts のアプローチは次のとおりです。非常に自然なことです。取得した配列をループし、順番に実行 (eval) し、各実行の結果を保存します。
コードをコピー
コードは次のとおりです。
function evalScripts() {
return this.extractScripts ().map(function(script) { return eval(script) }); } 3. JSON 処理 unfilterJSON: Ajax JSON または JavaScript 応答コンテンツを削除します。セキュリティコメント区切り付近。
isJSON: 正規表現を使用して文字列が正当な JSON 形式であるかどうかを検出します
evalJSON: JSON 形式の文字列を実行し、結果オブジェクトを返します
ここで、isJSON と evalJSON は JSON.js の parseJSON であり、コードこれは、「文字列からの JSON の解析」を参照してください。
ところで、unfilterJSON のセキュリティ アノテーション区切り文字について説明します。これは、独自のデータの場合、戻り値の両端に特殊文字を追加できます。 . 文字 (区切り文字) を使用して、解析時に追加された区切り文字を処理します。これにより、一部の XSS 攻撃をある程度軽減できます。
プロトタイプのデフォルト形式は次のとおりです:
'/*-secure-n{"name": "小西山子","age": 24}n*/'
区切り記号は /* です-secure-n' および 'n*/'