Cum să restricționezi accesul la fișierele încărcate?

4 apr. 2011, 13:30:20
Vizualizări: 27.7K
Voturi: 12

Am o zonă restricționată pe un site web care poate fi accesată doar de utilizatorii autentificați. Pentru aceasta am creat un șablon de pagină cu o condiție 'current_user_can()'.

Problema mea este că documentele atașate paginilor restricționate sunt încă accesibile oricui dacă se introduce calea completă în bara de adrese a browserului.

Există vreo modalitate de a restricționa accesul la fișierele încărcate?

EDIT: Vreau să clarific, fișierele ar trebui să fie accesibile doar utilizatorilor autentificați.

0
Toate răspunsurile la întrebare 5
8

Aceasta nu este chiar o întrebare specifică WordPress - dar poți adăuga o regulă de rescriere pentru a preveni accesul decât dacă referința este din propriul domeniu.

[Actualizare]

Va trebui să faci 2 lucruri:

  1. Adaugă o regulă de rescrire (fie direct cu .htaccess sau folosind WP_rewrite (referință Codex). Scopul aici este de a refuza cererile către documentele tale care nu au domeniul tău ca referință - acest lucru oprește oamenii să introducă linkul direct în bara de adrese a browserului

  2. Învelește linkurile de descărcare într-un bloc condițional is_user_logged_in (referință Codex) - în acest fel ele vor apărea pe pagină doar dacă utilizatorul este autentificat

Un exemplu de cod este disponibil într-o întrebare similară:

4 apr. 2011 14:06:02
Comentarii

Salut anu, referitorul trebuie să fie domeniul meu + vizitatorul trebuie să fie un utilizator înregistrat și conectat. Cred că este o problemă legată de WordPress.

mike23 mike23
4 apr. 2011 15:16:03

Pare a fi o întrebare legată de htaccess pentru mine.

curtismchale curtismchale
4 apr. 2011 17:49:26

Îmi voi actualiza răspunsul

anu anu
4 apr. 2011 19:41:05

Salut anu, da, asta nu afișează fișierele dacă un utilizator nu este autentificat, dar dacă un utilizator ghicește numele fișierului? El poate totuși să acceseze fișierul! Și asta vreau să evit. Să-ți dau un exemplu, să zicem că avem un site corporate cu unele documente publice (report2011.pdf, report2010.pdf, etc.) și unele documente private (report2009.pdf, report2008.pdf). Chiar dacă documentele private nu sunt afișate pe site-ul public, cineva ar putea să ghicească ușor unele nume de fișiere (pe baza structurii celor publice) și astfel să acceseze documentele private doar tastând URL-ul în bara de adrese.

mike23 mike23
7 apr. 2011 17:35:39

Asta este ceea ce regula de rescriere (rewrite rule) previne

anu anu
7 apr. 2011 19:39:47

Va funcționa dacă nu am un domeniu ca atare... Adică accesez blogul meu prin adresa IP?

user3047 user3047
9 iun. 2011 20:25:39

Două cuvinte: falsificare referer. Soluția ta nu e decât o 'securitate prin obscuritate': Atacatorul nu poate accesa fișierul media dacă știe URL-ul complet către el. În schimb, acum trebuie să cunoască unul dintre URL-urile referer valide. Ce am câștigat în schimbul unei complexități administrative mai mari? IMHO nimic. La momentul scrierii acestui text, există "mii" de plugin-uri pentru protejarea paginilor și articolelor, dar Wordpress încă nu are o protecție utilă pentru fișierele media. Dezvoltatorii Wordpress (și ai plugin-urilor) evită acest subiect, pentru că știu care sunt consecințele.

User User
11 mar. 2012 12:09:42

Este în mare măsură o întrebare despre Wordpress, chiar dacă nu există un răspuns specific Wordpress. Suntem aproape în 2019 acum. :(

bogl bogl
13 dec. 2018 11:55:05
Arată celelalte 3 comentarii
1

Aș schimba directorul de încărcare pentru unul în afara folderului www. Apoi "trimiți" fișierul folosind o pagină "proxy". Pagina proxy verifică dacă utilizatorul este autentificat, apoi trimite fișierul folosind header()/readfile().

27 sept. 2011 02:03:28
Comentarii

Știu că este veche, dar poți să faci o demonstrație?

klewis klewis
28 mar. 2024 17:16:58
1

Puteți folosi protecția împotriva hot-linking-ului folosind serverul web de alegere.

Consultați acest răspuns de pe StackOverflow:
https://stackoverflow.com/questions/1775582/apache-hotlink-protection-for-download-folder.

Aceasta utilizează fișierul .htaccess din Apache2.

În esență, se interzice descărcarea, dacă utilizatorul nu vine de pe o pagină a blogului dvs.!

9 iun. 2011 00:36:14
Comentarii

Nu am experiență cu chestiile astea... ai vreo idee ce ar trebui să pun în fișierul meu .htaccess?

user3047 user3047
9 iun. 2011 01:05:31
0

Aceasta soluție a funcționat pentru mine. Poți împiedica accesul la folderul wp-content/upload (excluzând utilizatorii autentificați) prin crearea unui fișier .htaccess și adăugarea următoarei reguli de rescriere:

# Dezactivează navigarea în directoare
Options -Indexes

# Redirecționează utilizatorii neautentificați către pagina de login
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule \.(pdf|jpg)$ /wp-login.php [L,R=302]
21 sept. 2023 09:03:49
2

Plugin-ul pentru utilizatorii înregistrați are rolul de a se asigura că un vizitator este autentificat înainte de a vizualiza conținutul paginii tale. Accesul la fișierele tale prin intermediul unui browser este controlat de server.

Ar trebui să încerci plugin-ul WP AskApache Password Protect - http://wordpress.org/extend/plugins/askapache-password-protect/

Desigur, acest lucru va funcționa doar dacă blogul tău WordPress este găzduit pe un server Apache.

9 iun. 2011 00:45:53
Comentarii

Nu sunt sigur cum să folosesc acest plugin. Aveți idei despre ce opțiuni ar trebui să aleg?

user3047 user3047
9 iun. 2011 01:04:53

Plugin-ul nu mai este disponibil. A fost închis din cauza unei probleme de securitate.

JakeParis JakeParis
16 iul. 2024 23:52:31