Я прогаю на пхп уже год, но не понял, как они сломали его ?

Crazy

Developer
Через .htaccess закрыть доступ к файлам с указанной маской.
 

Crazy

Developer
mod_rewrite -- это уже для утонченного садизма (отдавать пропатченные неверные исходники). А так достаточно и <Files ~ .......>
 

Yurik

/dev/null
А как же аплоадные дыры?
Познать секрет 2-го ДАО: всегда проверять расширения файлов, которые закачиваются в фаловую систему (oчень странно, но многие такого не делают, а потом в ожидании фотки юзера получают троянский *.php)
 

tony2001

TeaM PHPClub
>Познать секрет 2-го ДАО: всегда проверять расширения файлов,
[m]getimagesize[/m] вас спасет.
она определяет тип картинки по ее заголовкам.
 

Yurik

/dev/null
>она определяет тип картинки
1.
PHP:
GIF87avж  яяяюююэээьььыыыъъъщщщшшшчччццц
................
<?php
 // dima remoteview
 // если не имелось ввиду что getimagesize будет
 //сам назначать расширения файлов
?>
2. Ну не обязательно же картинки, может кто *.zip, *.doc *.pdf etc собирает
 

ONK

Пассивист PHPСluba
Для того чтобы надёжно закрыть проблемму аплоада, достаточно разделить поняти файла и его имени. Я например все загруженные пользователями файлы храняю с именами в виде уникальных идентификаторов и неким одинковым расширением :), отдельно храню имя файла связанное с этим идентификатором и отдельно имею скриптец download.php которому передаётся параметр ?id=12432543, а но проверяет наличие файла связанного с этим идентификатором и в зависимости от типа фйла либо отправляет файл как файл либо отправляет файл как изображение (разные заголовки).

Так что можно грузить и xxx.php и xxx.exe всё корректоно загрузится и скачается -)....
 

Yurik

/dev/null
2ONK: нескромный вопрос, с проблемами кеширования как разбирались?

P.S. Раз уж у нас есть download.php?id=21323 то зачем хранить файлы, не лучше пихнуть все в базу? А то получается что от преимуществ хранения в файлах отказались, а выгод хранения в БД не получили.
 

Crazy

Developer
Автор оригинала: Yurik
Познать секрет 2-го ДАО: всегда проверять расширения файлов, которые закачиваются в фаловую систему
Почему бы не запретить исполнение скриптов в upload-каталоге?
 

Yurik

/dev/null
Почему бы не запретить
1. как минимум нужно иметь права на .htaccess (AllowOverride +Options)
2. не всегда по фтп можно редактировать файлы .*
3. каталогов может быть много, даже целое дерево может вырасти, да ещё динамически
 

Crazy

Developer
Автор оригинала: Yurik
1. как минимум нужно иметь права на .htaccess (AllowOverride +Options)
2. не всегда по фтп можно редактировать файлы .*
Такие проблемы характерны разве что для халявных хостингов. А там защищать нечего. :)

3. каталогов может быть много, даже целое дерево может вырасти, да ещё динамически
Если каталогов для upload'а НАСТОЛЬКО много, то это по крайней мере странно.
 

ONK

Пассивист PHPСluba
Автор оригинала: Yurik
2ONK: нескромный вопрос, с проблемами кеширования как разбирались?

P.S. Раз уж у нас есть download.php?id=21323 то зачем хранить файлы, не лучше пихнуть все в базу? А то получается что от преимуществ хранения в файлах отказались, а выгод хранения в БД не получили.
Вопрос с кэшированием я непонял, я невижу никаких проблемм в отправке любых заголовков клиенту....


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

Crazy

Developer
Автор оригинала: ONK
(или придётся каждый раз выбирать из базы данных весь файл
Если разбить файл на куски, то не придется. Остальные же причины разумны. :)
 

RomikChef

Guest
ну, это самая тупая дыра ,которая бывает в сайтах на РНР.
мало того, что адрес получается кривой и неудобный, приходится писать кучу лишнего кода, чтобы его обработать - так еще и ломают его все, кому не лень.
 

Skat

Guest
а можно поподробней ...
вроде как nuke так же сделан ... и вроде как я пока не замечал чтоб кто-то жаловался что его сломали ....
Ромик объясни пожалуста какие могут быть дыры тут ... просто у меня сделано по токомуже принципу что и nuke

P.S. Спасибо.
 

Yurik

/dev/null
невижу никаких проблемм в отправке любых заголовков клиенту....
как в анекдоте "не вижу проблем по доставке любых товаров по любым адресам в любые строки"
конкретно: как реализовывал. ответ можн в тред "Заголовки кешировния динамического контента"
 
Сверху