自動ニュース作成G
PostgreSQLにあるSQLインジェクションの脆弱性が9年以上発見されずアメリカ財務省への侵入に使用されてしまう - GIGAZINE
https://gigazine.net/news/20250318-postgresql-injection-vulnerability/
2025-03-18 18:42:25
SQLインジェクション対策ってデータベース層でやるの?もっと上位層でやるんじゃないのかな?と思ったけど
>今回侵入されたアメリカ財務省のシステムでは、ユーザーからの入力を安全な形にエスケープするサニタイズ処理でPHPのpg_escape_stringメソッドを使用していました。
うーんPHPならウェブサーバー側じゃないのかな?良くわからん
・> pg_escape_stringは内部で実際にエスケープ処理を行うPQescapeStringInternalを呼び出しており、PQescapeStringInternalはエスケープ処理の際にマルチバイトUnicode文字の長さを調べる関数「pg_utf_mblen」を使用しています。(略) 「27」はシングルクオートを表す文字コードのためシングルクオートが挿入されてSQLインジェクションが成立してしまったとのこと。
・pg_escape_string は php の関数で、pg_utf_mblen は PostgreSQLの(内部)関数みたいね
・ある文字列を入れたら命令内に別の命令を組み込めて、そういう形の命令だと、本来プログラム内で禁止されている命令が通るのでハッキングに入り口になる、って話か。そもそも、そんな自由な形での命令を受け付けるな、って話なんだろうけど、氏名とか会社名とかに埋め込むって事か
・#2そうなのか。ありがとう
・今どきはプレースホルダを使うのが常識だから、いにしえのプログラムが残っていたんだろうなあ。ロートルプログラマという可能性もあるが
・自分はこういうことがあるからSQLが嫌い。最初からDBを利用するAPIと静的SQLだけでいいじゃん。無理やり動的SQLみたいな設計できないヤツでも後から何とでもできるクソみたいな仕掛けが全ての元凶だと思ってる。余程データをいじくり回さない限り BerkeleyDBだけでいいよ