Saya menggunakan wordpress untuk situs pribadi tempat pengguna mengunggah file. Saya menggunakan "Private WordPress" untuk mencegah akses ke situs jika pengguna tidak masuk.
Saya ingin melakukan hal yang sama terhadap file yang diunggah dalam folder unggahan.
Jadi, jika pengguna yang tidak masuk mereka tidak akan dapat mengakses: https://xxxxxxx.com/wp-content/uploads/2011/12/xxxxxxx.pdf jika mereka mencoba mengakses tetapi mereka tidak login maka mereka harus diarahkan ke halaman login misalnya.
Saya menemukan sebuah plugin yang disebut file pribadi tetapi terakhir kali diperbarui pada tahun 2009 dan sepertinya tidak berfungsi pada wordpress saya.
Adakah yang tahu metode apa pun? Metode hotlinking akan cukup untuk melindungi ini?
Saya juga menemukan metode ini:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^.*uploads/private/.*
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . /index.php [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Tetapi, apakah ada pengguna yang meniru cookie yang dapat melewatkan ini dengan benar? Salam
sumber
Jawaban:
Hanya memeriksa apakah ada cookie, tidak banyak perlindungan yang ketat.
Untuk mendapatkan perlindungan yang lebih kuat, Anda dapat meneruskan atau "proxy" semua permintaan ke folder yang diunggah (contoh
uploads
dalam contoh berikut) melalui skrip php:Semua permintaan untuk file yang diunggah (yang termasuk gambar dalam posting) akan pergi ke
dl-file.php
yang kemudian dapat melakukan verifikasi jika pengguna masuk atau tidak.Jika pengguna tidak masuk, formulir masuk situs Anda akan ditampilkan. Setelah pengguna masuk, ia akan diarahkan kembali ke file dan dapat mengunduhnya sekarang.
Teladan
dl-file.php
.Hal serupa dapat ditemukan di
\wp-includes\ms-files.php
instalasi wordpress Anda, tetapi itu untuk multisite dan tanpa login login dan redirect.Bergantung pada seberapa banyak lalu lintas yang Anda miliki, mungkin lebih baik untuk mengintegrasikan ini dengan server Anda, misalnya,
X-Accel-Redirect
atauX-Sendfile
header.sumber
Anda juga dapat menulis plugin menggunakan
init
hook dan get-value$_GET[ 'file' ];
. Jika pengguna memiliki nilai get ini, lompati fungsi untuk memeriksa hak akses pada file: Misalnya dengan kotak centang di Kotak Meta.fungsi get_file ()
Anda juga dapat menambahkan URL khusus untuk file melalui hook
generate_rewrite_rules
sumber
Jika Anda ingin pendekatan berbasis plugin untuk menyelesaikan masalah ini, berikut ini adalah solusi yang cukup bagus yang saya temukan (akhirnya):
https://wordpress.org/plugins/download-monitor/
/wp-content/uploads/dlm_uploads/
Ini berarti bahwa siapa pun yang tidak masuk tidak dapat mengunduh file atau melihat URL asli ke file tersebut. Jika seandainya ada orang yang tidak berwenang mengetahui URL ke file tersebut, plugin tersebut juga akan menghentikan pengguna yang meramban URL file asli dengan memblokir akses ke
/wp-content/uploads/dlm_uploads/
folder tersebut.Bonus: jika Anda melakukan ini untuk situs di mana Anda memerlukan pengguna untuk dapat login sebagai 'Anggota' saja (tetapi tidak memiliki izin WordPress seperti mengedit halaman atau menjadi Admin), instal plugin 'Anggota' https: // wordpress .org / plugins / members / , buat peran pengguna baru yang disebut 'Anggota', dan berikan kemampuan tunggal 'baca', buat Pengguna baru di WordPress, dan pastikan untuk memberi mereka peran 'Anggota'.
Jika Anda ingin melindungi konten halaman, plugin 'Anggota' menyediakan beberapa opsi, atau ada plugin lain di luar sana. Jika Anda ingin membuat tema halaman login agar Anggota terlihat lebih baik daripada formulir login default WordPress, gunakan sesuatu seperti 'Theme My Login': https://wordpress.org/plugins/theme-my-login/
sumber