【作ってみた】ブログまるコピ対策用、画像呼び出しプログラム
この記事は7年以上前の記事です。情報が古い場合がありますのでお気を付け下さい。
昔っから無くならない、ブログまるコピ。
人様のモン盗むたぁふてえやろうです。
その対策になるかどうか分かりませんが、本日のお昼休みを利用してプログラム書いてみました。
今回対策したのは、「画像は自分のブログからしか呼び出せない」プログラムです。
RSSでパクられたら、この方法でブロックできるんじゃないでしょうか。
言語は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; } }
画像フォーマットの判定には下記の記事を参考にしています。
呼び出し側のHTMLでは、下記のように記述します。
bc.html
<img src="bc.php?img=img/test.jpg" alt="test" />
引数のimgは相対パスで記述してくださいまし。
最後に、格納しているimgディレクトリに.htaccessを指定します。
order deny,allow deny from all
これで、本体のブログ以外からは画像の参照が出来なくなります。
ただ、この方法だと、画像を単体で表示することが出来なくなりますのでご注意を。
適当に書いてあるので、穴があるかと思います…
ダメじゃん的なご指摘はtwitterとかで御連絡ください。
需要がありそうでしたら、WordPressのプラグインとかにします。
(よく調べないで書いたけど、もうあるのかな?)
[追記 2014/6/10 13:00]
これだったら.htaccessだけでもいい気がしてきたので、あとでちょっと変えますね