Защита от шелла?

661
.
FlySelf (10.12.2009/16:44)
При выгрузке разрешай только файлы, разрешенного типа и чтобы файл имел одно расширение. также в папку куда все грузиться кидай хтакес, запрещающий запуск пхп файлов в этой папке, то есть если и кинут
А как тогда быть к примеру с версиями программ когда имя файла имеет вид Exploer.1.02.zip скрипт будет считать его как двойное разширение?
.
╭∩╮ (`-`) ╭∩╮
Unknown (10.12.2009/16:49)
А как тогда быть к примеру с версиями программ когда имя файла имеет вид Exploer.1.02.zip скрипт будет считать его как двойное разширение?
А тут уж выбирай. или безопасность, или красота
.
╭∩╮ (`-`) ╭∩╮
Хотя, напомню, при ПРАВИЛЬНО настроенном сервере, ситуацию спасает всего лишь один файл .htaccess который запрещает в папке запуск любых скриптов.
Тогда даже если загрузишь РНР файл, он не будет выполняться, а будет выводиться как простой текст.
---
Но в двиг подобное не включаем, потому, что ставят на всякие корявые хостинги, на некоторых даже запрещены .htacctss, такие инсталляции естессно быстро взломают.
Потому, если уверен в своем сервере, можешь для себя открыть все расширения.
.
AlkatraZ, Олег, а не проще ли запретить определенные типы расширений их же меньше чем тех которые разрешены?
.
╭∩╮ (`-`) ╭∩╮
Unknown (10.12.2009/16:56)
AlkatraZ, Олег, а не проще ли запретить определенные типы расширений их же меньше чем тех которые разрешены?
Неее, это гибельный путь.
Должно быть так: запрещено ВСЕ, что явным образом не разрешено!
Но не наоборот.
.
╭∩╮ (`-`) ╭∩╮
Можно конечно покрасивее:
1) В главном .htaccess прописать ВСЕ MIME типы разрешенных файлов
2) Проверять только последнее расширение.
---
Тогда возможно будет загружать файлы с двойным и более расширением.
НО!
Хостинг должен правильно поддерживать .htaccess, иначе возможна phpInjection уязвимость.
В Апаче 2.0 почему то ввели идиотскую функцию (в 1.х такого небыло), что если Апачу неизвестен тип файла из последнего расширения, он смотрит следующее.
---
К примеру,
1) ты разрешил выгружать фотошоповские файлы .psd
2) Апач ничего про них не знает, что за тип
3) если грузишь файл myfile.psd ничего страшного не произойдет.
4) Но вот хакер загружает шелл с именем myfile.phtml.psd и что произойдет?
Так, как последнее расширение .psd разрешено к выгрузке, файл благополучно будет залит на сервер.
А вот, если мы его вызовем не через загруз, а напрямую по ссылке my_site/forum/files/myfile.phtml.psd, то будет катастрофа.
Апач ничего не знает про расширение .psd и естессно будет рассматривать следующее. А оно у нас .phtml, а это уже исполняемый скрипт.
Что дальше произойдет - сам догадываешься
.
Да уж, своих ньюансов куча. Спасибо Олег что подсказал.
.
можно проше сделать. создать 2 поля для имени в базе.
`name` varchar(30) NOT NULL,
`namex` varchar(255) NOT NULL,

при выгрузке на сервер файла тупо пишем в namex реальное имя файла, далее мутим такую фичу. узнаем формат файла и далее пишем к примеру свой адрес сайта папример johncms_com_ и к нему приписываем id самого файла, далее пририсовываем формат и сохраняем его на сервере. пример имени johncms_com_1.zip. тепер на сервере храниться одно имя а выводим другое. ну конечно незабудь про проверку расщирения для этого занеси все разрешение расщирения в масив и проаеряй их через функцию in_array вроде идеальный вариант
.
¤
Для начала - очень даже неплохой ликбез всем зачет
.
аkа ПьяНый Ангел
torsen (10.12.2009/21:54)
можно проше сделать. создать 2 поля для имени в базе. `name` varchar(30) NOT NULL, `namex` varchar(255) NOT NULL,при выгрузке на сервер файла тупо пишем в namex реальное имя файла, далее мутим такую ф
ниасилил, зачем такие заморочки, если хотите чтобы было имя красивое у файла, то добавьте поле для НАЗВАНИЕ ДЛЯ ОТОБРАЖЕНИЯ, и туда уже пишите любые символы...и выводите эти имя (я так сделал у себя на форуме, у меня можно грузить до 5 файлов, и чтобы было понятнее что это за файл) ты это имел ввиду?
Всего: 22