アカウント名:
パスワード:
ステートメントとデータは別扱いなのでは。NULLという人名がステートメント扱いされるのなら、SQL文やプログラムコードとして解釈可能な建物名とかを住所として登録すると実行するわけだ。セキュリティホールそのものですね。
システムのバグらしいので、通常のシステムであればありえない話です。
#作者によるバックドアは裏仕様です
件の処理系を触ったことがないので全く違うかもしれませんが、データを実行してしまうインジェクション系の話ではなくて、文字列の 'Null' を、比較処理において NULL 値に暗黙に変換してしまうような、そういうたぐいの型システムの不備ではないでしょうか。
タレコミに書かれてるとおり、> SOAPエンコーダのバグでしょ。SOAP とは、一言で言えば「オブジェクトをテキスト(XML)で表現」するためのプロトコル言語処理系の問題ではなくライブラリの問題。。
オブジェクト中の文字列型プロパティをテキスト化(エンコード)するときに、・基本は文字列をそのままテキスト出力、null値の時は「Null」という文字列で出力して、テキストからオブジェクトへの読み込み(デコード)側では・基本は読み込んだテキストをそのまま文字列化、「Null」というテキストの時はnull値になんてことをしていたのでしょう。
文字列Nullをエンコードしてデコードしたらnull値になっちゃう、と。
わかりやすい解説ありがとうございます。
確かに、文字列型の場合は空文字列が想定されるから、XMLでオブジェクトを表現する際、要素が空である場合にNULL値とみなすような実装はできない…、でも属性で示せばいいんじゃない?と思って調べてみたところ、やはりSOAPにはちゃんとNULL値を示す属性があるようですね。それを使わずに、俺々エンコード・デコードを組んでしまった(しかも 'Null' という簡単な文字列をキーワードにして)ということなんでしょうかね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
理解不能 (スコア:0)
ステートメントとデータは別扱いなのでは。
NULLという人名がステートメント扱いされるのなら、
SQL文やプログラムコードとして解釈可能な建物名とかを住所として登録すると実行するわけだ。
セキュリティホールそのものですね。
システムのバグらしいので、通常のシステムであればありえない話です。
#作者によるバックドアは裏仕様です
Re: (スコア:2)
件の処理系を触ったことがないので全く違うかもしれませんが、
データを実行してしまうインジェクション系の話ではなくて、
文字列の 'Null' を、比較処理において NULL 値に暗黙に変換してしまうような、そういうたぐいの型システムの不備ではないでしょうか。
Re:理解不能 (スコア:1)
タレコミに書かれてるとおり、
> SOAPエンコーダのバグ
でしょ。
SOAP とは、一言で言えば「オブジェクトをテキスト(XML)で表現」するためのプロトコル
言語処理系の問題ではなくライブラリの問題。。
オブジェクト中の文字列型プロパティをテキスト化(エンコード)するときに、
・基本は文字列をそのままテキスト出力、null値の時は「Null」という文字列で出力
して、テキストからオブジェクトへの読み込み(デコード)側では
・基本は読み込んだテキストをそのまま文字列化、「Null」というテキストの時はnull値に
なんてことをしていたのでしょう。
文字列Nullをエンコードしてデコードしたらnull値になっちゃう、と。
Re:理解不能 (スコア:1)
わかりやすい解説ありがとうございます。
確かに、文字列型の場合は空文字列が想定されるから、XMLでオブジェクトを表現する際、要素が空である場合にNULL値とみなすような実装はできない…、でも属性で示せばいいんじゃない?
と思って調べてみたところ、やはりSOAPにはちゃんとNULL値を示す属性があるようですね。
それを使わずに、俺々エンコード・デコードを組んでしまった(しかも 'Null' という簡単な文字列をキーワードにして)ということなんでしょうかね。