QUOIT Blog

【作ってみた】ブログまるコピ対策用、画像呼び出しプログラム

この記事は3年以上前の記事です。情報が古い場合がありますのでお気を付け下さい。

ブログを全文パクられたので本気で対抗してみたら – Togetterまとめ

昔っから無くならない、ブログまるコピ。
人様のモン盗むたぁふてえやろうです。

その対策になるかどうか分かりませんが、本日のお昼休みを利用してプログラム書いてみました。

今回対策したのは、「画像は自分のブログからしか呼び出せない」プログラムです。
RSSでパクられたら、この方法でブロックできるんじゃないでしょうか。

デモ
@OZPAさんに敬意を表して、ぱくたそさんよりお借りしました。

言語はPHP、サーバはApacheです。

bc.php


# Acquire Data
$img = file_get_contents(stripslashes($_GET["img"]));
if(!$img) die();

### START MAIN SCRIPT
$ref = $_SERVER["HTTP_REFERER"];
$host = $_SERVER["HTTP_HOST"];
if(preg_match(sprintf("@^http://%s/@",$host),$ref,$match)){
	if($type = outputImgHeader($img)){
		header("Content-type: ".$type);
		echo $img;
	}
}
exit();

# function for this script
function outputImgHeader($data){
    if (strncmp("\x89PNG\x0d\x0a\x1a\x0a", $data, 8) == 0) {
        // PNG
        return "image/png";
    } else if (strncmp('BM', $data, 2) == 0) {
        // BMP
        return "image/bmp";
    } else if (strncmp('GIF87a', $data, 6) == 0 || strncmp('GIF89a', $data, 6) == 0) {
        // GIF
        return "image/gif";
    } else if (strncmp("\xff\xd8", $data, 2) == 0) {
        // JPEG
        return "image/jpeg";
    } else {
        return false;
    }
}

画像フォーマットの判定には下記の記事を参考にしています。

れぶろぐ – [PHP] 画像フォーマットのファイルヘッダ

呼び出し側のHTMLでは、下記のように記述します。

bc.html

test

引数のimgは相対パスで記述してくださいまし。

最後に、格納しているimgディレクトリに.htaccessを指定します。

order deny,allow
deny from all

これで、本体のブログ以外からは画像の参照が出来なくなります。
ただ、この方法だと、画像を単体で表示することが出来なくなりますのでご注意を。

適当に書いてあるので、穴があるかと思います…
ダメじゃん的なご指摘はtwitterとかで御連絡ください。

需要がありそうでしたら、WordPressのプラグインとかにします。
(よく調べないで書いたけど、もうあるのかな?)

[追記 2014/6/10 13:00]
これだったら.htaccessだけでもいい気がしてきたので、あとでちょっと変えますね

Comments are closed.