У меня есть сайт, и я хочу создать файл log.txt, который включает в себя все пользовательские журналы. Например, пользователь вошел в систему в любое время и вышел из системы. То есть время, в которое вошли пользователи. Я могу сделать это с базой данных, но будет много строк, и я не хочу этого. Если я поместил файл log.txt в /logs/log.txt, любой пользователь, который пишет domain.com/log/log.txt в адресную строку, увидит этот файл. Как я могу это предотвратить. (Я использую PHP)Как предотвратить отображение файла в адресной строке?
ответ
Это правда, что вы можете скрыть файлы с посетителей сайта с помощью .htaccess
или путем размещения похожих правил в других местах конфигурации Apache. Но такого рода вещи не тривиальны, и легко ошибаться. Лучший способ скрыть файлы от посетителей сайта - это структура каталогов вашего проекта. Например:
- Каталог
www/
для размещения всех посетителей сайта. Необходимо непосредственно посетить браузер. Это будет использоваться каталогом в качестве корня веб-сайта в вашей конфигурации Apache. Если браузеру не нужно брать файл, его здесь не должно быть. - Другие каталоги, как
logs/
для журналов,lib/
для исходного кода, который получает включены в сценариях,config/
для настройки и файлы конфигурации и т.д. Так как они не внутри корня сайта (www/
), пользователи не могут указать свои браузеры в любом из этих файлов.
Если вы находитесь на общедоступном хостинге, и они дают вам только одну папку, которая является корнем вашего сайта, то вы не можете этого сделать. Однако я бы не стал приобретать учетную запись хостинга у такой компании, потому что есть много таких, которые позволяют помещать файлы вне вашего веб-корня.
Вы можете запретить доступ HTTP в папку журнала с помощью файла .htaccess, который содержит
deny from all
Еще лучше, просто поместите что-нибудь «личное» вне корня документа, что делает его естественным недоступным. –
Использовать .htaccess с
<Files "log.txt">
order deny,allow
deny from all
allow from 1.2.3.4
</Files>
где 1.2.3.4 ваш IP-адрес, если вы хотите получить доступ к нему из своего браузера через сайт. Else удалите эту строку, так что вы сможете получить доступ только через FTP или скрипт
Не очень хорошая идея. если что-то должно быть недоступно, то оно не должно находиться внутри корня документа. Конфигурации Apache можно легко ввернуть, и это сделает файл. –
Почему вы не хотите использовать базу данных? Это пример использования для одного; «слишком много строк» не имеет смысла, поскольку для этого случая были созданы базы данных. – Venge
Ух, напишите файл журнала в местоположение за пределами общедоступного веб-корня? – rdlowrey
Вы не можете предотвратить использование PHP. –