Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> .htaccess существование файла 
:(
    Опции темы
MoLeX
Дата 30.1.2012, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Добрый день.

Вот таким кодом проверяю на существование файла и если его нет перенаправляю на скрипт
.htaccess
Цитата

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^css/(.*)$ compress.php [L,QSA]


Если вызывается:
1. http://example/css/style.css - перенаправляет, все ок (файл не существует)
2. http://example/css/folder/style.css - перенаправляет, ошибка (файл существует)


Изменяем htaccess
Цитата

RewriteRule ^/css/(.*)$ compress.php [L,QSA]

Если вызывается:
1. http://example/css/style.css - прямое обращение к файлу, ошибка (файл не существует)
2. http://example/css/folder/style.css - прямое обращение к файлу, все ок (файл существует)

Как исправить?

Добавлено через 1 минуту и 48 секунд
P.S. То есть, мне надо если файл не существует (http://example/css/style.css, http://example/css/folder/style.csshttp://example/css/f/folders/style.css ) то вызвать скрипт


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 30.1.2012, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Попробуй так:
Код

RewriteRule ^/?css/(.*)$ compress.php [L,QSA]

Думаю тут у тебя ещё есть проблема правда немного в другом. Попробуй у себя перейти по такому урлу:
http://example/css/folder/filename.php
или
http://example/css/filename.php

Это сообщение отредактировал(а) krundetz - 30.1.2012, 13:00


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
krundetz
Дата 30.1.2012, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Протестировал у себя твою версию правил, работают как надо. То есть:
1. если файл http://example/css/style.css есть он показывается, 
2. если есть http://example/css/folder/style.css тоже показывается, 
3. если файл http://example/css/folder/style1.css отсутствует то выполняется php скрипт, 
4. если файл http://example/css/style1.css отсутствует тоже выполняется php скрипт,
5. если файл http://example/css/filename.php есть, то он запуститься на выполнение.

Это сообщение отредактировал(а) krundetz - 30.1.2012, 13:21


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 30.1.2012, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



krundetz, твой вариант:
1. http://example/css/style.css - перенаправляет на скрипт (файл существует) - не должен
2. http://example/css/newstyle.css - перенаправляет на скрипт (файл не существует) - все правильно
3. http://example/css/folder/style.css - перенаправляет на скрипт (файл существует) - не должен


Добавлено @ 13:30
мой вариант
Цитата

RewriteRule ^/css/(.*)$ compress.php [L,QSA]

то:
1. http://example/css/style.css - открывает файл (файл существует) -  все правильно
2. http://example/css/newstyle.css - открывает файл (файл не существует) - не должен
3. http://example/css/folder/style.css - открывает файл (файл существует) - все правильно

Это сообщение отредактировал(а) MoLeX - 30.1.2012, 13:31


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 30.1.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



MoLeX, это ты про мой вариант?

Кстати с почином тебя статей на хабре.

Это сообщение отредактировал(а) krundetz - 30.1.2012, 13:32


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 30.1.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



krundetz, да


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 30.1.2012, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(MoLeX @  30.1.2012,  13:31 Найти цитируемый пост)
krundetz, да 

ну как я уже сказал у меня твой первый вариант полностью работоспособен

Это сообщение отредактировал(а) krundetz - 30.1.2012, 13:34


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 30.1.2012, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



хм, у меня нет.
вот весь .htaccess, может в нем что не так
Цитата

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^js/(.*)$ compress.php [L,QSA]
RewriteRule ^/css/(.*)$ compress.php [L,QSA]


RewriteCond $1 !^(index\.php|compress\.php|css|img|js)
RewriteRule ^(.*)$ /index.php/$1 [L]



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 30.1.2012, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^css/(.*)$ compress.php [L,QSA]

у меня вот так работает

Это сообщение отредактировал(а) krundetz - 30.1.2012, 13:38


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 30.1.2012, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



блин, ну правильно же.... правила надо разделять, а я все в одну кучу свалил smile 
так вот все работает
Цитата

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^js/(.*)$ compress.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^css/(.*)$ compress.php [L,QSA]


Добавлено через 20 секунд
Цитата(krundetz @  30.1.2012,  12:54 Найти цитируемый пост)
Думаю тут у тебя ещё есть проблема правда немного в другом.

эта ты о чем?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
ksnk
Дата 30.1.2012, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



RewriteCond работает с ОДНИМ RewriteRule, расположенным сразу под ним. "Отбивка" куска правил пустой строкой - не работает  smile
Sorry, не досмотрел до конца топика, уже все таки ясно 

Добавлено @ 14:17
Можно указывать флаг Chain [C], если нужно склеить правила

Это сообщение отредактировал(а) ksnk - 30.1.2012, 14:20


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
krundetz
Дата 30.1.2012, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(MoLeX @  30.1.2012,  13:44 Найти цитируемый пост)
эта ты о чем? 

создай в директории css файл filename.php а потом обратись к нему http://example/css/filename.php в результате выполнится php код выполняться который не должен. Если злоумышленник найдет способ закачать в эту директорию файл php он получит возможность его выполнить.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
ksnk
Дата 30.1.2012, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(krundetz @  30.1.2012,  15:30 Найти цитируемый пост)
Если злоумышленник найдет способ закачать в эту директорию файл php он получит возможность его выполнить. 

Чем в этом случае злоумышленник будет отличатся от честного налогоплательщика, который и хотел разместить там php код?
smile 
Файл от загрузки в непредусмотренное для исполнениян место защищается, обычно, несколько другими средствами. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
krundetz
Дата 30.1.2012, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(ksnk @  30.1.2012,  15:57 Найти цитируемый пост)
Файл от загрузки в непредусмотренное для исполнениян место защищается, обычно, несколько другими средствами.

ну уровня защиты должно быть хотя бы 2:
1. Невозможность загрузить файл на сервер (как показывает практика, найти такую дырку в скриптах реально, вроде бы уже закрывали а она опять появляется и на том же самом месте, как кто специально делает, хотя конечно виной всему раздолбайство)
2. Так как от первого 100% страховки нет, то хорошо бы подстраховаться что бы файлы не имеющие отношения к движку сайта запуститься не могли.

3. Так же помещение скрипта в директорию которая для скриптов не предназначена может быть просто не замечено владельцем сайта, так как глаз замыливается и рассуждение будет примерно таким "если я не помещаю туда файлы то и искать там не буду".

Выходом из ситуации может быть модификация .htaccess файла следующим образом:
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^(.*)\.css$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.css$ compress.php [L,QSA]

то есть условие будет отрабатываться только для файлов у которых расширение css, и если не забыть запретить выполнение таких файлов интерпретатором php, то посторонний код на сервере запустить не удастся

Добавлено @ 17:07
Цитата(ksnk @  30.1.2012,  15:57 Найти цитируемый пост)
Чем в этом случае злоумышленник будет отличатся от честного налогоплательщика, который и хотел разместить там php код?

Тем что честный налогоплательщик разместит там нужный ему код, а злоумышленник код который направлен на взлом.

З.Ы. Возможно в приведенном коде ошибка надо проверить пример из памяти

Это сообщение отредактировал(а) krundetz - 30.1.2012, 17:11


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
ksnk
Дата 30.1.2012, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(krundetz @  30.1.2012,  17:05 Найти цитируемый пост)
то есть условие будет отрабатываться только для файлов у которых расширение css

А если юзер разместил там php файл специально? Какая нибудь LESS/SASS реализация или еще какой финт с css на лету?



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1008 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.