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
  Fenix said:
Идея родилась из этого топика. Если я сказал что будет, значит будет. Вот собственно сама задачка.

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

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
  Fenix said:
Идея родилась из этого топика. Если я сказал что будет, значит будет. Вот собственно сама задачка.

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

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

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

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

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

5. Админка

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

Пункты:

Регистрация

Авторизация

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

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

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

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

Забыл?

Link to comment
Share on other sites

  • 0
  Эдмунд Шклярский said:
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;
?>
Но разумеется все в разы сложнее

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

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

  Quote
Пункты:

Регистрация

Авторизация

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

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

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

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

Забыл?

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

Link to comment
Share on other sites

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

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

Как зачем?

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

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

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

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

Link to comment
Share on other sites

  • 0
  rus said:
Как зачем?

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

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

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

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

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

Link to comment
Share on other sites

  • 0
  Int said:
А у меня уже сделан и пару лет как работает :D даже вторая версия уже пошла. Но это в местной сети.

Ты заочно выиграл в этой олимпиаде по фигне, ой извините задаче :D

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

Не понял

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

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

Link to comment
Share on other sites

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

Не понял

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

  • 0

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

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

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

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

Link to comment
Share on other sites

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

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

Продавец:

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

Покупатель:

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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