パスワードを忘れた? アカウント作成
9603 story

PHPセキュリティコンソーシアム発足 74

ストーリー by koyhoge
Webから脆弱性を追放セヨ 部門より

tamo曰く、"PHP Security Consortium (PHPSC) が 発足した。 セキュアプログラミングを励行する団体として PHP Security Guide の公開といった運動をしているようだ。 国際的な活動を目指しており、各種リソースの翻訳を歓迎している。"

比較的容易にWebアプリケーションを作成できるせいもあって、 非常に多くのWebアプリやサイトがPHPを用いて開発・公開されている。 その中にはセキュリティに無頓着なものが少なからず存在するのも事実だ。 今回のようにプログラミングガイドを広く公開し、開発者に対して啓蒙活動を行うことは、大きく広まってしまったPHPの宿命ともいえるかもしれない。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 追い付けない現実 (スコア:4, おもしろおかしい)

    by Anonymous Coward on 2005年02月03日 21時51分 (#688661)
    今PHP使ったプロジェクトの火消しやってるけど、
    受け取ったソースを見てガクガクガク...

    どうやら、我社にも協力会社にもロクなエンジニアがいなかったらしく、
    見付次第塞いでるけど、穴の生産されるスピードの方が早くて泣きそうです。

    担当者曰く、「文字列のエスケープは文字化け対策」、
    「ソケットディスクリプタの値が判らないから盗聴されない」、
    「正規表現なんてマイナーなモノなんか相手してらんない」、
    そうです。

    来週、通しテストがあるのに.....
  • by koney (6658) on 2005年02月03日 22時33分 (#688678) ホームページ 日記
    他分野(クラサバ)から入ってきた人とか、とんでもないコードを書いてくれますれど orz
    PHPに限らずWEBアプリっていうのは、下手をすると周りがすべて敵という環境で稼働するものです。
    性悪説に基づいたコードを書く必要があるっていうこと。

    PHPSCは「PHPセキュアプログラミングならここを見ろ」てなものになって欲しいと思います。
    いや、今まで各所でこの類の情報はたくさん出ていますけれど。
    やっぱ見ない人は、有益な情報があっても見ない罠。RTFM :p

    #個人的には言語仕様として「絶対こうじゃないと駄目」てな制約が欲しい
    #error_reportingが標準設定だと、まさにスパゲティにイチゴジャムをかけた状態ですし
    • >やっぱ見ない人は、有益な情報があっても見ない罠。
      見ないよ、見たら塞がなければいけないじゃないか!
      それよりも、ノーガード戦法で「見つけた」と言ってきた
      奴を捕まえて、法的手段に訴えてやれば、
      あそこは脆弱性がいっぱいあっても法的手段に出るから
      やめておこうって事になるんだよ!ザマーミロ!

      #それで守れたら世話ねえよ
      • >あそこは脆弱性がいっぱいあっても法的手段に出るから
        >やめておこうって事になるんだよ!ザマーミロ!

        当然ながら、この場合、「やめておこう」と言ってくれないのがクラッカーなわけでして...

        というわけ(?)で、
        たとえば、いざそれで個人情報取られちゃったときに、
        彼らの「技術的劣位」の責任を追求するようになってくれたら、
        それはそれでバランスが取れるんでしょうね。

        #嬉しいバランスではないですが。
        親コメント
  • by moriyoshi (15909) on 2005年02月04日 9時19分 (#688829)
    こんなのいつのまにできていたんだろう。知らなかった。

    こういう啓蒙活動自体は (ある意味) 喜ばしいのだけど、一方でやや空回りしている印象があるなあ。

    magic_quotes_gpc や super グローバルもいいけど、早々に sanity / taint レベルや文字コード / 言語の情報を持てる string type を導入すればよかったのに、そのあたり遅れている感が否めない。

    # もっとも、PHP5 なら __tostring() を使ってある程度達成できますが。
    # それにそういう仕組みがあったからといってセキュアになるとも限りませんがかなりましでしょう。

    Hardened-PHP でやってることも間違っちゃいないけど、あれは実装如何じゃなくてむしろブランドだからなあ。
  • ってのがいるんですよね。彼らはWebアプリケーションしか知らないプログラマーで、データ構造やアルゴリズムの基礎も知らないし、そういう類の本が役に立つということも知らない。抽象化とか再利用という言葉からひどく縁遠いところにいる彼らだから、セキュリティについてもレシピ集として「即使える」状態にして渡さないといけない。その点、この試みはいいんじゃないかな。

    • 最近おいらも PHP をちょくちょくさらっているのですが (専ら PHP5 なのですが)、PHP の解説書に、PHP の言語仕様について詳しく書かれたものがほとんど存在しないようなので、正直戸惑っております。自分の日記でも触れているのですが [srad.jp]、少なくとも言語仕様という部分についてのみいえば、PHP のサイトのマニュアル [php.net]に匹敵するような解説書には、いまだ出会ったことがありません。

      PHP5 になって、オブジェクト指向プログラミングに関わる部分に大きな変更が加えられたことについては、たいていの書籍で触れられているのですが、そのオブジェクト指向プログラミングに有効なエッセンスや、その辺の情報に詳しい書籍の紹介といった情報にも触れられず、それどころか、「参照渡し」という言葉を唐突に出しておきながら、 PHP における「参照」の扱いについては全くといっていいほど触れていないという有様で、これでは PHP からプログラミングに入り始めたプログラマーにはあまりにも気の毒だなぁと思わざるを得ない状況です。

      今回の試みにはもちろん賛成なのですが、願わくば、書店で販売されている書籍類についても、こうした意思がしっかりと反映されたものが出てきてくれることを、強く願うばかりなのであります。。。

      --
      むらちより/あい/をこめて。
      親コメント
    • by Anonymous Coward on 2005年02月04日 0時16分 (#688720)

      それは言語固有の問題ではないと思います。

      去年私が転職して入った会社にも、Java によるウェブアプリしか作れない人がいますが――

      • スタイルシートの書き方を知らない。
      • 「正規表現って何ですか?」と真顔で聞く。
      • 「Firefox って何ですか?」と真顔で聞く。
      • 「SQL インジェクション」を知らない。
      • いわゆる「半角カナ」の範囲を知らない。

      と、なかなか手ごわい人です。ちなみに業界経験 4 年。「Java 厨」という言葉があるのを最近知り、妙に納得してしまいました。

      # PHP-users メーリングリストの質の低下に嘆いているので AC

      親コメント
      • 先日、うちの職場に来ていた某協力会社な人は、職歴が相当おありのご年配なお方で、旧い CAD システムのことなどにも非常に詳しいお方だったのですが、業務用サーバーにユーザー登録する際、パスワードの入力をお願いしたところ、「それじゃあイチ、ニィ、サン、シィ、ゴー、ロク、シチ、ハチ…」などと読み上げながらその通りにキーボードを叩き始め、しかもその翌日にはそんな分かり安すぎるパスワードを忘れちゃうという素晴らしい御仁でした。

        その後、腕試しということで、コマンドライン上で動作するちょっとしたプログラムを作ってもらっていたらしいのですが、数時間後、「MFC のマニュアルが無いと作れないんですけど!!」とかお喚きになられたようでしたので、丁重にお帰り願ったんだそうでございます。。。人生いろいろ、プログラマーいろいろ (;_;)/

        --
        むらちより/あい/をこめて。
        親コメント
      • by Anonymous Coward on 2005年02月04日 2時15分 (#688763)
        普通っす。

        ・タブ文字を秀丸で検索するのに\tを使わずタブ文字をコピーする
        ・「拡張子datって何で開くの?」と聞いてくる
        ・改行コードがOSによって違うのを知らない
        ・WindowsのFTPクライアント(ffftp)の使いかたを知らない

        しかも、業界歴は僕より上の人たちです。複数、というか、それが周囲では普通。いや、仕事は普通にできるんですけどね。決してダメな人ではない。

        まあ、常に必要な知識か、と言われると、結構そうでもないのでしょうけど。
        親コメント
        • by Anonymous Coward on 2005年02月04日 9時06分 (#688821)
          >・「拡張子datって何で開くの?」と聞いてくる

          これって、色々あるから聞くんじゃないの?
          聞かないで、勝手に開らかねーって言うほうが問題なような気がする。

          >・WindowsのFTPクライアント(ffftp)の使いかたを知らない

          俺も知らない。使ったことないもん。必要性もないし。
          特定のアプリを知っているからどうした?

          ということで、問題なのは、

          >・改行コードがOSによって違うのを知らない

          だけのような?
          親コメント
          • by oku (4610) on 2005年02月04日 9時47分 (#688842) 日記

            >・WindowsのFTPクライアント(ffftp)の使いかたを知らない

            俺も知らない。使ったことないもん。必要性もないし。
            特定のアプリを知っているからどうした?

            多分、元コメントの言いたいことは、OS の ftp.exe を強制するのはさすがに気が引けるから ffftp を用意してやったのにそれ「すら」使えねえ、ということなのではないでしょうか?

            # 文字コード変換周りを外でやるのが面倒かっただけかも知れないが。

            ffftp の使い方を知らないのに「ftp して」って言われたら、普通の IT 土方は ftp.exe 使うのでそもそも問題にならないはずです。

            親コメント
            • by Li Luxing (7797) on 2005年02月04日 10時40分 (#688870)
              >>・WindowsのFTPクライアント(ffftp)の使いかたを知らない

              >俺も知らない。使ったことないもん。必要性もないし。
              >特定のアプリを知っているからどうした?

               使ったことがないのを知らないのはごく普通だと思いますが、ffftpはftpが使えるのであれば起動すれば即使えるくらいに使いやすいソフトではないでしょうか。

               親コメントの「使えない」が「使おうとしない」の意味であれば人それぞれだと思いますが、起動しても使い方を聞いてくるようであれば「ド素人」の範疇の人だと思います。
              --
              李 露星
              親コメント
          • 私もFFFTPの使い方なんて知りません。
            最近はSFTPしか使ってないから、FTP自体使ってません。

            自分の使うとこでは、FTPDを立ち上げなくなりました。
            そろそろFTPって不要なんじゃない?
            親コメント
        • >・タブ文字を秀丸で検索するのに\tを使わずタブ文字をコピーする

          少なくともこれは業界暦が長いからこそ、ですね。
          昔の秀丸は、\tでは検索できませんでした。 「タブ文字をコピーして検索する」 というのがいわば裏技として存在したのです。
          今でもクセでついやってしまいます。
          親コメント
      • > 「Java 厨」という言葉があるのを最近知り、

        Java厨という言葉を知らないというのも人のこと笑えないと思うのは僕だけ?
        Javaのメーリングリストや掲示板を見ていれば出会う言葉だと思いますけど。
        --
        It's not who is right, it's who is left.
        親コメント
        • 親コメの人じゃないですが(単語の存在は承知してます)
          逆にJavaのMLや掲示板ってどの辺を想定してますか?

          MLはJavaHouse-Brewersくらいしか知らない上に
          Webでしか読んでません。最近はほとんど目を通さなく
          なりましたが。

          厨ってくらいだから掲示板は多分2chを想定してるんだろうけど、
          自分は開発系の板は読まないので……そういう人もいるんでないですか。

          あとは@IT会議室くらいしか知らないのだけど、
          あそこでJava厨という表現は見たことはないです。

          他にめぼしいところってありますか?
          って書いてから気づいたがオフトピだ……
          親コメント
          • > 他にめぼしいところってありますか?

            スラド(笑
            あ、Javaの掲示板じゃないか。

            僕も2chは一切見ないのですが、調べ物があって検索していると
            結構2chにヒットするので知りました。
            「Java厨」という言葉を見たことがあるかは定かじゃないですが、
            「厨」というのが何にでも付くというのは知らず知らずに知ってました。
            --
            It's not who is right, it's who is left.
            親コメント
      • 誰もがスポーツや歌がうまくはなく、 プログラミングの素養も同じで、 誰でもがうまくプログラムを作れるのではありません。
        その昔、COBOLの外注にABCがの読み書きが怪しいのがいたくらいです。 英語での読み書きじゃあなくて、文字そのものの読み書きとローマ字がおぼつかない。 今でも最低レベルはそのようなもので、 汎用機のCOBOLの事務アプリケーション層に居た人々が、 WindowsとWebのJavaやPHPに移っているので、 レベルの
    • そういう人は大抵、PHPも使いこなせていません。
      個人的な経験で言うと、C/C++などを知らずにいきなりPHPに入ってきた人は、データ型やバイト単位のデータ処理の概念が希薄なので、DBの設計などをさせても物凄く効率の悪いテーブルを作成してきますね。
      また、嘘を書いてる解説書があまりにも多すぎ。明らかに公式ドキュメントに目を通したことの無いような作者が堂々と嘘を書いてる本があります。(これはPHPに限ったことでは無いですが。)
      PHPの名誉のために言うと、しっかりしたプログラマーが書いたPHPのプログラムは決して悪いものではありません。ただ、良質のPHPプログラマーは数が少ないですね。 その背景は、WEB製作業の賃金が全体的に下がってきているので質の悪いプログラマーばかりが増えたのと、良質な解説書の不足だと思います。
      それでも、良質の会社には良質のPHPプログラマーがいて良質のコードを書いています。
      親コメント
    • うちの場合はVC6しかできない人多数です。
      VC6以外が出来ても価値が無いみたいなこと、まで平気で言って
      こんな所やめた方がいいのかな…
  • 本当に助かります。 (スコア:2, すばらしい洞察)

    by Anonymous Coward on 2005年02月04日 1時47分 (#688755)
    これで少しは助かるかもしれないです。
    有名なIPA ISEC セキュア・プログラミング講座 [ipa.go.jp]では、PHPはないですしね。

    現在とあるサイトでクリティカルなバグを見つけてIPAに依頼中です。
    そのサイトは全体的に入力チェックという概念が欠如しているとしか思えないのです。
    # その割りにRefererチェックは無駄にしてたりする。
    # あんなの飾りにしかならないのに。

    サンプルが豊富にあるのは良いのですが、セキュリティに考慮していない動作するだけのサンプルを適当に繋ぎ合わせてしまえば見た目が完成してしまいセキュリティバグを生んでいる状況な気もします。

    というわけで、こういったセキュリティの問題を言語に近いところが啓蒙してくれると助かります。
    特にその言語固有の問題(PHPならRegister Globals等)があると助かります。
    言語の開発元が必要な事なんだと大きな声で言えば、彼らもやらなきゃいけないとそのうち理解してくれると思います。

    まぁ、そのうちじゃもう手遅れなんですけど。

    # 中身でバレてそうだけどACで
    • by tyuu (9154) on 2005年02月04日 9時52分 (#688846) ホームページ 日記
      > 特にその言語固有の問題(PHPならRegister Globals等)

      perl のように「汚染された(Tainted)」という概念が無いのが一番問題な気がします。

      PHP で可能な事と言えば
        ユーザからの入力を表示する時は htmlspecialchars() を利用する。
        # stripslashed() や addslashes() や quotemeta() の利用も。
        mysql に渡すユーザの入力は mysql_escape_string() する。
        # postgresql なら pg_escape_string(), pg_escape_bytea() とか。

      このぐらいかな。
      他にも行なった方が良い事ってありますか?
      親コメント
      • by kai_kamome (4560) on 2005年02月04日 11時05分 (#688890) ホームページ 日記
        > mysql に渡すユーザの入力は mysql_escape_string() する。
        > # postgresql なら pg_escape_string(), pg_escape_bytea() とか。

        私の処ではこれも禁止して、バインド変数を強制してます。
        バインドできないDBMSもあるので、PEARのDBが必要になりますが。
        # 必ずescapeとquoteしろと指示しても、絶対に抜けや
        # 2重espace/unescapeやる奴が出るので。

        後、外部コマンドの起動も、上級者の書いたwrapperを経由させてます。

        結局、ダメな奴はなにを教えても業務命令出しても守らないので、
        クリティカルな所は、バグを出しようがない環境を作ってやった
        方が、こちらも精神的に楽です。

        # 特定の関数は指定した一部のファイルからしか使えなくする拡張があるといいんですけどねぇ...
        --
        wild wild computing
        親コメント
  • 日常の小物をすべて PHP で書いている身としては非常に有益な話だと思います。

    お手軽言語だけにいい加減なプログラムが増えやすい傾向はあるんだろうけど、プログラマをけなすだけの投稿は避けて欲しいな>/.er のみなさん
    # たぶんお互いに得るものが少ないと思うので。

    --
    [わかってもらうことは難しい。わかってあげることは、もっと難しい。]
    • by Anonymous Coward on 2005年02月04日 9時48分 (#688843)
      罪を憎んで人を憎まず
      いい加減なプログラミング事例の書き込みを見て、俺は大丈夫だろうか、
      後輩は大丈夫だろうかと再確認する事は非常に有用だと思うのですが。

      あくまでも反面教師として読みましょう。

      #え?書かれた内容の事?書いた人の事?
      親コメント
      • Re:穴を憎んで人を憎まず (スコア:2, おもしろおかしい)

        by Elbereth (17793) on 2005年02月04日 14時31分 (#688999)
        > いい加減なプログラミング事例の書き込みを見て、俺は大丈夫だろうか、
        > 後輩は大丈夫だろうかと再確認する事は非常に有用だと思うのですが。

        先輩についてはもうあきらめてるんですね。
        親コメント
  • by Livingdead (18685) on 2005年02月04日 9時36分 (#688838) ホームページ 日記
    Apache + PHP って、個別の権限で各プログラムを動かそうと思ったら suExec + PHP CGI しかないんですか? Apache 2.x 系の prefork じゃない奴で、各バーチャルホストごとに別の権限でプロセス動かすってのが普通なのかな?
    --
    屍体メモ [windy.cx]
  • by Yappo (5920) on 2005年02月04日 10時56分 (#688882) 日記
    {くれませんか?}use strict;{はい、お願いします。}
  • by Anonymous Coward on 2005年02月03日 23時51分 (#688707)
    プログラミングはしませんが、仕事でOSやアプリの設定をガリガリしています。
    正直PHPの脆弱性発生頻度と開発スピードは早くて、
    メンテナンス的に辛いと思っています。
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...