Jump to content
  • 0

Задача 1. Файлообменик


Fenix
 Share

Question

Идея родилась из этого топика. Если я сказал что будет, значит будет. Вот собственно сама задачка.

Файлообменик. Нужно сделать файлообменик. Должны присутствовать:

1. Загрузка файлов

2. Фильтрация типов файлов (Запрещение загрузки файлов определеных типов. Например .php .exe .pl .js и т.д.)

3. Ограничения по размеру файлов

4. Возможность скачать этот файл

5. Админка

Если нужны коментарии - пишите сюда.

Link to comment
Share on other sites

Recommended Posts

  • 0
Идея родилась из этого топика. Если я сказал что будет, значит будет. Вот собственно сама задачка.

Файлообменик. Нужно сделать файлообменик. Должны присутствовать:

2. Фильтрация типов файлов (Запрещение загрузки файлов определеных типов. Например .php .exe .pl .js и т.д.)

2. Зачем? Если правильно написать скрипт, то подобные файлы запустить будет невозможно. Пример:

Я загрузил файл virus.exe
его можно скачать здесь - http://site.ru/download.php?id=35eb746e7d7d7g764ee7re76e74
на странице download.php - задержка в 5 секунд, перенаправление на download.php?id=35eb746e7d7d7g764ee7re76e74&session=уникальный код сессии
на этой странице примерно такое содержание:
<?
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
?>
Но разумеется все в разы сложнее

Думаю, я возьмусь.

Link to comment
Share on other sites

  • 0
Идея родилась из этого топика. Если я сказал что будет, значит будет. Вот собственно сама задачка.

Файлообменик. Нужно сделать файлообменик. Должны присутствовать:

1. Загрузка файлов

2. Фильтрация типов файлов (Запрещение загрузки файлов определеных типов. Например .php .exe .pl .js и т.д.)

3. Ограничения по размеру файлов

4. Возможность скачать этот файл

5. Админка

Если нужны коментарии - пишите сюда.

Пункты:

Регистрация

Авторизация

Разделение прав пользователей

Удаление файлов

Разбиение на группы (дирректории), файлы как то: картинки, видео, аудио

Либо тупо по тематике...

Забыл?

Link to comment
Share on other sites

  • 0
2. Зачем? Если правильно написать скрипт, то подобные файлы запустить будет невозможно. Пример:

Я загрузил файл virus.exe
его можно скачать здесь - http://site.ru/download.php?id=35eb746e7d7d7g764ee7re76e74
на странице download.php - задержка в 5 секунд, перенаправление на download.php?id=35eb746e7d7d7g764ee7re76e74&session=уникальный код сессии
на этой странице примерно такое содержание:
<?
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
?>
Но разумеется все в разы сложнее

Думаю, я возьмусь.

Согласен. Но такие файлы и загружаться не должны.

Пункты:

Регистрация

Авторизация

Разделение прав пользователей

Удаление файлов

Разбиение на группы (дирректории), файлы как то: картинки, видео, аудио

Либо тупо по тематике...

Забыл?

Непонимаю зачем тут нужна регистрация и авторизация. Про разбиение на группы (дирректории) че-то не подумал. Можно сделать. А удаление файлов должно быть в админке.

Link to comment
Share on other sites

  • 0
Согласен. Но такие файлы и загружаться не должны.

Непонимаю зачем тут нужна регистрация и авторизация. Про разбиение на группы (дирректории) че-то не подумал. Можно сделать. А удаление файлов должно быть в админке.

Как зачем?

Ты будешь давать возможность любому заливать файлы к тебе на хост?

А как же спам, засорение твоего дискового пространства?

Простенькая регистрация: ник и емаил.

И разграничение на права доступа.

Link to comment
Share on other sites

  • 0
Как зачем?

Ты будешь давать возможность любому заливать файлы к тебе на хост?

А как же спам, засорение твоего дискового пространства?

Простенькая регистрация: ник и емаил.

И разграничение на права доступа.

Да. Пожалуй прохожему надо только права на скачивание давать.

Link to comment
Share on other sites

  • 0
Согласен. Но такие файлы и загружаться не должны.

Почему? Допустим я нашел в сети драйвер для видеоадаптера, и хочу его отдать тебе. Но драйвер имеет расширение .exe Если файлообменник запретит мне его загружать, я пойду на народ и туда загружу

Link to comment
Share on other sites

  • 0
Почему? Допустим я нашел в сети драйвер для видеоадаптера, и хочу его отдать тебе. Но драйвер имеет расширение .exe Если файлообменник запретит мне его загружать, я пойду на народ и туда загружу

Потому что архив.

Link to comment
Share on other sites

  • 0
И то, только на момент развития ресурса, иначе смысла нет.

Знаешь, я очень ценю свое время. И если у меня есть возможность не регится ради того, чтоб залить 5 метров, то я не буду регится. Ну, а регится чтоб СКАЧАТЬ - это веб 1.0 и глубокий маразм

Потому что архив.

Не понял

P.S. Юзеры - очень ленивы. И когда придумают управление компьютером одной кнопкой, они будут так счастливы

P.S.S. Это такой же маразм, как регистрация ради коммента в блог

Link to comment
Share on other sites

  • 0
Знаешь, я очень ценю свое время. И если у меня есть возможность не регится ради того, чтоб залить 5 метров, то я не буду регится. Ну, а регится чтоб СКАЧАТЬ - это веб 1.0 и глубокий маразм

Не понял

1) Маразм то, что ты (извини если на ты неприятно) тут пишешь отнимая у себя время гораздо больше чем зарегать ник и емаил.

2) Архив никто еще не отменял и по сему экзешник мона заархивировать и тогда уже заливать, исключительно в целях безопасности хоста и пользователей.

Link to comment
Share on other sites

  • 0
1) Маразм то, что ты (извини если на ты неприятно) тут пишешь отнимая у себя время гораздо больше чем зарегать ник и емаил.

2) Архив никто еще не отменял и по сему экзешник мона заархивировать и тогда уже заливать, исключительно в целях безопасности хоста и пользователей.

Я повторяю - если правильно спроектировать скрипт, никто чисто физически не сможешь запустить файл

Link to comment
Share on other sites

  • 0
А на пользователей скачавших этот авторан наплевать?

Нет. Это же они сами решили его скачать. И в конце концов можно антивирусником проверять на сервере

Link to comment
Share on other sites

  • 0
Я повторяю - если правильно спроектировать скрипт, никто чисто физически не сможешь запустить файл

Надо запретить загрузку исполняемых файлов. Вдруг я захочу загрузить файл drop_db.php. Наберу его в адресной строке и и уничтожу бд.

Link to comment
Share on other sites

  • 0

P.S. Уря! Я пользователь. Еще десять тысяч ведер и золотой ключик будет наш хД

Надо запретить загрузку исполняемых файлов. Вдруг я захочу загрузить файл drop_db.php. Наберу его в адресной строке и и уничтожу бд.

Дружок, блин. Где ты его найдешь? Я ж блин файлы в базе хранить буду :D

Или просто при загрузке переименую в r4ecdjfk5uf7vcg85t489dfjdkfvoeitri4t5i8ujlsdfuieiogerjvgd.php.not

Link to comment
Share on other sites

  • 0
Нет. Это же они сами решили его скачать. И в конце концов можно антивирусником проверять на сервере

Тут можно провести некую аналогию, продавец и покупатель:

Продавец:

- Не хотите, не покупайте.

Покупатель:

- Не хочу (при таком раскладе), не куплю... точнее куплю, но в другом месте.

Итог: потеря клиента.

Link to comment
Share on other sites

  • 0
А как ты востановишь потом прежнее имя?

Очень просто. В базе будет хранится его настоящее имя. И когда он будет отдаваться на скачку, будет в заголовке посылаться его настоящее имя

Link to comment
Share on other sites

  • 0
Очень просто. В базе будет хранится его настоящее имя. И когда он будет отдаваться на скачку, будет в заголовке посылаться его настоящее имя

Конечно можно востоновить имя. Но это будет лишний геморой.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy