[Levels Ranks] Web Interface

[Levels Ranks] Web Interface 2.0.3

Нет прав для скачивания
Сообщения
416
Реакции
224
Пользователь Lord FEAR разместил новый ресурс:

[Levels Ranks] WEB морда - Веб морда с топом игроков и статистикой

Web часть для плагина Levels Ranks
  • Подключение статистики с нескольких серверов
  • Если подключен 1 сервер - сразу идёт отображение игроков по 50 на страницу.
  • Если подключено более 1 сервера - на главной выведен топ 10 игроков по серверам.
  • На странице игрока отображена полная статистика, аватар, ссылка на профиль steam, звание и название игры (если он в данный момент играет)
  • Поиск по нику и Steam ID
  • Поддержка 18 и 55 званий
  • Выбор колличества...
Узнать больше об этом ресурсе...
 

pracc

Быть, а не казаться.
Сообщения
767
Реакции
258
Скриншотов наделайте.
 

RoadSide Romeo

Модератор
Сообщения
1,433
Реакции
1,197
@Lord FEAR, не кому просто было взяться, а я такое дело не осилю с php. Будем надеяться, что кто-то захочет присоединиться к разработке Веб-Морды.
 

threatsociety

Кибердура ^_^
Сообщения
126
Реакции
12
@Lord FEAR имеется ли более подробная инструкция по установки морды для чайников?

А то вроде заливаю на хост, меняю данные в config
а выходит
Parse error: syntax error, unexpected '[' in /home/data/root/server659662/www/levelranks/include/function.php on line 46
 

RoadSide Romeo

Модератор
Сообщения
1,433
Реакции
1,197
@threatsociety, версию php учли?
--- Добавлено позже ---
Т.к. думаю дело в синтаксисе, судя по сообщению.
 

threatsociety

Кибердура ^_^
Сообщения
126
Реакции
12
@RoadSide Romeo, да понял ,значит на php 5.4 работать не будет, или будем ждать доброго человека, кто напишет такую версию

А так это очень хорошая идея с мордой!
 

RoadSide Romeo

Модератор
Сообщения
1,433
Реакции
1,197
@threatsociety, ещё бы её графически оформить. Кстати идея ввиде Steam-профиля очень не-дурная, правда есть проблема, что блоки съезжают слегка.
 
Сообщения
2
Реакции
1
Установил на веб myarenы Levels Ranks | tpbservers.ru что то как то не так) там php 5.4
Я не так сильно владею php :ab:, 2 варианта это редактировать конфиг :paint3:, то есть для тебя будет вот так
Открываешь index.php Редактируешь НА
<link rel="stylesheet" type="text/css" href="../lvl/include/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../lvl/include/css/bootstrap-theme.css">
<link rel="stylesheet" type="text/css" href="../lvl/include/css/style-steam.css">
Они отвечают за дизайн:paint2:
второй вариант кидаешь в корень хостинга. tpbservers.ru
Не работает поиск , открывает search-go.php :moil:

levelsranks.cstrike73.ru У меня вот как получилось ) потом за варганю дизайн под сайт
 
Последнее редактирование:

Kruzya

Хам и грубиян
Супермодератор
Сообщения
7,664
Реакции
5,919
Немного критики по коду, если позволите. Запихал её в скрытый тег, чтобы любопытные не накосячили на чужих вебках.
[HIDE="200"]Очень бегло пробежался по файлам, заметил вот такую функцию в /include/function.php:
PHP:
function lr_array($page, $serv_id){
   $pdo = connect_lr($serv_id);
   $sql = "SELECT * FROM lvlnew ORDER BY exp DESC LIMIT " . $page . "," . RECORD_ON_PAGE;
   $stmt = $pdo->prepare($sql);
   $stmt->execute();
   $pdo = NULL;
   $test = $stmt->fetchAll();
   return $test;
}
Три претензии к этому куску.
  1. Конкатенация строк. Серьёзно, она происходит медленнее, чем форматирование через функцию sprintf()
  2. Не используется возможность у PDO с подготовкой запросов, которая так же корректно экранизирует все параметры, если надо.
  3. Не корректно закрывается соединение.
Поехали дальше. Решил посмотреть, где эта функция используется, и в каком контексте. Очень быстро откопал использование в /index.php:
PHP:
<?php $data = lr_array($start, $cur_serv); ?>
Так, отлично. Возник сразу вопрос, откуда взялся $start и $cur_serv.
PHP:
/* Назначение cur_serv я очень быстро нашёл в самом начале файла */
$cur_serv = 0;
if (isset($_GET['serv']) && $_GET['serv'] > 0){
  $cur_serv = $_GET['serv'];
}

/* $start уже не стал искать, т.к. сразу нашёл потенциальную брешь в безопасности. */
Так, отлично. $_GET['serv'] не преобразуется в int-параметр. Решил попробовать сделать инъекцию какую-нибудь безопасную. Допустим, поставить ;, чтобы PDO выдал эксепшн, и веб лёг. Для тестов решил использовать официальную демку от автора.
upload_2017-1-14_23-59-20.png
Хорошо, допустим, что-то пошло не так. Инъекция не сработала, на удивление, хотя попытаться стоило. А что если попробовать прописать ID несуществующего сервера?...
upload_2017-1-15_0-3-33.png
УСПЕХ! Словили эксепшн PDO и пару варнингов из-за незадефайненных переменных.

Пересматриваю код ещё раз. Нахожу ещё такой фрагмент.
PHP:
function get_stat($steamid, $serv_id){
   $pdo = connect_lr($serv_id);
   $stmt = $pdo->prepare("SELECT * FROM lvlnew WHERE steam = '$steamid'");
   $stmt->execute();
   $pdo = NULL;
   $stat = $stmt->fetch();
   return $stat;
}
Как я уже выше и писал, автор абсолютно халатно отнёсся к безопасности, и не использовал функционал PDO для корректной подготовки запросов с экранизацией. Этот запрос можно ЛЕГКО УБИТЬ, просто добавив в SteamID одинарную кавычку, а потом добавив ; с нужным запросом. Попробуем? Да, конечно.
upload_2017-1-15_0-1-56.png
УСПЕХ! Словили эксепшн! Снова! Правда, на другую тему, но не суть.
Пробежавшись ещё по коду, заметил, что этой же уязвимости подвержен поиск. НО! Не всё так плохо! Автор решил использовать таки фичу с PDO, но уже на никнеймах.
PHP:
function search_player($serv_id, $search, $metod){
   $pdo = connect_lr($serv_id);
   if($metod == "steam"){
     $stmt = $pdo->query("SELECT steam FROM lvlnew WHERE steam = '$search'");
     <... я не думаю, что стоит продолжать этот фрагмент кода. Сразу перейдём к поиску по никнейму ...>
   }elseif($metod == "name"){
     <...>
     $stmt = $pdo->prepare("SELECT name, steam FROM lvlnew WHERE name = :name");
     $stmt->execute([':name' => $search]);
     <...>
   }else{
     return 0;
   }
}
Проверять не стал, ибо нет смысла.

Вообщем, чисто мой вывод. Эту веб-часть пока что ставить не стоит, т.к. имеются серьёзные проблемы с безопасностью. "Бить" БД через INSERT'ы уже не стал.[/HIDE]
 
Последнее редактирование:
  • Мне нравится
Реакции: R1KO
Сообщения
416
Реакции
224
Пользователь Lord FEAR обновил ресурс [Levels Ranks] Web Interface новой записью:

Фикс поиска

Узнать больше об этом обновлении...
--- Добавлено позже ---
@CrazyHackGUT, критика всегда важна. Всё писалась just for fan за 2 вечера и в основном сипользованы блоки кода с гугло-поиска.
 

Kruzya

Хам и грубиян
Супермодератор
Сообщения
7,664
Реакции
5,919
@Lord FEAR, на TProger'е где-то писали, что 80% кода из Гугла (включая популярный Stack Overflow) подвержены эксплойтам. Лучше писать вручную, и разбираться тоже.
Не забывайте проверять дефайны на существование через функцию defined(), например. А так же корректно экранизировать каждую часть каждого запроса.
 

RoadSide Romeo

Модератор
Сообщения
1,433
Реакции
1,197
@CrazyHackGUT, не желаешь помочь в улучшении сие творения? Просто @Lord FEAR, делал для себя и по-быстрому, а сюда выложил, чтобы добро просто так не пропадало.
 
Сверху