Saya mencoba untuk menulis tautan "hot" anti hot .htaccess ...
Anda dapat menemukan banyak contoh / tutorial / generator di internet tetapi banyak dari mereka salah atau tidak lengkap (atau bahkan keduanya).
Ini adalah fitur yang saya cari:
- Harus memblokir tautan panas untuk daftar ekstensi file ketika HTTP_REFERER adalah situs asing.
- Harus mengizinkan tautan panas untuk domain saat ini (duh) tanpa melakukan harcoding di .htaccess.
- Untuk domain saat ini, domain harus bekerja di bawah http dan https.
- Untuk domain saat ini harus berfungsi dengan www dan tanpa www.
- Harus dapat menambahkan pengecualian domain ke aturan ini (seperti teman kami Google) dan domain ini harus bekerja di bawah http dan https dan dengan www atau tanpa www.
Inilah yang saya capai sejauh ini:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F]
</IfModule>
Pertanyaan saya:
- Bagaimana menghindari hardcode
mydomain.com
di .htaccess? (Akan sangat bagus untuk dapat menggunakan .htaccess ini ke semua domain saya tanpa harus memodifikasinya untuk masing-masing.) - Dalam RewriteRule saya,
gif|jpe?g|png|zipx?
apakah ini setara dengangif|jpg|jpeg|png|zip|zipx
benar? (Maaf masih baru di ekspresi reguler.) - Apakah Anda melihat sesuatu yang buruk di .htaccess saya yang tidak saya sadari?
Untuk # 1 saya tahu itu agak mungkin. Yang paling dekat yang saya temukan adalah potongan ini yang menghapus www dari URL tanpa hardcoding domain. Apakah ada cara untuk menggunakan metode ini untuk pertanyaan saya # 1?
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
Memperbarui:
Saya mengetahui solusi yang akan menyajikan gambar yang ditandai dengan air alih-alih yang biasa. Tapi saya tidak mencari solusi semacam ini. Saya ingin solusi universal (melayani 403 kesalahan) yang akan bekerja untuk semua jenis file biner (zip, exe, iso, jpg, png, gif ...).
Jawaban:
Apa pun yang Anda lakukan, Anda akan "membuang-buang" siklus CPU (untuk menentukan apakah situs pengarah (yang melakukan penautan) sah atau tidak, Anda harus melakukan beberapa pemrosesan data permintaan).
Satu-satunya hal yang dapat Anda lakukan adalah menghemat bandwidth sambil membuang siklus CPU minimum .
Ada beberapa contoh di Apache Documents yang melakukan persis seperti yang Anda inginkan. Yang ini:
tampaknya menjadi yang paling berlaku (dan tidak memerlukan berat mod_rewrite penuh).
Anda dapat menambahkan rujukan yang valid tambahan dengan arahan tambahan
SetEnvIf
danAllow
.sumber
%{HTTP_HOST}
dengan parsing kurang regex) untuk menyisipkan host URL ke dalam ruleset Anda, yang seharusnya memberi Anda domain lokal dinamis (uji ekstensif), tetapi Anda masih harus bersusah payah -kode "bagus" perujuk eksternal seperti Google (dengan perujuk, agen pengguna, IP, dll.)Bagaimana dengan menulis aturan bahwa, jika referer tidak diketahui (dilarang), cukup panggil file Php tempat Anda meneruskan gambar sebagai param, dan dalam file Php, cukup masukkan merah besar: "file ini berasal dari MYWEBSITE.COM dan tidak memiliki otorisasi resmi untuk ditampilkan di sini ".
Adapun pertanyaan Anda, buat aturan Anda mendunia. Perbaiki saya jika saya salah, tetapi jika aturannya dideklarasikan sebelum vhost apa pun, itu akan diterapkan pada semua vhost (semacam "aturan default").
Dan ide lain sederhana: cukup arahkan kembali ke file Php (di sini
filter.php
) yang akan mencari di situs web resmi dan mengembalikan file yang diperlukan jika semuanya baik-baik saja:Dalam
filter.php
hanya beban dinamis daftar vhost atau sesuatu seperti itu:sumber
Cloudflare mungkin bisa membantu Anda: http://www.cloudflare.com
Namun ini hanya berfungsi untuk gambar tetapi tampaknya itulah yang Anda cari.
Perlindungan Hotlink
Secara otomatis mengaktifkan perlindungan hotlink untuk gambar Anda untuk mencegah penautan di luar situs. Referer yang tidak di zona dan tidak kosong akan ditolak aksesnya. Ekstensi file yang didukung adalah gif, ico, jpg, jpeg, dan png.
Dilindungi: http://mydomain.com/images/pic.jpg Untuk memotong: http://mydomain.com/images/hotlink-ok/pic.jpg
sumber
pertanyaan 1:
pertanyaan 2:
pertanyaan 3
sumber
Atau gunakan CoralCDN semut biarkan hotlink rakyat ke konten hati mereka?
sumber