<<  2023.11 >>
SMTWTFS
   1234
567891011
12131415161718
19202122232425
2627282930  
 
リンク
その他
  • RSS2.0
  • Credit

  • SEO
    loading

    プライバシーポリシー

カテゴリー » ソフトウェア » ppblog October 30, 2007

ppBlog にセキュリティホール

http://p2b.jp/index.php?UID=1193698437

このサイトを構成しているppBlogにXSS(クロスサイトスクリプティング)の脆弱性が発見されたらしい。至急アップデートファイルを適用せよとのこと。フォーラムを見ると既に進入されてファイルを書き換えられちゃった人もいるみたい。

私が使っている古いバージョンも(少しverが違うけど)修正してくれて助かった。でも細かい変更を色々しちゃってるので、そのまま上書きはできないんだよなあ。差分を取って自分で編集しないと… 面倒だな。

このppBlog、どれぐらい使われているのかとブログの上部にある語句 “ボックス表示 ⇔ リスト表示 次の 件” で検索してみた。結構沢山の利用者がいるのね。PHPだけで動く(MySQLなどのデータベースが不要)なのが受けているのか
10:40 pm

上の記事に対するコメントです

1. kuma  2007/11/04 19:32
カスタマイズやりまくってると面倒すぎますよね...
困ったな...忘れているし...

コメントする |

カテゴリー » ソフトウェア » ppblog September 02, 2007

ppBlog コメントスパム対策に四苦八苦

なんか30ぐらいコメントスパムがどばーーと来襲。これ書いている間にもいろんなIPアドレスで同じようなスパムが寄せられております。これまでは日本語が入ってない投稿を拒否するだけでほとんど十分だったんだけど、今日来たのはいつもとひと味違う。文末に該当記事の一部を挿入して送ってくるので弾くことができない。

ということで鬱陶しいので何とかする。パッと思い付いたのは一度に投稿できる「http」の数を制限する方法。コメントスパムには大量のURLが書かれている事が多い。他にもないかなと調べてみると、リファラで自サイト以外からの書き込みを拒否するやり方がメジャーらしい。偽装されたら意味無いだろうけど。

このサイトは ppBlog1.4.3 で構成されています。その modules/comment.php の適当な場所にこんなコードを書いてみた。
///// コメントスパム対策 //////
if(!ADMIN){
//httpの数が多いと弾く
if(substr_count(strtolower($c_com), 'http') >= 4){
  print "「http」が4つ以上ある文章は書き込めません";
  exit;
}
//携帯はチェックしない
if(!preg_match('/docomo|up\.browser|j\-phone|softbank|vodafone|pdxgw|astel|l\-mode/i',$_SERVER['HTTP_USER_AGENT'])){
  //記事のURL以外からは拒否
  if(!stristr($_SERVER['HTTP_REFERER'], ROOT_PATH.'index.php?UID='.$UID)){
    print "どこからコメントしてるの?";
    exit;
  }
  // ブラウザの言語設定で、日本語が含まれていないと拒否
  // 入力内容に日本語が入っていても、弾く
  if(!stristr($_SERVER["HTTP_ACCEPT_LANGUAGE"], "ja")){
    print "鎖国してます";
    exit;
  }
}}
おぉ、スパムを弾くことに成功。PHP初心者向けプログラミングサイトを見て頑張った甲斐があった。最新の v1.6 系ではこういうの無くても大丈夫なのかな?

しばらくこれで様子を見る。
11:30 pm

上の記事に対するコメントです

1. くま (Website)  2007/09/07 20:06
これいいですね!何行目あたりに入れるとよいのかな?
教えていただけるとありがたいです。

2. Owner CommentSawa  2007/09/07 22:24
おひさです。
くまさんは 1.5RC でバージョンが違うため正確には言えませんが、modules/comment.php の半分より下ぐらいにある

switch ($mode){
case 'cast_comment' :

の真下に書けば良いと思います。
ただ、1.5.3以前にはコメントスパムを弾いてもコメントが1個あると表示されるバグがあって、イヤンな感じだったりします。

コメントする |

カテゴリー » ソフトウェア » ppblog January 31, 2007

このサイトの上部に Warning: date() expects parameter 2 to be long,

隠すのはよくない!、ってことでPHPエラーを表示するようにしたら、不定期に
「 Warning: date() expects parameter 2 to be long, string given in utils.php on line 594 」
と表示されて嫌な感じ。なぜなにナゼデルってことで、このサイトを構成している ppBlog-1.4.3 の utils.php の594行目、すなわち警告の箇所を見ると
$isSameDatePrev = (date('Ymd', $id)==date('Ymd',$nxt_id)) ? true : false;
むうぅ、これをどうすればいいのか見当も付かない。検索サイトで調べると、
http://forums.eqdkp.com/index.php?showtopic=7394
に解決法らしき情報を発見。しかし、私の知識ではどうすればいいのか分からん。仕方ないので初心者向けのphpプログラミングサイトを見たりしてお勉強。そして
$isSameDateNext = (date('Ymd', strtotime($id))==date('Ymd',strtotime($nxt_id))) ? true : false;
としてみた。なんか上手くいったような気がする。駄目だった。エラーでまくり

どうやら php5 で動くと上記の警告が出るみたい。今現在このサーバは php のバージョンが 4.4.4 だけでなく、実験的に 5.2.0 も動いていて、どちらで処理されるかはランダムだったりする。

≪追記・解決しました≫
下のコメント欄参照。ありがとうです。
09:33 pm

上の記事に対するコメントです

1. makihara  2007/09/26 15:32
php5の場合date関数でパラメータ(上記の場合$nxt_idか$id)が存在しない、もしくは数値で無い場合エラーになるみたいです。
自分のサイトでは
if(!$id){$id=0;)
if(!$nxt_id){$nxt_id=0;)
の様にしたところエラーは出なくなりました。

2. makihara  2007/09/26 16:02
if(!$id){$id=0;)
if(!$nxt_id){$nxt_id=0;)

if(!$id){$id=0;}
if(!$nxt_id){$nxt_id=0;}
の間違いでした。

3. Owner CommentSawa  2007/09/26 19:07
ありがとうございます。
error_reporting(E_ALL ^ E_NOTICE);
の状態でも Warning が出なくなりました。
0を代入しておいても普通に動くようですし、嬉しいです。

4. yamazon (Website)  2010/04/12 20:27
はじめまして。
expects parameter というエラーが出て調べていました。
参考になりました!ありがとうござました!

5. Owner CommentSawa  2010/04/12 22:29
こんにちは。
この記事は全くPHPを知らない時に書いた物で、今見ると恥ずかしいです。

結局のところ、dateの中身が空だったりすると文句を言われるので

(!empty($i) && date('Ymd', $i)
とかでお茶を濁せば、大抵の場合うまくいくようです

コメントする |

カテゴリー » ソフトウェア » ppblog January 15, 2007

トラックバックスパムを劇的に減らす方法 [たつをの ChangeLog]

http://nais.to/~yto/clog/2006-07-14-1.html

英数字を無効すれば大丈夫だと思っていたら、中国の www.sunding.com.cn から TrackBack Spam がどばーっと来て嫌な感じ。何かいい手はないかと調べると、Trackback Auto-Discovery を消せばマシになるとのこと。Trackback Auto-Discovery については clmemo@akaのAutodiscoveryとは何ぞやに分かりやすい記事がありました。

このサイトの ppBlog-1.4.3 の場合、utils.php の「function put_RDF」に
<!--
<rdf:RDF xmlns:rdf="...#"
xmlns:dc="..."
xmlns:trackback="...">
<rdf:Description
rdf:about="'.ROOT_PATH.$_self.'?UID='.$uid.'"
trackback:ping="'.ROOT_PATH.'trackback.php?TBID='.$uid.'"
dc:identifier="'.ROOT_PATH.$_self.'?UID='.$uid.'"
dc:title="'.str_replace(array_keys($rep),array_values($rep),$title).'"
dc:subject="'.str_replace(array_keys($rep),array_values($rep),$category).'"
dc:description="'.$body.'"
dc:creator="'.$author.'"
dc:date="'.date('D, d M Y H:i:s+09:00', $uid).'" />
</rdf:RDF>
-->
という記述があるので消してみた。ってこれ…トラックバックURLが「trackback:ping=... trackback.php?TBID=**********」になってるやんか(TBIDではなくUIDが正しい・昔のバージョンの名残り?)。なかなかいいバグでございます。最新の ppBlog1.5.4 では直っちょるな。何にせよサーバの負荷は減るだろうから消しておく。
01:05 am | コメントする |

カテゴリー » ソフトウェア » ppblog July 19, 2006

ppBlog 1.5.1

ppBlog1.5.1 リリース
http://p2b.jp/index.php?UID=1152886966

ppBlog1.4系〜1.5RC1系からの移行について
http://p2b.jp/index.php?UID=1153003130

現時点でのlib.jsほか動画ファイル関連
http://p2b.jp/index.php?UID=1153063960

このサイトを構成しているppBlogの安定版がリリース。まだ不都合があるようですな。
だいぶ格好良くなっちょります。
08:22 am | コメントする |

累計:54261、今日:612、昨日:872
Created in 0.0142 sec.