Защита файлов с помощью htaccess блокирует обычный файл PDF - PullRequest
0 голосов
/ 03 марта 2012

Я прочитал это artcile о безопасности загрузки файлов, но теперь кажется, что действительному загруженному файлу PDF предоставляется запрещенный доступ после реализации этого htaccess поверх других упомянутых методов безопасности:

deny from all
<Files ~ "^\w+\.(gif|jpe?g|png|pdf|doc|docx|txt|rtf|ppt|pptx|xls|mp4|mov|mp3|mpg|mpeg)$">
order deny,allow
allow from all
</Files>

Имя файла выглядит следующим образом: Company-apv-A4-Solarpanels_ABC-RH.pdf

Что должно быть хорошо, поскольку htaccess предназначен для предотвращения атаки с удвоенным расширением, если я правильно понимаю.Надеюсь, кто-то может помочь!

Ответы [ 2 ]

1 голос
/ 06 мая 2012

Я только что столкнулся с этим, когда искал решение для чего-то другого.Но, чтобы сделать более простое решение, поскольку вы в основном хотели предотвратить все двойные расширения, вы должны использовать это:

Order Allow,Deny
<FilesMatch "^[^.]+\.(gif|jpe?g|png|pdf|doc|docx|txt|rtf|ppt|pptx|xls|mp4|mov|mp3|mpg|mpeg)$">
Allow from all
</FilesMatch>

Более точно и проще.Используя FilesMatch (так как FilesMatch использует REGEX лучше, чем Files), он использует директиву Order Allow, Deny, которая означает: сопоставить, разрешить или запретить, если не совпадает, либо отклонить.Таким образом, это отрицает все, кроме того, что разрешено.

[^.] означает любой символ «не» буквальный период.Так что это охватывает почти все, чего вы хотели достичь.Просто помните, что эти правила не допускают расширения файлов в верхнем регистре.Некоторые люди используют старые приложения, которые создают расширения файлов в верхнем регистре, поэтому вы можете также включить их.

Я не уверен, насколько хорошо нечувствительность к регистру '/i' работает с Files или FilesMatch, поэтому вы можете захотеть создавать классы символов следующим образом:

([Jj][Pp][Ee]?[Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Pp][Dd][Ff])

и т. Д.

0 голосов
/ 03 марта 2012

Почему бы и нет:

SetEnvIf Request_URI "(^|/)[-\w]+\.(gif|jpe?g|png|pdf|doc|docx|txt|rtf|ppt|pptx|xls|mp4|mov|mp3|mpg|mpeg)$" allowed

<Files *>
   Order deny,allow
   Deny from all
   Allow from env=allowed
</Files> 

Также обратите внимание, что я удалил обязательный начальный ^, поскольку вы наверняка хотите разрешить доступ к этим расширениям в подкаталогах, а [-\w]+, поскольку - отсутствует в \w.

Я бы просто начал свое регулярное выражение \.(gif ... так как вам действительно нужно только проверить расширение на то, что вы хотите. До вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...