2012-05-06 2 views
-3

У меня есть сайт, и я хочу создать файл log.txt, который включает в себя все пользовательские журналы. Например, пользователь вошел в систему в любое время и вышел из системы. То есть время, в которое вошли пользователи. Я могу сделать это с базой данных, но будет много строк, и я не хочу этого. Если я поместил файл log.txt в /logs/log.txt, любой пользователь, который пишет domain.com/log/log.txt в адресную строку, увидит этот файл. Как я могу это предотвратить. (Я использую PHP)Как предотвратить отображение файла в адресной строке?

+5

Почему вы не хотите использовать базу данных? Это пример использования для одного; «слишком много строк» ​​не имеет смысла, поскольку для этого случая были созданы базы данных. – Venge

+1

Ух, напишите файл журнала в местоположение за пределами общедоступного веб-корня? – rdlowrey

+1

Вы не можете предотвратить использование PHP. –

ответ

2

Это правда, что вы можете скрыть файлы с посетителей сайта с помощью .htaccess или путем размещения похожих правил в других местах конфигурации Apache. Но такого рода вещи не тривиальны, и легко ошибаться. Лучший способ скрыть файлы от посетителей сайта - это структура каталогов вашего проекта. Например:

  • Каталог www/ для размещения всех посетителей сайта. Необходимо непосредственно посетить браузер. Это будет использоваться каталогом в качестве корня веб-сайта в вашей конфигурации Apache. Если браузеру не нужно брать файл, его здесь не должно быть.
  • Другие каталоги, как logs/ для журналов, lib/ для исходного кода, который получает включены в сценариях, config/ для настройки и файлы конфигурации и т.д. Так как они не внутри корня сайта (www/), пользователи не могут указать свои браузеры в любом из этих файлов.

Если вы находитесь на общедоступном хостинге, и они дают вам только одну папку, которая является корнем вашего сайта, то вы не можете этого сделать. Однако я бы не стал приобретать учетную запись хостинга у такой компании, потому что есть много таких, которые позволяют помещать файлы вне вашего веб-корня.

0

Вы можете запретить доступ HTTP в папку журнала с помощью файла .htaccess, который содержит

deny from all 
+3

Еще лучше, просто поместите что-нибудь «личное» вне корня документа, что делает его естественным недоступным. –

1

Использовать .htaccess с

<Files "log.txt"> 
     order deny,allow 
     deny from all 
     allow from 1.2.3.4 
    </Files> 

где 1.2.3.4 ваш IP-адрес, если вы хотите получить доступ к нему из своего браузера через сайт. Else удалите эту строку, так что вы сможете получить доступ только через FTP или скрипт

+2

Не очень хорошая идея. если что-то должно быть недоступно, то оно не должно находиться внутри корня документа. Конфигурации Apache можно легко ввернуть, и это сделает файл. –