チラ裏
NP_EzCommentが無くなっていたので、PHPを触ったこと無いとある名無しがソースを読む。
ソースは
ヌークレウス配布所@フォーラム>http://waterimps.s106.xrea.com/forum/viewtopic.php?t=7?のNP_EzComment0.31utf-8.zip。
環境を整える
utf8を読めるエディタじゃないと文字化けする。
debian使いなのでemacsを使うことにする。
emacsにはphpに色づけしてくれる機能を追加できるので追加しておいた。
これでソースがみやすい。
debian使いなのでemacsを使うことにする。
emacsにはphpに色づけしてくれる機能を追加できるので追加しておいた。
これでソースがみやすい。
何からやればいいのかもわからない
セキュアなプラグインの作り方のPHPとMySQLのセキュリティ対策−覚書>http://nucleus.mz-style.com/?を読む。
風邪引いて頭いたいので寝る。今日はここまで。
スーパーグローバル変数を探せ
喉が痛くて目が覚めてしまった。
junさんによると
>1. 「$_」で検索をかけて、外部から受け取ったデータ(変数)を確認し、その後どのように使われているかを追跡する。ソースのメンテナンスのことを考え、外部から受け取ったデータ(変数)については、直後にエスケープすることを心がける。
>2. データベース利用時にWHERE節などにおいて変数を直接使う場合や、HTML表示時に<a href></a>や<form></form>内などにおいて変数を直接使う場合、それぞれの変数がエスケープされているかどうかを確認。
>1. 「$_」で検索をかけて、外部から受け取ったデータ(変数)を確認し、その後どのように使われているかを追跡する。ソースのメンテナンスのことを考え、外部から受け取ったデータ(変数)については、直後にエスケープすることを心がける。
>2. データベース利用時にWHERE節などにおいて変数を直接使う場合や、HTML表示時に<a href></a>や<form></form>内などにおいて変数を直接使う場合、それぞれの変数がエスケープされているかどうかを確認。
エ、2個だけ?( ゚д゚ )
こっちみんなwwww
こっちみんなwwww
ソースを「$_」で検索してみる。
…ない。一つの項目が終わってしまったようだ。
…ない。一つの項目が終わってしまったようだ。
結論:NP_Ezcommentにはスーパーグローバル変数を使っていない。
スーパーグローバル変数がなんなのかわからないまま2番の確認へとすすむ。
スーパーグローバル変数がなんなのかわからないまま2番の確認へとすすむ。
ここでいったんセーブ。
フォームとか使ってるのにスーパーグローバル変数が無いですよ?
スーパーグローバル変数とは>http://www.google.co.jp/search?q=%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E5%A4%89%E6%95%B0%E3%81%A8%E3%81%AF?
上から適等に3つ位見たが、フォームで使うと便利だと言うような事が書いてある。
まぁなくてもいけるんだろう。
上から適等に3つ位見たが、フォームで使うと便利だと言うような事が書いてある。
まぁなくてもいけるんだろう。
次。
where節を探せ
>2. データベース利用時にWHERE節などにおいて変数を直接使う場合や、HTML表示時に<a href></a>や<form></form>内などにおいて変数を直接使う場合、それぞれの変数がエスケープされているかどうかを確認。
なのでソースを「where」で検索。2個あった。149行と160行。
なのでソースを「where」で検索。2個あった。149行と160行。
149行目
>$q = 'SELECT COUNT(*) as result FROM '.sql_table('comment').' as c WHERE c.citem=' . intval($itemid);
>$q = 'SELECT COUNT(*) as result FROM '.sql_table('comment').' as c WHERE c.citem=' . intval($itemid);
160行目(付近)
>$query = 'SELECT c.cnumber, c.cbody, c.cuser, c.cmember'
> . ' FROM '.sql_table('comment').' as c'
> . ' WHERE c.citem=' . intval($itemid)
> . ' ORDER BY c.ctime ' . $order;
>$query = 'SELECT c.cnumber, c.cbody, c.cuser, c.cmember'
> . ' FROM '.sql_table('comment').' as c'
> . ' WHERE c.citem=' . intval($itemid)
> . ' ORDER BY c.ctime ' . $order;
こりゃSQL文だな。
149行目は
sql_table('comment')のcitemと$itemidの等しいものを数える
…かな。よくわからんが。
149行目は
sql_table('comment')のcitemと$itemidの等しいものを数える
…かな。よくわからんが。
sql_table>http://www.google.co.jp/search?q=sql_table?でググると、sql_tableはNucleus独自の変数らしい。さらにググる。
NucleusプラグインAPI>http://japan.nucleuscms.org/documentation/devdocs/plugins.html#tables?。これだな。
commentテーブルを使いますよ宣言でいいのかな。
NucleusプラグインAPI>http://japan.nucleuscms.org/documentation/devdocs/plugins.html#tables?。これだな。
commentテーブルを使いますよ宣言でいいのかな。
149行目は
コメントテーブルのcitemと$itemidの等しいものを数える
ということになった。
コメントテーブルのcitemと$itemidの等しいものを数える
ということになった。
頭いたいので寝る。
$itemidをやっつける
今途中まで調べて書いていたのだが、操作ミスで全部消えた。
ちょっと泣いた。これからはmozexと言うのを使って
エディタでかいてブラウザにうpすることにする。
気を取り直してもう一度かく。
ちょっと泣いた。これからはmozexと言うのを使って
エディタでかいてブラウザにうpすることにする。
気を取り直してもう一度かく。
$itemidとは何ぞや。
ググ>http://www.google.co.jp/search?q=$itemid?ってもよくわからん。
NucleusプラグインAPI>http://japan.nucleuscms.org/documentation/devdocs/plugins.html?見ても沢山ありすぎてよくわからん。
なんだこれ。
ググ>http://www.google.co.jp/search?q=$itemid?ってもよくわからん。
NucleusプラグインAPI>http://japan.nucleuscms.org/documentation/devdocs/plugins.html?見ても沢山ありすぎてよくわからん。
なんだこれ。
ここで$itemidが関数showCommentの仮引数と気づいた俺テラ頭ヨスwwww
…おかしい、さっき書いた文だともっと面白いこと書いていたはずなんだが…
ほ、ほんとなんだからね!!11111
…おかしい、さっき書いた文だともっと面白いこと書いていたはずなんだが…
ほ、ほんとなんだからね!!11111
147行目はこれだ
>function showComment($limit,$itemid,$itemuri,$trimwidth,$sort){
じゃあ、showCommentはどこから来るのか。ソースを検索する。
>function showComment($limit,$itemid,$itemuri,$trimwidth,$sort){
じゃあ、showCommentはどこから来るのか。ソースを検索する。
83行目にいた。
>$this->showComment($limit,$itemid,$itemuri,$trimwidth,$sort);
ここの$itemidはどこから来るのか。ソースを検索する
>$this->showComment($limit,$itemid,$itemuri,$trimwidth,$sort);
ここの$itemidはどこから来るのか。ソースを検索する
61行目にいた。
>$itemid = $item->itemid;
この「->」はなんだろう。
ググった>http://www.google.co.jp/search?q=-%3E?がでてこない。記号は無視されるんだっけ。
矢印の意味がわからん。めし。
>$itemid = $item->itemid;
この「->」はなんだろう。
ググった>http://www.google.co.jp/search?q=-%3E?がでてこない。記号は無視されるんだっけ。
矢印の意味がわからん。めし。
ーーーー
チャーハンうめぇ(->と&とdoTemplateVar)
今日はチャーハンを食べた。
どうも->はA->Bで
Aの中の人のBを使うぉうぇっうぇwwww
という意味のようだ。無理してヴィッパー語を使う俺。
もうあなたも若くないんだから…
Aの中の人のBを使うぉうぇっうぇwwww
という意味のようだ。無理してヴィッパー語を使う俺。
もうあなたも若くないんだから…
つまり$itemid = $item -> itemidは
$itemの中の人のitemidを$itemidとすると言う事だな。ややこしい…
$itemの中の人のitemidを$itemidとすると言う事だな。ややこしい…
じゃあ$itemの外の人はなんだと。当然思うわけだ。
ソースを見ると27行目の
>function doTemplateVar(&$item, $type='', $limit=10){
から来てるんだな。
&ってなんだ!
ソースを見ると27行目の
>function doTemplateVar(&$item, $type='', $limit=10){
から来てるんだな。
&ってなんだ!
&はまぁ後回しにしてやろう。
当然doTemplateVarを呼び出している奴がどこかにいるはずだ。
ソースを検索する。…いない。
一方ロシアはグーグル>http://www.google.co.jp/search?q=doTemplateVar?を使った。
また NucleusプラグインAPI>http://japan.nucleuscms.org/documentation/devdocs/plugins.html#templatevars?か!
しかしこれは理解不能。2chのNucleusスレで聞くとしよう。
当然doTemplateVarを呼び出している奴がどこかにいるはずだ。
ソースを検索する。…いない。
一方ロシアはグーグル>http://www.google.co.jp/search?q=doTemplateVar?を使った。
また NucleusプラグインAPI>http://japan.nucleuscms.org/documentation/devdocs/plugins.html#templatevars?か!
しかしこれは理解不能。2chのNucleusスレで聞くとしよう。
「&」は参照する記号だと理解した。
つまりNucleus本体から何か参照するものを渡されるんだろう。
それが外の人で、その中の人のitemidを$itemidに代入していじっちゃうよウヒヒって事だな。
今日はここまでにしておいてやろう。
つまりNucleus本体から何か参照するものを渡されるんだろう。
それが外の人で、その中の人のitemidを$itemidに代入していじっちゃうよウヒヒって事だな。
今日はここまでにしておいてやろう。
ぎゃー消えやがった!
慌てず騒がずエディタから復活。
慌てず騒がずエディタから復活。
コメントが付いてた。
7743サンクス。ちょうどそこまで書いた。
理解が間違っていなかったみたいで安心した。
ちょっと2chでdoTemplateVar聞いてくる。
|ミサッ
7743サンクス。ちょうどそこまで書いた。
理解が間違っていなかったみたいで安心した。
ちょっと2chでdoTemplateVar聞いてくる。
|ミサッ
doTempleteVarの中の人
しばらく間があいたが再開。風邪は大分良くなった。
日ハム優勝おめでとう。
日ハム優勝おめでとう。
doTemplateVarを2chで聞いたところ
>582 :Trackback(774):2006/10/26(木) 01:59:48 ID:M8HayRww
> >>580
> get_object_varsとかで全部リスト出来なかったっけ?と言ってみるてst
>
>583 :Trackback(774):2006/10/26(木) 05:41:39 ID:T6vdEGv0
> >>580
> nucleusl/libl/BLOG.php
> にある
> BLOG::getSqlBlog
> BLOG::showUsingQuery
> を読みましょう
>582 :Trackback(774):2006/10/26(木) 01:59:48 ID:M8HayRww
> >>580
> get_object_varsとかで全部リスト出来なかったっけ?と言ってみるてst
>
>583 :Trackback(774):2006/10/26(木) 05:41:39 ID:T6vdEGv0
> >>580
> nucleusl/libl/BLOG.php
> にある
> BLOG::getSqlBlog
> BLOG::showUsingQuery
> を読みましょう
nucleus/lib/BLOG.phpの中を見てみると…
> function getSqlBlog($extraQuery, $mode = '')
> {
> if ($mode == '')
> $query = 'SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed';
...
> $query .= ' FROM '.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c'
おkk
itemidは今のアイテムのinumberっぽい。間違ってたら教えてくれぃ。
これで一通りたどれたのかな。
> function getSqlBlog($extraQuery, $mode = '')
> {
> if ($mode == '')
> $query = 'SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed';
...
> $query .= ' FROM '.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c'
おkk
itemidは今のアイテムのinumberっぽい。間違ってたら教えてくれぃ。
これで一通りたどれたのかな。
どこで対策するのがいいのか
変数を取ってきたとき
変数を使うとき
どっちで対策するといいんだ?
変数を使うとき
どっちで対策するといいんだ?
また2chで質問してみる。
- なんか おもろそうな展開だな(笑) 続きに期待! -- toma (2006-10-24 22:46:28)
- チラ裏だから。160行目(付近)の引用がうまくいかないですょ? -- 774 (2006-10-25 00:02:06)
- 61行目の「$item->itemid」の「$item」は27行目のかっこの中の「$item」 -- 7743 (2006-10-25 22:02:50)
- この意味は、「$item」の中から「itemid」を取り出す -- 7743 (2006-10-25 22:04:20)
- ホントはもっとややこしい説明があるはず ^^; -- 7743 (2006-10-25 22:04:59)
- 7743サンクス -- 774 (2006-10-25 22:50:33)@wikiへ