診断用:JSONパーサのコメントっぽい文字列の取り扱いについて

IT

仕事で「/*com*/」と「/**com/」でSQLインジェクションの検証をしているが、JSONパーサに惑わされて紛らわしいときがある。

どのJSONパーサがコメントっぽい文字を解釈するのか気分のまま確かめてみる。

個人的な興味での調べごとなので、「~までやるべき」や「〇〇が足りない」、「〇〇のところが違うからダメ」とかは受け入れない。

前提

「/*com*/」 →この形式のコメントを許容するなら正常応答になる

「/**com/」 →上記を許容するならエラー応答になる

検証パターンは以下でやる。

【数値型】

  • /*com*/
  • /**com/
  • /com**/

ASP.net

System.Text.Json

サーバ側コード

通常

「/*com*/」→エラー

「/**com/」→エラー

「/com**/」→エラー

Newtonsoft.Json

サーバ側コード

通常

「/*com*/」→正常

「/**com/」→エラー

「/com**/」→エラー

エラー時のメッセージが違う。。。

おまけ

「//」→エラー

「//aaaa」→正常

Java

gson

サーバ側コード

通常

「/*com*/」→正常

「/**com/」→エラー

「/com**/」→エラー

PHP

json_decode

サーバ側コード

正常

「/*com*/」→エラー

「/**com/」→エラー

「/com**/」→エラー

疲れたし省略

  • Rubyのjsonパーサ
  • pythonのjsonパーサ
  • javaの他のjsonパーサ

結果

「/*com*/」→正常

「/**com/」→エラー

となるjsonパーサはあった。

上記にならず一律エラーになるjsonパーサもあった。

感想

仕事で気になっていたことを明確にできてよかった。

他にもjsonパーサはあったし言語も網羅できてないけど、そもそもこの現象はjsonパーサで起きるかという観点だったので別に網羅しなくてもいいなかと思った。

とりあえずこういった挙動するjsonパーサがあるということで大きな収穫。

検証は面白かったけどいろんな環境や言語でWebアプリを動かすのはまぁまぁ疲れた。。。

コメント

タイトルとURLをコピーしました