PHP 勉強中
『独習 PHP』で勉強中です(お前もか~、と言う人も多いのでは?)。
きっかけは pha さん
きっかけは(もちろん)、この記事。
田口元の「ひとりで作るネットサービス」探訪:「圧縮新聞」「訃報ドットコム」始めて半年で数々のサービスを生み出す、自称"ニート"──phaさん – ITmedia Biz.ID
その後、id:pha さんの記事を読んで、(「うーん、さんぜんえん か……」)──す、すぐに『独習 PHP』を買いました。
好きな漫画の感想、便利なアプリ・おすすめ商品の紹介
『独習 PHP』で勉強中です(お前もか~、と言う人も多いのでは?)。
きっかけは(もちろん)、この記事。
田口元の「ひとりで作るネットサービス」探訪:「圧縮新聞」「訃報ドットコム」始めて半年で数々のサービスを生み出す、自称"ニート"──phaさん – ITmedia Biz.ID
その後、id:pha さんの記事を読んで、(「うーん、さんぜんえん か……」)──す、すぐに『独習 PHP』を買いました。
昔々(10 分前)、あるところ(ココ)に「あじあもす」という青年(オレ)が、
「えーんえーん、ブログネタが無いよぅ」
と、たいそう困っておったそうな。
そこで、神々(ギークとかエラい人とかエロい人とか)が集う電子図書館(livedoor Reader)で、いつものように勉学(巡回)に励んでいた(j, j, j,…)ところ、たいへん面白い評論会(後述)に辿り着いたのじゃった……。
ということで、面白ウェブサービスの紹介です。
これ以上ないくらいシンプルな画面で、使い方も すぐわかると思います。
みなさんも、自分やお気に入りのブログ URL を入力してみましょう。
2008-01-10T21:02:01+09:00 追記
「大人の事情」で記事を修正しました(詳しくは聞かないように!)。
2008-01-12T17:59:03+09:00 追記
MTOS version 4.1-en-release-27-r1206-20080112 で、下記の不具合が修正されていました。MT4.1x も、近日中に修正されるでしょう。
けっこう、クリティカルな不具合だったらしく、速攻で直していただけました。
(MT ユーザと six Apart の役に立てて うれしいゼ!)
2008-01-16T09:37:48+09:00 追記
Six Apart – Movable Type News: 【重要】 Movable Type 新バージョンとパッチの提供について
本件の不具合を修正したバージョン・パッチの提供が始まりました。なんと、MT3.21 から MT4 まで、幅広く関わる不具合だったようです。早急にアップデート・パッチの適用を行ったほうが良いですね。
「パッチ……?」 つ Windows環境で「ファイルにパッチ(patch)を当てる」 : 亜細亜ノ蛾
MTOS と MT4.1 で、不具合(脆弱性)を発見し(てしまい)ました。
すでに six Apart に報告済みなので、そのうち対処されるでしょう。
(とは言え、けっこう修正は面倒くさそうな所なんだよなぁ)
環境によっては、致命的な不具合かと思います。
すべてのテンプレートを確認して、
PHP のソースコード内にパスワード情報が含まれていないか確認
したほうが良いと思います。
いやー、とうとう自分もバグ報告デビューですよ。憎むべきバグも、見付けたときは、ちょっぴり うれしい。
今回の「ある URL」は、第三者から ものすごく簡単に見られるので、ちょっと技術があれば何万件もの PHP ソースコードが簡単に GET できる。その中から数件でも DB へのログインパスワードが見つかれば──ね。
なので、みなさんに周知したいし、でも悪意ある人には見られたくないし──と、ちょっと公開を考えました。しかし、今回の件にかかわらず、何らかのきっかけで PHP のソースコードは見られる可能性がある、というのを考えに入れたほうが良いのかも。と思って記事を書きました。
自分の場合、その「何らかのきっかけ」が起こるタイミングが今回わかったので、ラッキィでした。自分でスクリプトを書くときには気をつけよう。
そんなこんなで、また MT4.x への移行が遅れるのであった──。
PHP の勉強も兼ねて、
「JavaScript ファイルを自動的に縮小(Minify)して、(gzip)圧縮する」
というスクリプトを作っています──と何度も書いて来ましたが、
結論: \(^o^)/ 無理
という、残念な結果に終わりそうです(8 割方 予想が付いていたけど)。
今回は、それがなぜ難しいのか という話と、/packer/ は やっぱり凄い! という話です。
やりたいこと:
たったこれだけのことですが、じつは ものすごく難しいです。ちなみに、「PHP4」で、というのは、ただ単に ここのサーバで動いているのが PHP4 だから、というだけの理由です。PHP5 だと、類似のスクリプトはいくつかあるのですが……。
「そんなの、2 分でできるよ」というひと向けに、下記の(わざとらしい)"sample.js" をどうぞ。
/***/
/**
* comment
* // comment
*/
/*@cc_on
// http://d.hatena.ne.jp/amachang/20071010/1192012056
var doc = document; // comment
eval('var document = doc'); // comment
@*/
/*@cc_on document.write('"IE!"\n'); @*/ // comment
var hoge = "/* hoge */\n";
var fuga = '"/* fuga */"\n';
var foo = "//* foo *//\n";
var bar = '"\'//* bar *//\'"\n';
document.write(hoge + fuga + foo + bar);
上記のコードを Minify すると、こうなるはずです。──そんなスクリプト、書けますか?
/*@cc_on var doc=document;eval('var document = doc');@*//*@cc_on document.write('"IE!"\n');@*/var hoge="/* hoge */\n";var fuga='"/* fuga */"\n';var foo="//* foo *//\n";var bar='"\'//* bar *//\'"\n';document.write(hoge+fuga+foo+bar);
PHPサイバーテロの技法―攻撃と防御の実際の中で「お勧めする入門書」として書かれていた、『はじめての PHP 言語プログラミング入門』を読み終わりました(後半、意識がうつらうつらしつつ)。
──まず、自分がこの本をレビューするのには 100 万光年早い(ツッコミ所)ことをお断りしておきます。
──というくらい、自分にはまだ、この本の真価は理解できない……!
本書は、他の「入門書」を熟読して、簡単な掲示板プログラムなどを動かせるようになった後──くらいでもまだまだ早いかも知れません。
すでに PHP に慣れた人が、復習のために読む──くらいがちょうどいいかも。
今回の記事は(も?──いやいや)自分では試してませんよー、伝え聞きですよー、というのを念押しつつ──。
なかなかこのブログでは移行に踏み切れませんが、MT3.34 がリリースされています。
ref.: Six Apart – Movable Type News: Movable Type 3.34日本語版の提供を開始
しかし──ダイナミック・パブリッシング周りにいくつか問題が残っているようです。
今のところ、見つかっている不具合(の中で自分が識っているもの)は簡単に修正可能です。動的生成を使っている人、これから試してみたい人は、是非とも確認ください。
PHPサイバーテロの技法―攻撃と防御の実際から、まだまだネタを引っ張ります。この本からはネタがいくらでも引き出せます。良書ですね。
ただ、あまりセキュリティ関連の情報を引用すると、この本の購読者が減るかも知れないので、抑えておきます。Web アプリケーションのセキュリティに関心がある人は PEAK XOOPS Support&Experiment – XOOPS site for my test and support を熟読しましょう。
ということで、今回は軽いネタ。
「.htaccess に一行書くだけで、ディレクトリ配下の PHP ファイルすべてに同じ PHP スクリプトを適用できる」
『PHPサイバーテロの技法──』 まずは攻撃方法を学ぶ : 亜細亜ノ蛾 で紹介した本を読んで、セキュリティの勉強中です。よくよく考えたら、このサイト上には放置してある Web アプリケーションが結構あります。MT の事ばかり情報を集めてきましたが、放置してある Web アプリケーションに脆弱性があった場合、いくらでも悪意のある攻撃を受ける可能性があります。──いままで目立った被害がないのは、単なる幸運と考えた方がいいですね。というか、現在進行形で情報を抜き取られている可能性も……。
ということで、このサイトの顔であるトップページからセキュリティ対策を施すことにしました。誰も(スパマ以外は)知らないと思いますが、このサイトの「ホームページ(入り口)」は XOOPS v2 で作られています。──まぁ、現在(数年前から)リニューアル中でたいした物は置いてませんが。
今日までトップページは XOOPS 2.0.7 で構築していました。──これって結構古いのかな、と XOOPS の日本公式サイトを見てみました。
XOOPS Cube日本サイト – Simple, Secure, Scalable
──ん? いつの間にか、XOOPS v2.x 系は「XOOPS Cube」という名称になっている? と思って XOOPS Cube日本サイト – ダウンロードを見てみると、
という名称のようです。XOOPS v2 の最新バージョンは「XOOPS 2.0.16a JP」とのこと。──「XOOPS 2.0.7 < XOOPS 2.0.16a JP」なのが微妙に違和感がありますが、「7 < 16」ということですね。かなり古いバージョンで放置していたことが判りました。さっそく対策として、XOOPS をバージョンアップすることにしました。
──まさかこんなに苦労するとは思いもよらず……。
突然何かを受信して、『PHP サイバーテロの技法──』を読み始めました。これがまた、面白い!
この本で特に面白いのは、「実際に攻撃してみましょう」というスタンスなのが楽しい。──と言っても、どこかの掲示板に悪意を持ったスクリプトを仕掛ける、というわけではなく、サンプルをダウンロードしてローカル環境で試すわけです。──もちろん、そこで得た知識で悪戯をしたくなるのも人情ですが──。
ぼくはまちちゃん! の「善意の悪戯」の数々を見て、どうやって脆弱性を見つけるのかな? と興味を持った方(それ何てオレ?)にお勧めしたいです。
【常識】MT の動的生成は Smarty を使ってる【今更】 : 亜細亜ノ蛾 に引き続き、PHP 版のダイナミックパブリッシング(動的生成)について。
動的生成に移行する場合に障害となるのは、やはりプラグインを使っている場合です。PHP に対応したプラグインを使っているの場合は、テンプレートの変更なしでもそのまま移行できます。mt_dir/php/plugins をざっくり見て、使っているプラグインの名前があれば、大丈夫でしょう(それでいいのか)。もし、PHP 非対応だった場合はテンプレートの書き直しが必要です。
──だがしかし。ちょっと落とし穴なのが、「改行設定」──いわゆるテキストフォーマットを変更するプラグインを使って記事を書いていた場合。このせいで自分は PHP 版の動的生成に移行できなかった、のをいま思い出しました。
いくつか抜け道があるので紹介します。