#1084 closed дефект (готово)
Система обслуживает запросы без аутентификации
Reported by: | alx | Owned by: | Denis_N |
---|---|---|---|
Priority: | critical | Component: | БД изделий АДС |
Keywords: | Cc: |
Description
Выполняю curl 'https://r2.adc-line.ru/base/main.php'
- получаю в ответ HTML страницу с запрошенными данными (то есть со списком изделий) из БД!
Ожидал получить отказ с предложением аутентифицироваться.
Change History (6)
comment:1 by , 22 months ago
comment:2 by , 22 months ago
Попробовал запросить другую страницу - например mismatch.php: curl -d 'serial=F00126' -d 'nextbtn=Далее' -D- 'https://r2.adc-line.ru/base/mismatch.php'
Опять получил в ответ сразу два HTML документа в теле ответа. Второй содержит историю запрошенного изделия, как если бы обращался аутентифицированный пользователь:
<html><head> <title></title> <meta http-equiv="refresh" content="0; url=http://localhost/index.php?error=1"> </head> <body> </body> </html><!DOCTYPE html> <html> <head> <meta charset=utf-8"> <link rel="icon" href="images/favicon.ico"> <link rel="stylesheet" href="css/main.css?random=@Environment.TickCount"> <link rel="stylesheet" href="css/jquery-ui.css"> <script src="js/jquery.js"></script> <script src="js/script.js"></script> <script src="js/jquery-ui.js"></script> <title>Несоответствия</title> </head> <body> <div class="header"><div id = "openSerialSearchBtn">Поиск по №<br>(Ctrl+?)</div><div id = "serialSearch" style = "display: none;"><div class = "filters"><label class = "filterName">Серийный номер</label><label class="filterInput"> <input type = "text" id = "serialSearchInp"></label><a id ="serialSearchBtn" href="main.php?" target="_blank" <button type = "button" name = "maxrows">Перейти на главную<br>(Enter)</button></a> </div></div><div class="dropdown"><button class="dropbtn" align="center"><img id = "menu" src = "images/menu.png"></button><div class="dropdown-content"><a href="index.php">Авторизоваться</a></div></div><a href="main.php" style = "position: absolute;"><img id="adc" src="images/adc.png" align="center"></a><div id="worker"><p>r162</p><p><img id="exit"></p></div></div> <div id="forma"> <form action="mismatch.php" method="post" align="left" class="form1"> <p id="priem_name" align="center">Несоответствия</p> <div class="inputLabelCreateOrder" style = "display: inline-flex;"> <div class="inputLabelCreateOrder" style = "display: inline-flex;"><div class = "inputLabel"><label>Серийный номер</label><input type="text" name="serial" class = "focusOnloadPage" maxlength="10" oninput="hideotk()" value = "F00126" required/> </div></div> </div> <input type="submit" id="nextbtn" name = "nextbtn" value="Далее" /> <div id = "contentOtk" style = "margin-top:2em;"><table class="tableOtk" ><caption>SM-02 Плата</caption><tr><td>Время / Дата</td><td>Тип записи</td><td>Статус</td><td>Сотрудник</td><td>Комментарий</td></tr><tr><td>31-01-2023 / 14:32</td><td>Тестирование</td><td>Успешно</td><td>xxxxxxxx</td><td>Пусто</td></tr></table><label style = "margin-top: 1em" >Комментарий</label><textarea class="comment" type="text" name="comment"></textarea><input type="submit" id="savedata" name = "savebtn" value="Сохранить данные"/> </div> </form> </div> <div class="footer"><p>Для служебного пользования сотрудниками АДС</p></div> <script>
Имя тестировавшего сотрудника я заменил на "xxxxxxxx".
Видимо, проверка аутентификации сломана не на одной отдельно взятой странице, а глобально. Предполагаю, что на данный момент кто угодно может прислать абсолютно любой запрос, и этот запро будет выполнен, как если бы исходил от аутентифицированного пользователя.
follow-up: 5 comment:3 by , 21 months ago
comment:4 by , 21 months ago
Resolution: | → готово |
---|---|
Status: | new → closed |
follow-up: 6 comment:5 by , 21 months ago
Replying to Denis_N:
Было исправлено в r166/base.
В сообщении коммита об этом ничего не сказано...
Если сравнить r160/base и r166/base, то в 160-й ревизии видно, что отсутствует функция die() в функции error403() в main.lib.php
Насколько я вижу, в changeset:166/base die
не добавлялось. Оно там и так уже было...
comment:6 by , 20 months ago
Replying to alx:
В сообщении коммита об этом ничего не сказано...
Насколько я вижу, в changeset:166/base
die
не добавлялось.
Denis_N, не хочешь это прокомментировать? Все выглядит так, что changeset:166/base ты указал ошибочно...
Дополнительная информация. В ответ сервер выдает сразу два документа HTML! Первый - "пустой" с
<meta http-equiv="refresh" content="0; url=http://localhost/index.php?error=1">
(см. #1083), а сразу за ним - второй, уже с данными, как если бы запрос был от аутентифицированного пользователя: