アカウント名:
パスワード:
自前でやるからバグが混入するサニタイズする関数やライブラリが主要言語に標準であればいい
SQLインジェクションの標準的な対策はサニタイズじゃなくてステートメント利用ですよ。
20年近く前でもステートメントなんて常識に近かったのに未だに使ってないアホな所あるの?百歩譲って数十年前から稼働し続けてるとかならまだギリギリ理解できるが(それでも普通は対応する)レガシーASPの時ですらやってたぞ。今どきなら学生が作ってすら当然のように対策してるよな。
修正コミット [github.com]見ると、パラメータがエスケープされるようにしましたみたいな感じだな。
まあ今だったらこなれたライブラリを使うんだが、GLPIはスタートが2003とかみたいだし開発リソースが足りないとテコ入れ改修は難しいのかな、ライブラリは流行り廃りもあるし。
それでも普通は対応する
プロジェクトのお守りする立場だったら考えるけど、一開発者ならあんま振られたくないお仕事だなw
これ、PHPのプロダクトなんですね。
PHPは知らないので調べたみたら、PHPでDB接続するには、PDO(PHP標準)を使用する様で、このPDOが実装されたのが 5.1.0(2005年リリース)だそうです。なので、2003年のプロダクトだと非標準のライブラリを使ってるわけで、そのライブラリがステートメント対応してなければ、上記の対応でもしょうがないですね。
自分はステートメント使わずにいつも文字列連結だなぁ。エスケープは忘れてない。
ステートメント使ったところで信頼出来ない文字列でSQL組み立ててりゃダメだろ。
少なくとも本件の原因となったSQLインジェクションは防げるわけだから十分じゃないの。
エスケープしないとならない文字のチェックはSQLエンジンに任せるのが確実で、それを自前でやってどれだけ効果があるのか疑問だし、そもそもステートメント使ってれば、発生する事象は検索・更新できないと言う方向になるわけで、データを壊したり流出させる可能性は限りなく低いと思うのだけど。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家
主要言語にサニタイズの関数なりライブラリつけろよ (スコア:0)
自前でやるからバグが混入する
サニタイズする関数やライブラリが主要言語に標準であればいい
Re:主要言語にサニタイズの関数なりライブラリつけろよ (スコア:2)
SQLインジェクションの標準的な対策はサニタイズじゃなくてステートメント利用ですよ。
Re: (スコア:0)
20年近く前でもステートメントなんて常識に近かったのに
未だに使ってないアホな所あるの?
百歩譲って数十年前から稼働し続けてるとかならまだギリギリ理解できるが(それでも普通は対応する)
レガシーASPの時ですらやってたぞ。
今どきなら学生が作ってすら当然のように対策してるよな。
Re: (スコア:0)
修正コミット [github.com]見ると、パラメータがエスケープされるようにしましたみたいな感じだな。
まあ今だったらこなれたライブラリを使うんだが、GLPIはスタートが2003とかみたいだし
開発リソースが足りないとテコ入れ改修は難しいのかな、ライブラリは流行り廃りもあるし。
それでも普通は対応する
プロジェクトのお守りする立場だったら考えるけど、一開発者ならあんま振られたくないお仕事だなw
Re: (スコア:0)
これ、PHPのプロダクトなんですね。
PHPは知らないので調べたみたら、PHPでDB接続するには、PDO(PHP標準)を使用する様で、このPDOが実装されたのが 5.1.0(2005年リリース)だそうです。
なので、2003年のプロダクトだと非標準のライブラリを使ってるわけで、そのライブラリがステートメント対応してなければ、上記の対応でもしょうがないですね。
Re: (スコア:0)
自分はステートメント使わずにいつも文字列連結だなぁ。
エスケープは忘れてない。
Re: (スコア:0)
ステートメント使ったところで信頼出来ない文字列でSQL組み立ててりゃダメだろ。
Re:主要言語にサニタイズの関数なりライブラリつけろよ (スコア:1)
少なくとも本件の原因となったSQLインジェクションは防げるわけだから十分じゃないの。
エスケープしないとならない文字のチェックはSQLエンジンに任せるのが確実で、それを自前でやってどれだけ効果があるのか疑問だし、そもそもステートメント使ってれば、発生する事象は検索・更新できないと言う方向になるわけで、データを壊したり流出させる可能性は限りなく低いと思うのだけど。