パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

プログラマを悩ます人名:「Null」さん」記事へのコメント

  • by Anonymous Coward on 2013年08月02日 18時30分 (#2433547)

    ステートメントとデータは別扱いなのでは。
    NULLという人名がステートメント扱いされるのなら、
    SQL文やプログラムコードとして解釈可能な建物名とかを住所として登録すると実行するわけだ。
    セキュリティホールそのものですね。

    システムのバグらしいので、通常のシステムであればありえない話です。

    #作者によるバックドアは裏仕様です

    • by minet (45149) on 2013年08月02日 19時10分 (#2433579) 日記

      件の処理系を触ったことがないので全く違うかもしれませんが、
      データを実行してしまうインジェクション系の話ではなくて、
      文字列の 'Null' を、比較処理において NULL 値に暗黙に変換してしまうような、そういうたぐいの型システムの不備ではないでしょうか。

      親コメント
      • by firewheel (31280) on 2013年08月02日 20時04分 (#2433612)

        Wikipedia見ると
        「Adobe FlashはActionScriptというJavaScriptと類似したプログラミング言語を内包しており、~」
        「Adobe Flexはその長所をさらに拡げ、~」
        とか書いてあるから、わりとそんな感じなのかも。

        たとえばPHPの場合だと、まさに「それは仕様です」だろうな。
        PHPだと下手すると標準ライブラリの中でも、そんな暗黙の型変換をやってくれるから、
        完全に潰すのはかなり手間。

        親コメント
      • タレコミに書かれてるとおり、
        > SOAPエンコーダのバグ
        でしょ。
        SOAP とは、一言で言えば「オブジェクトをテキスト(XML)で表現」するためのプロトコル
        言語処理系の問題ではなくライブラリの問題。。

        オブジェクト中の文字列型プロパティをテキスト化(エンコード)するときに、
        ・基本は文字列をそのままテキスト出力、null値の時は「Null」という文字列で出力
        して、テキストからオブジェクトへの読み込み(デコード)側では
        ・基本は読み込んだテキストをそのまま文字列化、「Null」というテキストの時はnull値に
        なんてことをしていたのでしょう。

        文字列Nullをエンコードしてデコードしたらnull値になっちゃう、と。

        親コメント
        • by minet (45149) on 2013年08月04日 14時51分 (#2434380) 日記

          わかりやすい解説ありがとうございます。

          確かに、文字列型の場合は空文字列が想定されるから、XMLでオブジェクトを表現する際、要素が空である場合にNULL値とみなすような実装はできない…、でも属性で示せばいいんじゃない?
          と思って調べてみたところ、やはりSOAPにはちゃんとNULL値を示す属性があるようですね。
          それを使わずに、俺々エンコード・デコードを組んでしまった(しかも 'Null' という簡単な文字列をキーワードにして)ということなんでしょうかね。

          親コメント
      • by Anonymous Coward

        > 文字列の 'Null' を、比較処理において NULL 値に暗黙に変換
        確かに処理自体は違うのですが、これはインジェクション系の場合でも、
        問題点としては同様とみなせると思います。

          minet氏は理解しておられるのでいいのですが、
        これを処理系のバグだと理解していない人もいるようなので、
        話が噛み合なくなっているようです。

        #単なるバグなので通常はありえない
        #PG設計が悪いのは論外 (自殺願望があるのなら止めはしない)

    • by hahahash (41409) on 2013年08月02日 19時04分 (#2433574) 日記

      いや、
      『文字列をやりとりするシステムで、キーワードとしての特別な文字列が設定されている』
      なんて、いくらでもありえる話だろ。

      親コメント
      • by Anonymous Coward
        自由入力欄に「キーワードとしての特別な文字列が設定」するのはアホのすることだけどな
      • by Anonymous Coward

        その項目をValueとして評価するのはバカだろ。

      • by Anonymous Coward

        だから本当は__NULL__とかにすればよかったんですけどね
        まあなんかうっかりやっちゃったのでしょう

      • by Anonymous Coward

        >『文字列をやりとりするシステムで、キーワードとしての特別な文字列が設定されている』

        ありえないとはいえないが、
        これがデザインレビューで認可されるソフトハウスとは一緒に仕事をしたくない
         

        • by Anonymous Coward

          MIMEマルチパート全否定ですね

          • by Anonymous Coward

            "Null" さんは名前の文字列として格納されるべきなので
            システム側がデータとして現れないことを保障している場合と、
            データーとして取り扱える場合を混同しているのでは。

            まあMIMEマルチパートの場合は無理やり感は確かにありますが、
            非同期通信の区切りコードなどと似た方法ですね。

            #本文終了は ドット(.)1文字なのも強引
            .

    • by Anonymous Coward

      要約するとヌルいシステムだなあ?という話?

      • by Anonymous Coward

        そんなところです。

        そのほかにも影響がありそうなライブラリやアプリケーションなどがありそうだ。日本人にはあまりなさそうな名前なので日本での影響はほとんどないと思うが、万が一Nullさんが利用することを考えてデバッグはしたほうがよいのかもしれない。

        バグっていない限りは、通常ありえないということで。

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

処理中...