Zablokuj bezpośredni dostęp do pliku przez http, ale Zezwól na dostęp do skryptu php

Ładuję moje pliki (pdf, doc, flv itp.) do bufora i podaję je moim użytkownikom za pomocą skryptu. Mój skrypt musi mieć dostęp do pliku, ale nie zezwalać na bezpośredni dostęp do niego. Jaki jest najlepszy sposób, aby to osiągnąć? Czy powinienem zrobić coś z moimi uprawnieniami lub zablokować katalog z .htaccess?

Author: Brandon G, 2010-04-21

7 answers

Najbezpieczniejszym sposobem jest umieszczenie Plików, które chcesz zachować dla siebie poza katalogiem głównym, jak zasugerował Damien. Działa to, ponieważ serwer sieci Web przestrzega lokalnych uprawnień systemu plików, a nie własnych uprawnień.

Istnieje jednak wiele firm hostingowych, które dają dostęp tylko do katalogu głównego. Aby nadal zapobiegać żądaniom HTTP do plików, umieść je w katalogu samodzielnie za pomocą.plik htaccess blokujący całą komunikację. Na przykład,

Order deny,allow
Deny from all

Twój serwer WWW, a zatem język po stronie serwera, nadal będzie mógł je odczytać, ponieważ lokalne uprawnienia katalogu pozwalają serwerowi www na odczyt i wykonanie plików.

 98
Author: Sam Bisbee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-15 11:35:55

W ten sposób uniemożliwiłem bezpośredni dostęp z adresu URL do moich plików ini. Wklej poniższy kod w pliku .htaccess w katalogu głównym. (nie ma potrzeby tworzenia dodatkowego folderu)

<Files ~ "\.ini$">
  Order allow,deny
  Deny from all
</Files>

Mój plik settings.ini znajduje się w katalogu głównym i bez tego kodu jest dostępny www.mydomain.com/settings.ini

 35
Author: Aamir Mahmood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-21 07:13:11

W httpd.conf, aby zablokować dostęp przeglądarki i wget do plików dołączanych, zwłaszcza do db.inc lub config.inc . Uwaga nie można łączyć typów plików w dyrektywie, zamiast tego tworzyć wiele dyrektyw plików.

<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>

Aby przetestować konfigurację przed ponownym uruchomieniem apache

service httpd configtest

Then (graceful restart)

service httpd graceful
 3
Author: zzapper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-12 12:23:01

Czy pliki znajdują się na tym samym serwerze co skrypt PHP? Jeśli tak, po prostu trzymaj pliki z dala od katalogu głównego sieci i upewnij się, że skrypt PHP ma uprawnienia do odczytu wszędzie tam, gdzie są przechowywane.

 2
Author: Damien Wilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-21 00:07:16

Jeśli masz dostęp do swojego httpd.w związku z tym, że nie jesteśmy w stanie zrealizować zamówienia, nie będziemy w stanie zrealizować zamówienia w terminie 14 dni od daty otrzymania zamówienia. Czyli (na przykład):

ServerName YOURSERVERNAMEHERE
<Directory /var/www/>
AllowOverride None
order deny,allow
Options -Indexes FollowSymLinks
</Directory>

Zrób to dla każdego katalogu, w którym chcesz kontrolować informacje, a będziesz miał JEDEN plik w jednym miejscu, aby zarządzać całym dostępem. To przykład powyżej, zrobiłem to dla katalogu głównego, / var / www.

Ta opcja może nie być dostępna w przypadku hostingu outsourcingowego, zwłaszcza hosting współdzielony. Ale jest to lepsza opcja niż dodawanie wielu plików .htaccess.

 1
Author: Sablefoste,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-22 20:44:18

Aby zapobiec .zapraszamy do zapoznania się z naszą ofertą.conf

<Files ~ "\.ini$">
Order allow,deny
Deny from all
</Files>
 1
Author: Daniel Boakye,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-07 05:28:00

A co powiesz na niestandardowy moduł oparty .skrypt htaccess (jak jego używany w CodeIgniter)? Próbowałem i działało dobrze w aplikacjach CodeIgniter. Jakieś pomysły na użycie go w innych aplikacjach?

<IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>
 0
Author: Cosmo Arun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-16 19:48:57