日曜研究室 〜技術的な日常〜

技術的な観点から日常を綴ります

   2 月 02

セキュリティおよびPHPいじめwの話

最近なんか多いですねぇ。セキュリティに絡んだPHPとそのユーザいじめ。 でもさぁ、僕はPHPもRubyもPerlもPythonもやるけど、どれも似たり寄ったりだと思いますけどねぇ。 確かにPHPは標準関数のネーミングとかに行き当たりばったり的なものを感じるし、文字コード周りの妙な自動化処理は気に食わないけど、それって、関数に別名つければいいし(そうするだけの価値があるなら)、文字コード周りのこともその回避策を知ってれば済むはず。 逆に言えば、妙な挙動が文字コード周りに限定されるから回避もしやすいけど、言語仕様レベルでクラスの妙な挙動を許しているPerlとか、そっちのほうが問題かと。 なので実際には、「PHPのhtmlspecialcharsはけしからん!」と言えるだけマシだと思うんですよ。だって、他の言語で書かれたhtmlspecialcharsよりもけしからん名もないhtmlspecialchars的な処理が現実にwebサービスとして動いてるほうが怖いですよ。(もちろんPHP vs その他という構図ではなくて。) 啓蒙しづらいし、修正方法も教えにくい。 ただ、僕がPHP好きで他が嫌いかといったらむしろ微妙に逆です。上に挙げた4つの中では微妙にPythonが一番ですけど、でもPHPをVB5に例えるなら、他はVB6くらいにしか見えません。つまりどんぐりの背比べ。 どの言語でも等しく選択する機会が与えられればPHPは使いませんが、世の中の共用レンタルサーバってmod_phpは入っててもmod_perlは入ってないし、RubyとPythonは実行環境すらないのが普通なので、どうしてもPHPになってしまいます。 自分の好きな言語のユーザを増やしたかったら、ネガキャンやって足引っ張ってないで、どんな鯖管でも真っ先に入れたくなるような共有環境でも問題のない「素性のいい」mod_なんとかを作れば良いんですよ。 話は少し変わるのですが、こことかここをみて、もやもや感が晴れた感じ。 やっぱりまずは作ってナンボの世界ですよ。もちろん最初から最後までセキュリティ糞食らえじゃダメだけれとも、少なくともセキュリティのことを考えるのは設計してプロトタイプを作った後にするべきです。 セキュリティって画一的にこうしておけば良いってもんじゃなく、個々の場合に応じて考えられるべきなので、その「個々の場合」ってのがはっきりしないうちから考えるのは時間の無駄です。 僕にも昔ありました、セキュリティやオブジェクト指向のことばかり考えて悦に浸ってるけど、実際は何も生み出してない時期が。 それは今考えるとまったくの無駄って訳じゃないけども、まるで好きな人に告白する場面を何百回もイメトレしたけど、100万分の1の確立のことにまで考えを巡らせすぎて行動を起こせなくて期を逃すみたいな。 先に行動すれば、結果が良くても悪くても得るものはあるのです。結果が良ければその結果自体を、結果が悪ければ「その方法はダメだった」という事実を得ることができます。 学ぶ者としては、そのほうが学ぶスピードが格段に速いと思います。 PS. Web系に限らなければConcurrent Clenが最高だと思います。他の言語はクソですよ。本気でそう思います。 しかしそう表明することにどれほどの公的な価値があるでしょうか?

Read the rest of this entry »