Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
json-sanitizer — json-sanitizerとCVE-2020-13973 | Kitploit
ツール/GitHubGitHub/epicosy/json-sanitizer
汎用ユーティリティ暗号化/復号化ツール脆弱性分析コード分析ウェブセキュリティ
GitHubepicosy/json-sanitizer

json-sanitizer

json-sanitizerとCVE-2020-13973

リポジトリを見る
2年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

json-sanitizer

JSONライクなコンテンツを入力として、JSON Sanitizerはそれを有効なJSONに変換します。

はじめに - 連絡先

これはデータパイプラインの両端に接続して、Postelの原則を満たすのに役立ちます。

自身の行いは保守的に、他者からの受け入れは寛大に

他者からのJSONライクなコンテンツに適用すると、使用するパーサーを満たす適切な形式のJSONが生成されます。

自身の出力に適用してから送信すると、エンコーディングの軽微な誤りを修正し、JSONをHTMLやXMLに埋め込みやすくします。

動機

アーキテクチャ

多くのアプリケーションは、アドホックな方法でJSON出力を生成する大量のコードを持っています。

これらの出力は多くの場合、すべてネットワークを介して送信される前に、少量のフレームワークコードを通過します。この少量のフレームワークコードはこのライブラリを使用して、アドホックな出力が標準に準拠しており、Javascriptのeval演算子などの(過度に)強力なデシリアライザに渡しても安全であることを保証できます。

また、アプリケーションはさまざまなソースからJSONを受け取るWebサービスAPIを持つことがよくあります。このJSONがアドホックな方法で作成されている場合、このライブラリはそれを解析しやすい形式に加工できます。

このライブラリをリクエストとレスポンスを送受信するコードに組み込むことで、ソフトウェアアーキテクトがシステム全体のセキュリティとウェルフォームドネスの保証を確保するのに役立ちます。

入力

サニタイザはJSONのようなコンテンツを受け取り、JSのevalが行うのと同様に解釈します。特に、以下の非標準的な構造に対応します。

サニタイザは欠落した句読点、終わりの引用符、一致しないまたは欠落した閉じ括弧を修正します。入力が空白のみの場合は、有効なJSON文字列nullが代わりに使用されます。

出力

出力はRFC 4627で定義された適切な形式のJSONです。出力は以下の追加のプロパティを満たします。

  • 出力には(大文字小文字を区別せずに)部分文字列"</script"が含まれないため、追加のエンコードなしでHTMLのscript要素内に埋め込むことができます。
  • 出力には部分文字列"]]>"が含まれないため、追加のエンコードなしでXMLのCDATAセクション内に埋め込むことができます。
  • 出力は有効なJavascript式であるため、Javascriptのeval組み込み関数(括弧で囲んだ後)またはJSON.parseで解析できます。具体的には、出力にはJSの改行(U+2028段落区切り文字またはU+2029行区切り文字)が埋め込まれた文字列リテラルは含まれません。
  • 出力には、XMLでエスケープなしで許可されている有効なUnicode スカラー値(孤立したUTF-16サロゲートは含まれません)のみが含まれます。

セキュリティ

出力は適切な形式のJSONであるため、それをevalに渡しても副作用や自由変数がなく、コードインジェクションベクターでも秘密の外部流出のベクターでもありません。

このライブラリは、JSON文字列→Javascriptオブジェクトのフェーズに副作用がなく、自由変数を解決しないことを保証するだけであり、その後のクライアントサイドコードが結果のJavascriptオブジェクトをどのように解釈するかを制御できません。そのため、クライアントサイドコードが解析されたデータの一部(攻撃者によって制御されているもの)を取得し、それをevalやinnerHTMLのような強力なインタプリタに戻して渡すと、そのクライアントサイドコードが意図しない副作用を被る可能性があります。

root@kitploit:~
var myValue = eval(sanitizedJsonString);  // safe
var myEmbeddedValue = eval(myValue.foo);  // possibly unsafe

さらに、JSONをサニタイズしても、Confused Deputy攻撃からアプリケーションを保護することはできません。

root@kitploit:~
var myValue = JSON.parse(sanitizedJsonString);
addToAdminstratorsGroup(myValue.propertyFromUntrustedSource);

パフォーマンス

sanitizeメソッドは、入力がすでに上記のプロパティを満たす有効なJSONである場合、新しいバッファを割り当てずに入力文字列を返します。したがって、通常は適切に形成された入力に使用すると、メモリオーバーヘッドは最小限です。

sanitizeメソッドはO(n)時間で動作します。ここでnはUTF-16コード単位での入力の長さです。

ツールをダウンロード
構造ポリシー
'...'シングルクォートで囲まれた文字列はJSON文字列に変換されます。
\xAB16進エスケープはJSONのUnicodeエスケープに変換されます。
\0128進エスケープはJSONのUnicodeエスケープに変換されます。
0xAB16進整数リテラルはJSONの10進数値に変換されます。
0128進整数リテラルはJSONの10進数値に変換されます。
+.510進数値はJSONのより厳密な形式に強制されます。
[0,,2]配列の省略要素はnullで埋められます。
[1,2,3,]末尾のカンマは削除されます。
{foo:"bar"}引用符なしのプロパティ名は引用符で囲まれます。
//commentsJS形式のラインコメントとブロックコメントは削除されます。
(...)グループ化の括弧は削除されます。