噂以上だな。
(ノ・・)ン。。。。。。(((●コロコロッ
nucleusではスタンダード(だと思われる)のアクセス解析に、
NP_Slimstatというプラグインがある。
SlimStatというアクセス解析ツールのブリッジなのだが、
あまりにも役に立たなくてホトホト困っていた。
・・・NP_Analyzeハドウダロウ(・ω・)
と思い立って、
さっそく使ってみると。
こっちの方が断然良い。
UIもちゃんとしているし、
サイト毎に集計できる。
ただ、このプラグイン・・・公開終了している。
2006年Q2、3ぐらいに勃発したプラグインセキュリティ騒動。
そのころnucleusのヌの時も知らなかったので、
経緯、顛末ともによく知らない。
結果として作者は公開を停止しサイトを閉鎖、行方をくらました。
・・・らしい。
けど、他に良いのが無く、
NP_Analyzeを使いたいので、
ちょっと手を加えてみることにした。
ただ、このときはSQLインジェクションを回避すればなんとか使えるだろうと思っていた。
[More:]
ソースを開くと、
確かにうぁーだった。
一言で言うとパルプンテかな。
ソースのファイルサイズが61kBもあるので規模は覚悟していたが、
単なるスパゲッティ。
データベース知識もほとんどないっぽく、
プライマリキーのないテーブルがほとんどで、
ERが書けないのはデフォルト。
SQLは異常に長く、なにをやっているのかさっぱりわからない。
CREATE TEMPORARY TABLEも大量にみつかり。
なかにはTRUNCATEとか混じってるし。
こりゃ重そうだな。。。
仕様そのものにもかなり問題ありだな。
event_PreSkinParseというテンプレートを処理するタイミングでフックされるメソッドがあるのだが、
ここで膨大な処理をしている。
CREATE TEMPORARY TABLE9回
COUNT関数 22回
TRUNCATE 1回
OPTIMIZE 1回
SUM関数 1回
・・・(゜Д゜)
多分体感するぐらい遅いと思う。
トップページ表示に400クエリという唖然とするものを過去話として聞いたことがあるが、
これはそれに勝ると劣らない。
OPTIMIZEを通常のPVで使うかよ。
table lockしちゃうじゃん。
通常のアクセス解析なら、
このあたりはimgやscriptタグを出力しておき、
二次的にアクセスを受け付けて処理するところだろうな。
preをpostにすればとも思ったが、
基本的にPHP内であることには変わりないので、
フォークでもしない限り外すことになる。
こりゃ・・・使えねーな。
_〆(。。)カキカキ…
セキュリティ騒動の中心にあったSQLインジェクションだが、
ほぼすべてのSQLにインジェクションは可能っぽい。
これを全部エスケープしたら取りあえず動きそうだが。
そういえば、nucleusはエスケープ処理をどこでやっているんだろうか。
普通DBを使うアプリケーションを作る時は、
SQLを処理する機構が何処かに存在する。
nucleusにもあると思うのだが。
「mysql_real_escape_string」で検索してみる。
0件。
(・ω・)アリ?
「mysql_escape_string」で検索してみる。
0件。
(・ω・)オヤ?
「escape」で検索してみる。
0件。
(・ω・)・・・?
「quote」で検索してみる。
magic_quotes_gpcばっかり。
... o_ _)oパタ
全然無いってどういうこと?
エスケープしてないのかな。そんなはず。。。
「INSERT」で検索してみる。
いろいろでてきたぞ、ハテどんな処理を。。。
!!!!!!!
addslashesか!
そうか。
そう言うことね。
そりゃアンセキュアなプラグインが大量に出来ても仕方がないかもしれん。
モバイル用とか言ってSJISを使う人は変換系処理漏れの無いように。
_〆(。。)ペチペチ…
一通り整理できたところで打ち直し開始。
(/_・)/ッテムリー
フルスクラッチ確定ですよ。
この人(チームかな?)の作ったプラグインには
「非常に多機能な」という謳い文句が多い。
しかし、どれも同じような造りになっていることだろう。
他のアクセス解析を素直に使って、
ブリッジプラグインでも書こ。