все. Я довольно новичок в веб-разработке, поэтому, пожалуйста, будьте осторожны. Извиняюсь, если я отправляю тему, которая уже обсуждалась; Я искал, но не мог найти то, что искал в другом потоке.безопасность загрузки файлов, htaccess и изменение расширений
Фон: У меня есть сайт, который позволяет загружать файлы, но после их загрузки их не нужно просматривать никому, кроме меня. Я реализовал некоторые меры безопасности, такие как наличие сценария загрузки php, только разрешить определенные расширения, chmoding uploaded files to 0644 и использовать -ExecCGI для различных расширений в файле htaccess внутри папки uploads.
вопросов (три из них; не так повезло):
1) Я хотел бы, чтобы мой файл .htaccess расширения переписывает PHP как-то иначе. Я нашел немного кода, чтобы сделать это, но не могу заставить его работать:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^PUT$ [OR]
RewriteCond %{REQUEST_METHOD} ^MOVE$
RewriteRule ^(.*)\.php /site_redone/uploads/$1.nophp
структура сайта выглядит следующим образом (по крайней мере сейчас, пока я переделка сайт): MySite .com/site_redone/uploads
Я знаю, что хост моего общего сервера допускает mod_rewrite. Они работают php 5.2.10. Не уверен, что моя проблема связана с проблемой пути (я еще не совсем понял эту часть), но пробовал различные перестановки пути в части RewriteRule безрезультатно.
2) В настоящее время имена файлов добавляются с типом отметки времени (время()), чтобы предотвратить переписывание одним и тем же именем, поэтому, например, myfile.doc становится myfile1252087685.doc. Я могу сохранить расширение в базе данных MySQL и просто переписать имя файла для завершения в .txt или что-то в моем сценарии загрузки php, но я не уверен, выполнит ли это то же самое, что и вышеупомянутая попытка mod_rewrite.
3) Есть ли способ поместить файл htaccess в более высокий каталог из папки uploads, чтобы он не мог перезаписать мою некоторую ne'erdowell, когда она находится в папке uploads? Я только хочу, чтобы это повлияло на папку uploads, а не на каталог, в котором она была размещена. Я предполагаю, что это как-то связано с использованием Directory, но я не знаю, как это сделать. Я упоминал, что я новичок в этом?
Заранее благодарен!
Спасибо за ваш быстрый ответ, Джейсон! Из учебников на modrewrite.com мое (по общему признанию шаткое) понимание - это регулярное выражение относительно файла htaccess, но для второй половины RewriteRule требуется весь путь. Но независимо, ваше регулярное выражение и подобные варианты, которые я пробовал, не дают мне никакой любви. Ну что ж. Я меньше обеспокоен тем, что люди просматривают папку, а не загрузку вредоносного кода, но мой текущий файл htaccess должен предотвращать публичный просмотр и выполнение кода. Я просто не настолько осведомлен о безопасности, насколько я, вероятно, должен быть, поэтому я стараюсь охватить все свои базы. – 2009-09-05 02:57:58