Форум о защите от: хакеров, взлом, раскрутка, хакер, вирусы, взлом программы, взлом паролей, взлом вконтакте, взлом 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/