Archive for the ‘WordPress’ Category

WordPress 不正アクセス処理追加

木曜日, 9月 26th, 2019

WordPress不正アクセス処理追加

wordpressは毎日不正アクセスがあります。
パスの中や、クエリー(?より後ろの部分)に()で記号を入れたり、\\(円マーク)でコマンドを入れたり、世界中のハッカー達のターゲットになっているようです。
今回は「/」が沢山入っていて、カウントのページがうまく表示できなくなってしまいました。
自分のページは「?p=**」のURLなので、「/」は必要ありません。全てカウントしないことにしました。

アクセスカウント用の「abc.php」に以下の2行を追加します。

$ari = strpos_s($pname,"/",0);
if ($ari>=0) $pname = 'blog_/';

wordpressからabc.phpを呼び出すのには、
テーマの編集
メインインデックスのテンプレート (index.php)
上の方のスクリプトエリアの「get_header()」の上に「abc.php」の場所を記述します。

include __DIR__ . '/../***/***/abc.php' ;
get_header(); 

これで「/」の入ったアクセスはまとめて「blog_/」として、合計だけDBに書き込まれます。

WordPress – 海外からのアクセスを遮断する – PHP

水曜日, 11月 25th, 2015

海外からの不明アクセスが減る (11/25)

下記の方法で、廃棄リダイレクトを続けていましたが、最初は相変わらずのアクセスがありました。しかし最近はめっきり減り、通常のアクセスになってきました。効果があったものと思います。
それとは別にGoogle等は、ロボット以外でもアナリティス等もアクセスしてきますから、正常なクローラーとして扱う必要があります。今後これを加えてゆく予定です。

ブログにスパム? 海外からアクセス

it-azusaのトップに時々多量のアクセスがあります。ロボットでもなく、通常のアクセスでもないようです。アクセスログを調べていますが、米国だったり、他の国だったり、日本ではないようです。
リファラスパムという可能性もあるようです。リファラスパムというのは、このようにアクセス解析をおこなっているものが、リファラを辿って送信先のページをクリックするのを狙っているようです。最悪の場合はウィルスを拾うことにもなりかねないようです。
いずれにしろ、海外からのアクセスはロボットを除いては必要ないので、これをシャットアウトしようと思います。

前回の「IPアドレスの計算方法」で海外かどうかの判断ができるようになりました。
海外からのアクセスを制限する方法は、.htaccessファイルでおこなう方法や、Googleアナリティクスのフィルタ等がいくつか紹介されています。これらはプログラムの知識なしにできるので便利だと思います。ただ、.htaccessでおこなう方法は前回作成したipアドレスのデータベースが書かれているファイルをダウンロードするらしく、.htaccessファイルが少し重苦しい感じを受けます。処理そのものは多分高速だと思いますが。

PHPコードで記述

ここでは、自作のPHPプログラムでアクセスの制限をしようと思います。
そこで問題になるのは、WordPressのどこにPHPコードを書けばいいかということです。最初の頃はWordPressの仕組みがよく分からないので、ウィジェットにPHPコードを書けるプラグイン「PHP Code Widget」を使用していました。しかしあくまでコンテンツ用のせいなのか、肝心のheader()関数はエラーになり、受け付けてくれませんでした。
その後調べてみると、WordPressには「ショートコード」というPHPコードを呼び出す方法が用意されていることが分かりました。また同時に、テーマの編集で、page.phpやfunction.phpを直接編集するのが普通の方法ということも分かりました。逆にプラグインでPHPコードを書くのは、セキュリティホールになり易いく、避けた方がいいらしいことも。

テーマの編集

トップページなので、テーマの編集でindex.phpを編集します。
index.phpの先頭、

<?php
/**
 * @package WordPress
 * @subpackage My_Theme
 */
get_header(); 
?>

を、

<?php
/**
 * @package WordPress
 * @subpackage My_Theme
 */
include __DIR__ . /**/mycode.php' ;
get_header(); 
?>

に変更する。
mycode.phpに制限コードを記述しておきます。/**/はmycode.phpの相対ディレクトリです。自動インストールのWordPressでは、仮想ディレクトリになるので、少し面倒かもしれません。
投稿記事のページはsingle.phpを同様に編集します。

mycode.phpでは、

if ($ipkaigai){
	$nurl = "http://"  ;
	$ltxt = "Location: " . $nurl;
	header($ltxt,TRUE,301);
	exit;
}

等のコードを書きます。ここでは存在しないURLに永久リダイレクトしています。送信先がブラウザなら、DNSか何らかのエラーを出すと思います。行儀の悪いアクセスにはこのくらいの返事でいいでしょう。