2023年1月21日
仕事で「/*com*/」と「/**com/」でSQLインジェクションの検証をしているが、JSONパーサに惑わされて紛らわしいときがある。
どのJSONパーサがコメントっぽい文字を解釈するのか気分のまま確かめてみる。
個人的な興味での調べごとなので、「~までやるべき」や「〇〇が足りない」、「〇〇のところが違うからダメ」とかは受け入れない。
目次
「/*com*/」 →この形式のコメントを許容するなら正常応答になる
「/**com/」 →上記を許容するならエラー応答になる
検証パターンは以下でやる。
【数値型】
サーバ側コード
通常
「/*com*/」→エラー
「/**com/」→エラー
「/com**/」→エラー
サーバ側コード
通常
「/*com*/」→正常
「/**com/」→エラー
「/com**/」→エラー
エラー時のメッセージが違う。。。
おまけ
「//」→エラー
「//aaaa」→正常
サーバ側コード
通常
「/*com*/」→正常
「/**com/」→エラー
「/com**/」→エラー
サーバ側コード
正常
「/*com*/」→エラー
「/**com/」→エラー
「/com**/」→エラー
「/*com*/」→正常
「/**com/」→エラー
となるjsonパーサはあった。
上記にならず一律エラーになるjsonパーサもあった。
仕事で気になっていたことを明確にできてよかった。
他にもjsonパーサはあったし言語も網羅できてないけど、そもそもこの現象はjsonパーサで起きるかという観点だったので別に網羅しなくてもいいなかと思った。
とりあえずこういった挙動するjsonパーサがあるということで大きな収穫。
検証は面白かったけどいろんな環境や言語でWebアプリを動かすのはまぁまぁ疲れた。。。