ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList

Страниц (51): В начало « ... 14 15 16 17 [18] 19 20 21 22 ... » В конец

> Найдено сообщений: 763
1Bot Отправлено: 23 декабря 2013 — 06:45 • Тема: Защита форума.. • Форум: Уязвимости

Ответов: 21
Просмотров: 15377
Закрытие возможных путей выполнения залитых на сайт шеллов

1) Включение режима Safe Mode в настройках php.ini safe_mode = on.
Если PHP настроен, как Safe Mode + open_basedir, тогда никакие файлы вне open_basedir не обслуживаются PHP, не стартуют программы, которые находятся вне данной директории.
Если PHP скомпилирован с опцией --enable-safe-mode, то по умолчанию принимает значение On (включено), иначе - Off (выключено).
!!! Данная возможность была помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и была УДАЛЕНА в версии PHP 5.4.0.

Функции, ограниченные в безопасном режиме (Отобразить)

При использовании PHP как модуль Apache пользователь ограничен своей директорией ограничением open_basedir, при использовании PHP как CGI правами пользователя в системе. Если защищенный режим в PHP включать, то с ним возникают проблемы со скриптами, которые хотят писать файлы на диск.

!!! Важно !!! Safe Mode не блокирует функции include(), require(), fopen(), fwrite() и многие другие, не менее полезные для взломщика, который реализует задуманое с помощью остальных функций PHP не прибегая к запуску системных команд, а используя оператор eval().


2) Запрет использования опасных функций. Смотрите /etc/php5/*/php.ini (для разных режимов свои) на предмет disable_functions =
Нельзя запрещать выполнение функций в httpd.conf c помощью disable_functions, эту директиву можно указывать только в php.ini.
Если функция используется в коде и попала в список disable_functions, то выдаст error в браузер (при включенном выводе ошибок), иначе функция просто вернет false;

!!! Важно!!! Опция disable_functions в php.ini на eval() не влияет, так как это не функция, а конструкция языка php.


3) Очень гибкие права доступа к подобным функциям есть в патче для apache suhosin. Можно указать список запрещенных к выполению функции в конфиге конкретного virtualhost с помощью php_admin_value disable_functions.

Можно запретить использование eval()
suhosin.executor.disable_eval = On


Помимо eval() еще есть куча других способов выполнить php код.
Например:
1. $newfunc = create_function('', '};phpinfo();//');
2. preg_replace с модификатором /e
3. обратные ковычки: `ls -lia`
4. и куча других фишек...

З.Ы. Лечите болезнь, а не следствия. Как к Вам заливают шеллы? Можно отключить интерпретацию php в папке uploads, или подобной, проверять заливаемые файлы.
1Bot Отправлено: 20 декабря 2013 — 21:13 • Тема: Что за код на HTML? • Форум: HTML

Ответов: 4
Просмотров: 4454
nikk пишет:
На голом сайте HTML обнаружил такой код:

CODE:
<script language=javaScript>document.onselectstart=new Function("return false");
document.ondragstart=new Function("return false");</script>


Что это? Это не вирус? Однако


Это не вирус, а довольно простенькая защита от копирования контента страницы: скрипт отменяет выделение текста с помощью мышки и перетаскивание текста мышкой.
1Bot Отправлено: 20 декабря 2013 — 07:09 • Тема: Как вытащить все email участников своего форума? • Форум: Общие вопросы

Ответов: 13
Просмотров: 10680
BON пишет:
я так понимаю скрипт прошерстит и выведит на экран?

Выведет в браузере табличку со столбцами: id_пользователя | ник | e-mail
1Bot Отправлено: 18 декабря 2013 — 09:01 • Тема: Как вытащить все email участников своего форума? • Форум: Общие вопросы

Ответов: 13
Просмотров: 10680
[quote=nikk]
1Bot пишет:
Вытащить просто, необходимо только определить формат, в котором сохранять список адресов.


Как именно? Плиз, помогите../quote]

Нужно залить файл show_mails.php в корень форума и вызвать его в браузере
CODE:
<?php
# show_mails.php
/*
Вывод e-mail всех пользователей
*/
function _Read($filename) {
if (!file_exists($filename)) return array();
$fp = @fopen($filename, 'r') or die('Could not read from the file <b>'.$filename.'</b>');
flock($fp, 1);
$filesize = filesize($filename);
$filesize = ($filesize === 0) ? 1:$filesize-8;
fseek($fp, 8);
$str = fread($fp, $filesize);
flock($fp, 3);
fclose($fp);
return (!empty($str)) ? unserialize($str):array();
}

$f = _Read('./data/users.php');
echo "<table style='border :1px;'><tr><td>#</td><td>Nick</td><td>E-mail</td></tr>\n";
foreach( $f as $k => $u ) {
echo "<tr><td>$k</td><td>${u['n']}</td><td>${u['m']}</td></tr>\n";
}
echo "</table>\n";
?>
1Bot Отправлено: 17 декабря 2013 — 16:04 • Тема: Как вытащить все email участников своего форума? • Форум: Общие вопросы

Ответов: 13
Просмотров: 10680
nikk
Вытащить просто, необходимо только определить формат, в котором сохранять список адресов.
1Bot Отправлено: 17 декабря 2013 — 15:15 • Тема: Как вытащить все email участников своего форума? • Форум: Общие вопросы

Ответов: 13
Просмотров: 10680
nikk
Файл /data/users.php в serialized-виде уже содержит необходимую информацию о почтовых ящиках пользователей.
1Bot Отправлено: 19 ноября 2013 — 10:06 • Тема: Описание формата и структуры хранимых данных форума • Форум: Утилиты и конвертеры

Ответов: 33
Просмотров: 41744
LA пишет:
Вот такую ошибку выдаёт:
CODE:
Parse error: syntax error, unexpected ']' in /home/u763321917/public_html/forum/_change_member_title.php on line 21



Точно! Скобки должны быть в другую сторону, вот так:
CODE:
<?php
# _change_member_title.php
/****************************************************************************
Замена званий пользователей форума на русские аналоги, а также количества
постов для получения звания форума ExBB FM 1.0 RC1.

(c) 1Bot aka Strobe, 2013
****************************************************************************/

$t = '/data/membertitles.php';
// Читает файл для возможной записи в него не закрывая файла
$fp = @fopen($t, 'a+') or die("Could not read from the file <strong>$t</strong>");
flock($fp, 2);
$filesize = filesize($t);
$filesize = (0 === $filesize) ? 1 : $filesize-8;
fseek($fp, 8);
$th = fread($fp, $filesize);
$th = unserialize($th);

$th[1]['title'] = 'Новичек'; // Newbie
$th[1]['posts'] = 20;
$th[2]['title'] = 'Начинающий'; // Junior Member
$th[2]['posts'] = 50;
$th[3]['title'] = 'Участник'; // Member
$th[3]['posts'] = 100;
$th[4]['title'] = 'Активный участник'; // Full Member
$th[4]['posts'] = 150;
$th[5]['title'] = 'Суперактивный участник'; // Advanced Member
$th[5]['posts'] = 250;
$th[6]['title'] = 'Прописался на форуме'; // Super Member
$th[6]['posts'] = 500;


fseek ($fp, 0);
ftruncate ($fp, 0);
fwrite($fp, '<?die;?>' . serialize($th));
fflush($fp);
}
flock($fp, 3);
fclose($fp);

unset($th, $fp);
?>
1Bot Отправлено: 15 ноября 2013 — 15:03 • Тема: Описание формата и структуры хранимых данных форума • Форум: Утилиты и конвертеры

Ответов: 33
Просмотров: 41744
CAB пишет:
А не проще в админке отредактировать звания?

Конечно проще! Но был приведен файл с информацией о званиях, поэтому и приведен скрипт изменения
1Bot Отправлено: 15 ноября 2013 — 14:25 • Тема: Описание формата и структуры хранимых данных форума • Форум: Утилиты и конвертеры

Ответов: 33
Просмотров: 41744
CODE:
$t = '/data/membertitles.php';

нужно заменить на
CODE:
$t = './data/membertitles.php';
1Bot Отправлено: 15 ноября 2013 — 14:06 • Тема: Описание формата и структуры хранимых данных форума • Форум: Утилиты и конвертеры

Ответов: 33
Просмотров: 41744
LA пишет:
Как мне звания на русский переделать?

Нет ничего сложного. Ниже скрипт для этого.
ВАЖНО!!! Скрипт нужно сохранить в кодировке win-1251!! в корень форума и вызвать из браузера.
CODE:
<?php
# _change_member_title.php
/****************************************************************************
Замена званий пользователей форума на русские аналоги, а также количества
постов для получения звания форума ExBB FM 1.0 RC1.

(c) 1Bot aka Strobe, 2013
****************************************************************************/

$t = '/data/membertitles.php';
// Читает файл для возможной записи в него не закрывая файла
$fp = @fopen($t, 'a+') or die("Could not read from the file <strong>$t</strong>");
flock($fp, 2);
$filesize = filesize($t);
$filesize = (0 === $filesize) ? 1 : $filesize-8;
fseek($fp, 8);
$th = fread($fp, $filesize);
$th = unserialize($th);

$th[1]['title'] = 'Новичек'; // Newbie
$th[1]]'posts'] = 20;
$th[2]['title'] = 'Начинающий'; // Junior Member
$th[2]]'posts'] = 50;
$th[3]['title'] = 'Участник'; // Member
$th[3]]'posts'] = 100;
$th[4]['title'] = 'Активный участник'; // Full Member
$th[4]]'posts'] = 150;
$th[5]['title'] = 'Суперактивный участник'; // Advanced Member
$th[5]]'posts'] = 250;
$th[6]['title'] = 'Прописался на форуме'; // Super Member
$th[6]]'posts'] = 500;


fseek ($fp, 0);
ftruncate ($fp, 0);
fwrite($fp, '<?die;?>' . serialize($th));
fflush($fp);
}
flock($fp, 3);
fclose($fp);

unset($th, $fp);
?>
1Bot Отправлено: 11 ноября 2013 — 08:17 • Тема: Не понятен смысл одной функции в админцентре • Форум: Настройка форума

Ответов: 6
Просмотров: 4602
NordWest
Отключение BBCode для всего форума может понадобиться для отдачи контента в исходном формате при переносе его в другие источники с поддержкой BBCode.
1Bot Отправлено: 11 ноября 2013 — 08:02 • Тема: Не понятен смысл одной функции в админцентре • Форум: Настройка форума

Ответов: 6
Просмотров: 4602
NordWest пишет:
Ковыряясь в движке временно отключил bbcode (хотел упростить структуру исходного кода страницы, что бы было проще анализировать). После этого увидел что посты стали выглядеть крайне неопрятно. В этой связи вопрос - а зачем вообще на реальном форуме может понадобиться отключать bbcode (ну кроме отладочных случаев). По моему наличие bbcode на форуме это давно стандарт и никто без этой функции форумы не представляет. Или я чего упускаю?

В движке наверное не стоит отключать использование BBCode, а в отдельных сообщениях иногда может понадобиться такое отключение, также редко нужна возможность отключить BBCode в некотором фрагменте сообщения.
1Bot Отправлено: 1 ноября 2013 — 15:26 • Тема: Не получается упорядочить разделы форума • Форум: Решение проблем

Ответов: 53
Просмотров: 34185
gudman пишет:
а ссылки форумов при этом не исправятся на другие?

Ссылки форумов остаются прежними при любом порядке сортировки.
1Bot Отправлено: 1 ноября 2013 — 14:14 • Тема: Не получается упорядочить разделы форума • Форум: Решение проблем

Ответов: 53
Просмотров: 34185
NordWest пишет:
Цитата:
откуда появляются некорректные номера позиций форума в категории?
Всё просто.
Когда на свеже-установленном движке создаем новые форумы, то они получают позицию в виде "xyy", где
"x" - id категории
"yy" - количество уже существующих форумов + 1

Теперь смотрите что происходит.
Допустим мы создали 3 форума в первой категории:
- форум1 позиция 101
- форум2 позиция 102
- форум3 позиция 103

Теперь удалим любой форум, для наглядности например второй.
В итоге имеем:
- форум1 позиция 101
- форум3 позиция 103

А теперь создадим новый форум. Id у него будет 4 а вот позиция 103, т.к. количество форумов уже два. В итоге получаем:
- форум1 позиция 101
- форум3 позиция 103
- форум4 позиция 103

Два форума с одной позицией - вот и пошло поехало дальше ...

Я считаю, что позиция нового форума должна вычисляться всегда строго по одному алгоритму - берём самую нижнюю позицию форума в данной категории и добавляем единицу. В результате любой новый форум на момент создания всегда будет ниже предидущего. Привязки к количесву форумов вообще быть не должно.

Цитата:
Правильнее оставить прежней, а не заменять ее строкой
Не правильно. В предложенном мной варианте только так и не иначе. Я просто ищу последнюю позицию существующего форума и новый ставлю за ним. Что там ещё вычислять?

Нахожу Ваши аргументы и алгоритм полностью корректными, спасибо за исправленный досадный баг!

NordWest пишет:

Кстати код для коррекции кривых файлов allforums.php всё же придется писать - если форум достаточно большой руками там править запаришься.


В Админке / Управление форумами В каждой категории добавить ссылку "Очистить порядок" при нажатии на которую принудительно всем форумам в категории задать порядок 01, 02, ... А после этого "вручную" уже расставить порядок ссылками " Сдвинуть вверх / Сдвинуть вниз".
Еще, как вариант, можно вместо колонки "Сдвинуть вверх / Сдвинуть вниз" Сделать колонку "Порядок сортировки", где вручную вносить номер форума по порядку сортировки.
1Bot Отправлено: 1 ноября 2013 — 13:03 • Тема: Не получается упорядочить разделы форума • Форум: Решение проблем

Ответов: 53
Просмотров: 34185
По сути изменений:
NordWest пишет:
Решение проблемы:
Открываем файл setforums.php и ищем кусок кода
CODE:
foreach ($allforums as $id => $forum) {
if ($forum['catid'] == $catid) $count++;
}
$count++;
$catid2 = ($subforum) ? 0 : $catid;
$position = ($count<10) ? intval($catid2.'0'.$count):intval($catid2.$count);

Т.е. осуществлялся подсчет количества форумов в категории.

NordWest пишет:
который заменяем кодом
CODE:
foreach ($allforums as $id => $forum)
{
if ($forum['catid'] == $catid && $count < $forum['position'])
{$count = $forum['position'];}
}
$count++;
$catid2 = ($subforum) ? 0 : $catid;
$position = $count;

Заменяем поиском наибольшего номера позиции форума в категории.

NordWest пишет:

После этого вновь созданные форумы будут получать корректный индекс позиции, т.е. если производить установку с нуля, то больше проблема проявляться не будет.
Для тех же, у кого проблема есть уже сегодня - нужно ещё дополнительно поправить кривую структуру в файле allforums.php
Отдельный скрипт писать не хочу - мне проще, если кому будет нужно, поправить этот файл руками.


Вопрос остается открытым: откуда появляются некорректные номера позиций форума в категории?
(Добавление)
Последнюю строку
CODE:
$position = ($count<10) ? intval($catid2.'0'.$count):intval($catid2.$count);

Правильнее оставить прежней, а не заменять ее строкой
CODE:
$position = $count;

Страниц (51): В начало « ... 14 15 16 17 [18] 19 20 21 22 ... » В конец

Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0323]     [ ]