Prototypeソースコードの簡単な分析 文字列部分(3) HTML文字列処理_prototype

WBOY
リリース: 2016-05-16 17:57:15
オリジナル
934 人が閲覧しました
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 特殊文字を同等のエンティティに変換します。 (&correspondscorresponds> )
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*/'
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート