Sekarang ini kayaknya lagi musim photoblog apalagi dengan hadirnya instagram. Everyone is photographer these days, hahaha. Nah, suatu hari saya sedang mencari foto-foto bertema “langit malam dan bintang” di internet. Saya mendapatkan satu foto bagus tetapi sudah dipasang watermark. Wah apes nih, tau aja ni foto bagus, jadi di-watermark-in sama yang mpunya. Dari browser, saya mencoba klik kanan, “Copy Image URL” dan paste di tab baru. Ternyata gambarnya bukan di watermark secara “fisik” yang sudah nempel di gambar gitu, tapi melainkan hanya rekayasa file PHP dan bisa dibypass dan ambil gambar aslinya. Karena alesan saya kasihan, mungkin saja foto-foto doi emang diproteksi watermark biar gak dicuri hasil jerih payah jepretnya itu, saya rahasiaken website doi dan menggantinya dengan simulasi ini. Kira-kira seperti ini jika saya simulasikan…
Simulasi
Seluruh koleksi fotografinya di watermark menggunakan PHP auto-watermark yang akan mengambil path tertentu untuk dipasangkan watermarknya. Isi parameter “path” adalah kunci kita untuk mem-bypass watermark pada foto yang ingin kita curi. Inilah gambar-gambar tersebut jika disimulasikan sebagai contoh (perhatikan ada watermark yang bertuliskan “tiBandung.com” di setiap gambar):
http://inan.tibandung.com/pub/lab/watermark/watermark.php?path=a.png
http://inan.tibandung.com/pub/lab/watermark/watermark.php?path=b.png
http://inan.tibandung.com/pub/lab/watermark/watermark.php?path=c.png
http://inan.tibandung.com/pub/lab/watermark/watermark.php?path=d.png
Berikut ini source code watermark.php:
<?php $imagesource = $_GET['path']; if (!file_exists($imagesource)) die(); $filetype = strtolower(substr($imagesource,strlen($imagesource)-4,4)); if($filetype == ".png") $image = @imagecreatefrompng($imagesource); if (empty($image)) die(); $watermark = @imagecreatefrompng('watermark.png'); $imagewidth = imagesx($image); $imageheight = imagesy($image); $watermarkwidth = imagesx($watermark); $watermarkheight = imagesy($watermark); $startwidth = (($imagewidth - $watermarkwidth)/2); $startheight = (($imageheight - $watermarkheight)/2); imagecopy($image, $watermark, $startwidth, $startheight, 0, 0, $watermarkwidth, $watermarkheight); header("Content-type: image/jpeg"); imagejpeg($image); imagedestroy($image); imagedestroy($watermark); ?>
Dari source di atas, bisa diketahui bahwa $_GET[‘path’] sebagai input gambar yang akan diproses oleh autowatermarking ini. Dari situ juga dapat kita ekstrak informasi berharga dimanakah letak gambar aslinya. Katakan saja jika ada gambar ter-watermark dengan alamat URL http://xxxxxx/watermark.php?path=goblog/going_blogging.jpg, itu berarti file “going_blogging.jpg” yang di watermark, file asli tanpa watermarknya terdapat di direktori http://xxxxxx/goblog/going_blogging.jpg bukan? Yooi…
Naah, untuk simulasi kita ini, untuk mengambil gambar “d.png” pada contoh di atas misalnya, tinggal akses langsung file PNG nya yang telah kita ketahui path nya. Dengan berbekal sedikit mengerti lojik program PHP auto-watermark ini, maka alamat gambar “d.png” ada di http://inan.tibandung.com/pub/lab/watermark/d.png ‘kan?? Hehe..
http://inan.tibandung.com/pub/lab/watermark/watermark.php?path=d.png
(Di bawah ini adalah gambar “d.png” dengan proteksi Watermark)
http://inan.tibandung.com/pub/lab/watermark/d.png
(Membypass Auto-watermark: Di bawah ini adalah gambar asli “d.png” tanpa diproteksi Watermark)
Solusi
Problem ini bisa diatasi dengan cara yang cukup jitu sederhana bin tundepuin yaitu filter saja direct akses yang mengarah ke image file asli yang diproteksi. Cara filter direct access pada contoh ini menggunakan file .htaccess. Sebagai contoh berikut ini isi file .htaccess yang meretriksi direct access ke seluruh file jpg, gif, png, kecuali pada akses direct ke file “d.png”:
RewriteEngine On RewriteCond %{REQUEST_URI} !d.png$ RewriteRule \.(gif|jpg|png)$ /d.png [L]
Imbalan
Gak muluk-muluk kok.. saya cuma pengen camera DSLR Canon sebagai imbalan terima kasih 😐
mantab infonya
beneran amain nih min?
hee