Форум о защите от: хакеров, взлом, раскрутка, хакер, вирусы, взлом программы, взлом паролей, взлом вконтакте, взлом icq, раскрутка сайта, взлом скачать, взлом почты, взлом ru, проги взлома, хакер, программа взлома, трояны, программирование http://forum.ahack.ru/ |
|
Загрузчик файлов. http://forum.ahack.ru/topic44.html |
Страница 1 из 1 |
Автор: | BECHED [ 23-05, 17:30 ] |
Заголовок сообщения: | Загрузчик файлов. |
Пишем нормальный загрузчик файлов на сервер. Такой предмет, как загрузчик файлов, думаю, нуждается во внимании, по нескольким причинам: × актуальность × удобность × угроза атаки Представьте себе форум, без возможности выбора аватара, или представьте сколько времени можно сэкономить, загружая файлы прямо из окна браузера, не используя различные ftp-клиенты. И так приступим. Рассмотрим проблему безопасности. В настоящее время каждый школьник(эквивалентно слову "хакер") знает, что такое веб-шелл, знает что его можно залить на сервер(скажем, через глюки форума IPB, в панели загрузки смайликов) и тем самым заработать 25 рублей(эквивалентно 1$). Чтобы обезопасить себя от такого рода злоумышленников, стоит запрертить загрузку файлов с раширением ".php". PHP код: Код: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru"> <head> <title>r0:Умный загрузчик</title> <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" /> </head> <body> <form action='<?=$_SERVER[PHP_SELF]?>' method='POST' enctype='multipart/form-data' > <br /> Добавить херни: <input type='file' name='t_item'> <br /> <input type='submit' name='ok' value='Принять' /> </form> </dt> </dl> </center> <?php if ($_POST[ok]) { // Определяем директорию на сервере. $upfiledir = $_SERVER[DOCUMENT_ROOT]."/dir1/dir2/"; // Полное имя загружаемого файла $upfile = $upfiledir . basename($_FILES[t_item][name]); ### Определяем является ли файл - .php файлом ### // Разрезаем имя файла на "название" и расширение $ext = strtolower(strrchr($upfile, ".")); // Массив с враждебным ( o_O ) расширением $extentions = array(".php"); // Если расширение загружаемого файла совпадает с "враждебным" -- хекер идет лесом if (in_array($ext, $extentions)) { echo "Лол, йо хэккер! =) <br /> Моя бабушка и то бы залила сюда веб-шелл =/ "; exit; } // если файл перемещен в нужную директорию выводим информацию if (move_uploaded_file($_FILES[t_item][tmp_name], $upfile ) ) { // Данная переменная хранит относительную ссылку, которую можно поместить в БД $uplink = "dir1/dir2/".$_FILES[t_item][name]; // Инфа о файле echo "Файл ".$_FILES[t_item][name]." успешно загружен на сервер! <br /> Размер: ".$_FILES[t_item][size]." байт. <br /> Мим-тип: ".$_FILES[t_item][type]; } } И так.. в итоге получили данный скрипт, который перемещает файл с локального компьютера на сервер. После того как получен HTTP-запрос, содержимое файла копируется во временный файл, созданный по умолчанию в каталоге сервера для временных файлов. Информацию о файле можно получить, используя двумерный суперглобальный массив $_FILES. $_FILES[file][name] - исходное имя. $_FILES[file][size] - размер файла в байтах . $_FILES[file][type] - MIME-тип файла. $_FILES[file][tmp_file] - имя временного файла. Помните ! 1) Форма должна иметь атрибут enctype (enctype='multipart/form-data' ), без которого загрузка не выполнится 2) Каталог для загрузки должен иметь права на запись, установить которые можно с помощью ftp-клиента или ф-и chmod. PHP код: Код: bool chmod ( string filename, int mode )
Ну всё .. зуфсу |
Автор: | Adwer [ 10-12, 23:27 ] |
Заголовок сообщения: | |
aasas |
Автор: | Alkonavt [ 11-12, 18:09 ] |
Заголовок сообщения: | |
Привет! |
Автор: | Alkonavt [ 11-12, 18:10 ] |
Заголовок сообщения: | |
hgfhgf |
Автор: | BECHED [ 11-12, 18:11 ] |
Заголовок сообщения: | |
Вы че совсем охерели здесь флудить?! |
Автор: | Alkonavt [ 11-12, 18:11 ] |
Заголовок сообщения: | |
hgfhgf |
Автор: | Diabolik [ 11-12, 18:51 ] |
Заголовок сообщения: | |
Также можно ещё создать отдельный файл в который будет записываться статистика в какое время с какого айпи название файла дата итд будет записываться.И при загрузке файла изменять название чтобы если уже будет с стаким названием не затирать, просто названию файла присвоить текущие время time() заранее отделив расширение от самого название. |
Автор: | BECHED [ 11-12, 18:54 ] |
Заголовок сообщения: | |
Diabolik Ага, еще time() эффективно шифровать в md5, чтоб было совсем уникальное название. |
Автор: | prono [ 12-12, 22:41 ] |
Заголовок сообщения: | |
салам! |
Автор: | Diabolik [ 13-12, 05:12 ] |
Заголовок сообщения: | |
BECHED писал(а): Diabolik
Ага, еще time() эффективно шифровать в md5, чтоб было совсем уникальное название. Ну это уже на твоё усмотрение =) |
Автор: | Sasaha101010 [ 27-01, 06:24 ] |
Заголовок сообщения: | |
Я пользуюсь Рэджэтом, очень удобно помойму! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |