アカウント名:
パスワード:
自前でやるからバグが混入するサニタイズする関数やライブラリが主要言語に標準であればいい
SQLインジェクションの標準的な対策はサニタイズじゃなくてステートメント利用ですよ。
20年近く前でもステートメントなんて常識に近かったのに未だに使ってないアホな所あるの?百歩譲って数十年前から稼働し続けてるとかならまだギリギリ理解できるが(それでも普通は対応する)レガシーASPの時ですらやってたぞ。今どきなら学生が作ってすら当然のように対策してるよな。
修正コミット [github.com]見ると、パラメータがエスケープされるようにしましたみたいな感じだな。
まあ今だったらこなれたライブラリを使うんだが、GLPIはスタートが2003とかみたいだし開発リソースが足りないとテコ入れ改修は難しいのかな、ライブラリは流行り廃りもあるし。
それでも普通は対応する
プロジェクトのお守りする立場だったら考えるけど、一開発者ならあんま振られたくないお仕事だなw
これ、PHPのプロダクトなんですね。
PHPは知らないので調べたみたら、PHPでDB接続するには、PDO(PHP標準)を使用する様で、このPDOが実装されたのが 5.1.0(2005年リリース)だそうです。なので、2003年のプロダクトだと非標準のライブラリを使ってるわけで、そのライブラリがステートメント対応してなければ、上記の対応でもしょうがないですね。
自分はステートメント使わずにいつも文字列連結だなぁ。エスケープは忘れてない。
ステートメント使ったところで信頼出来ない文字列でSQL組み立ててりゃダメだろ。
少なくとも本件の原因となったSQLインジェクションは防げるわけだから十分じゃないの。
エスケープしないとならない文字のチェックはSQLエンジンに任せるのが確実で、それを自前でやってどれだけ効果があるのか疑問だし、そもそもステートメント使ってれば、発生する事象は検索・更新できないと言う方向になるわけで、データを壊したり流出させる可能性は限りなく低いと思うのだけど。
問い合わせ言語に独自文法のSQLなんて使わずにXML辺りにしときゃ良かったんじゃなかろうか。いろんなプロトコルがそうだけど、コンソールに人間が対話的に入力するみたいなイメージでプログラム間の通信を定義すること自体がトラブルの元だとしか思えない。
まぁ現状なら自前でやらず信頼できるライブラリかなんか使えとしか言えないが。
XMLでパラメータ指定するときにエスケープ忘れたら同じよ。HTMLだけどXSSとかさ。
サニタイズ笑
サニタイズ言うな!キャンペーンとか懐かしす。セキュリティホール以前に機能面での不具合だもんなぁ。こんなの。
「サニタイズ」って英数字を全角に変換することでしょ?
全角英数字と()を使うやつを許さない。特にファイル名に使われてるのを見るとその日は一日中不機嫌になるので注意して。
一緒に仕事してるやつもスラド見てるのがわかってて、直接言うと角が立つからここに書き込んでるってこと?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
主要言語にサニタイズの関数なりライブラリつけろよ (スコア: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エンジンに任せるのが確実で、それを自前でやってどれだけ効果があるのか疑問だし、そもそもステートメント使ってれば、発生する事象は検索・更新できないと言う方向になるわけで、データを壊したり流出させる可能性は限りなく低いと思うのだけど。
Re: (スコア:0)
問い合わせ言語に独自文法のSQLなんて使わずにXML辺りにしときゃ良かったんじゃなかろうか。
いろんなプロトコルがそうだけど、コンソールに人間が対話的に入力するみたいなイメージでプログラム間の通信を定義すること自体がトラブルの元だとしか思えない。
まぁ現状なら自前でやらず信頼できるライブラリかなんか使えとしか言えないが。
Re: (スコア:0)
XMLでパラメータ指定するときにエスケープ忘れたら同じよ。
HTMLだけどXSSとかさ。
Re: (スコア:0)
サニタイズ笑
Re: (スコア:0)
サニタイズ言うな!キャンペーンとか懐かしす。
セキュリティホール以前に機能面での不具合だもんなぁ。こんなの。
Re: (スコア:0)
「サニタイズ」って英数字を全角に変換することでしょ?
Re: (スコア:0)
全角英数字と()を使うやつを許さない。
特にファイル名に使われてるのを見るとその日は一日中不機嫌になるので注意して。
Re: (スコア:0)
一緒に仕事してるやつもスラド見てるのがわかってて、直接言うと角が立つからここに書き込んでるってこと?