噂のKENT本
KENT本@bakelattaの日記をみて読んでみたくなったので購入.
感想としては思ったよりはまとも,という感じ.
特に初心者向けという点では,ほんとの基礎部分(FTPでのアップの仕方とかパーミッションとか)の説明がちゃんとかかれていたり,Windows上にテスト環境を作るための手順が細かく説明されているのは良い感じ.
上の日記で引用されていた部分を,もう少し前後を書くと,
Perlを使う人々は,想像力を十分に発揮できると感じます.そこに「表現の自由」があることを体感します.もし,他人が書いたPerlプログラムのコードを見て,残念なことにその未熟さを批判する人がいたとしたら,実は彼自身の方が未熟です.彼はPerlが何たるかを理解していないからです.Perlは初心者から熟練者までを幅広くカバーしています.初心者は初心者なりに,熟練者は熟練者なりにコードを書き連ねればいいだけです.Perlはそれに応えるだけの柔軟さを持った言語です.未熟なままを,それはそれとして認めるところにPerlの文化があります.私はPerlをそのように理解しています.
となってました.まぁ,ほぼほぼ同意.
ただ,書き方の問題はともかく,セキュリティだけはもうすこしちゃんとしてほしい,というところでしょうか.
その辺ができていないと,表現の自由,ではすまされなくなってしまいますので.
セキュリティに関しては,一番最後に説明があるものの,もう少し細かく説明してくれればなぁという感じ.
取り上げられている問題は
・強制ブラウジング
・ディレクトリ・リスティング
・クロスサイトスクリプティング
の3つだけです.
この本の中の例では,よくsendmailを起動する例なんかが出てきているのだけど,コマンド実行に関しては何にも無し.
例の中では引数にリクエスト内容を渡すものが無いので,そのままの記述なら安全だけれど,パイプ出力を使ってコマンドを実行する部分の説明にも,その辺の記述が一切無いので,少し他のことをやろうとしたときにはまりそうです.
ちなみに,対策について,のところは,
本書のサンプルプログラムでは対応していませんが,~~~
で始まっています.うーん(^^;
サンプルプログラムはしっかり対応しておいた上で,対策を紹介すべきなところだと思いますけどねぇ.
(でも,ぱっと見では,クロスサイトスクリプティング脆弱性とかはなさそうです.)
それから,最後の方で,入力した内容をメールで送るタイプのショッピングカートの例があります.
でも,SSLの話とかは全然でてこないあたりが・・・
掲示板とちがって,サンプルとしては取り上げない方がよかったのではないかと思ったり.
----
KENT本がたとえば文字コードをUTF-8にしたりせめてCGI.pmとか使ってくれるだけでも世の中に与える影響力はものすごいものがあるのに、Javaといえばアプレット的な説明を2006年にもなってしてる場合じゃないだろうと。
KENT本に対する反応を見ていると,モジュール使うべき,というのがよく出てきますが,これはKENT本の利用者層を考えると無理という感じが.
モジュールが便利か便利でないかとか以前の問題として,モジュールを使う環境がないからです.
わたしもちょっと普通のプロバイダで使えるCGIでも書いてみよう,と思って調べてみたのだけど,プロバイダから提供されるCGI環境が惨憺たる状況に・・・
http://www.futomi.com/ispinfo/isp.html
・シェルが使えないのは当たり前.(perl -MCPAN -e shell とか無理.XS使うモジュールも全滅)
・Perlバージョンが古い.(5.6が多い.5.8ならEncodeがあるのに.)
・BiglobeとかNiftyとかでは,Perlコアモジュールすらない!
この状況で,モジュール使おう,といくら主張しても無理でしょう.
せめてCGI.pmくらい使って,と言おうにも,それすら使えない環境で動かしているわけで.
一部といいにくい大きなところがそういうことをやってしまっているようです.なんだかなぁ.
まぁ,そう考えれば,フォームを自前デコードするのも致し方ないですね.
(CGI.pmを自分でアップして使う手もあるでしょうけど,
CarpとかFile::Specとかに依存してるので,
その辺の対応も考えると現実的ではなさそう)
プロバイダの環境がもう少しまともになればいいんですけどねぇ.
初心者にモジュールの便利さを説く前に,プロバイダをなんとかするか,代替手段を提供しないと,ステップアップは無理そう.
CGI.pmコンパチな動作をする CGI.pl を提供するとか.(requireすれば使えるような)
Comments
XS使わないなら検索パスに*.pm置けばいいだけのような気がしますが(MTとかもそれでPerlモジュールわんさか同封していますし)。例えばUnicode::Japaneseをどう頑張っても使えないサーバっていうのはないはずですし。
KENTのスクリプトは最近一切見てないのですが、テンプレート使ったり、背景色変えるためにスクリプトを編集したり、それで文字列に「表示」とか入れて文字化けして悩んだりしなくてよくなったのでしょうか…
Posted by: naruto | Saturday, August 05, 2006 at 11:09 PM
XS無しなら確かにそれでいけそうですが,コアモジュールまで削られているとなかなか厳しいかと.
どれを同梱するべきなのか,依存関係を調べるだけでも結構面倒ですし.
(MTとかはプロが作ってるからいいけど,普通の人にそこまでの判断は厳しいでしょう)
それをするなら自前デコード...って思うのも無理はないかなと.
KENTは相変わらずテンプレート無し,ヒアドキュメントでがんばってるようです.
コードもSJISのようで,文字化け問題も健在かと・・・
Posted by: みかげ | Sunday, August 06, 2006 at 05:16 PM