Leave a comment

maximus43 January 26 2015, 08:08:35 UTC
Посмотрел я сайт.
Волосы встали дыбом.
Мало того, что у них все реализовано через клиентский JavaScript, так еще и доступ к базе слеплен через прямые селекты, например:

var sql = {
select: select,
from: [
{"a":"application.school_enter"},
"left-join", {"b":"subject.student"}, "on", [{"a":"student"}, "=", {"b":"id"}],
"left-join", {"c":"subject.recipient"}, "on", [{"a":"applicant"}, "=", {"c":"id"}],
"left-join", {"d":"subject.trustee"}, "on", [{"a":"trustee"}, "=", {"d":"id"}],
"left-join", {"e":"spr.human.docType"}, "on", [{"b":"docType"}, "=", {"e":"id"}],
"left-join", {"f":"subject.class"}, "on", [{"a":"class"}, "=", {"f":"id"}],
"left-join", {"g":"subject.territory"}, "on", [{"b":"territory"}, "=", {"g":"id"}],
"left-join", {"h":"spr.human.status"}, "on", [{"c":"status"}, "=", {"h":"id"}],
"left-join", {"i":"spr.human.docType"}, "on", [{"c":"docType"}, "=", {"i":"id"}],
"left-join", {"j":"spr.human.docType"}, "on", [{"d":"docType"}, "=", {"j":"id"}]
],
where: [
{"a":"class"}, "in", options.classes.join (".,.").split (".")
],
order: [
{"f":"name"}, ",", {"b":"surname"}, ",", {"b":"forename"}, ",", {"b":"patronymic"}
]
};
var r = common.execSQL (sql);

Это значит, что я могу подставить любые параметры и тупо выкачать все данные, включая так охраняемые нашей ГосДурой персональные данные.
Программисту надо голову оторвать за такую реализацию. Заказчику - тоже.
Сайт висит, потому что я попробовал отправить 50 запросов в секунду с одной слабой виртуалки. Просто посмотреть устойчивость к векторам атаки. Через минуту понял, что сайт может положить любой школьник с мобильного телефона.
Загрустил и решил больше своими тестами бедных родителей не мучать.
Разработчика и заказчика однозначно надо наказывать.
Напиши об этом безобразии в СМИ.

Reply

boris_izergin January 26 2015, 08:15:57 UTC
У меня недостаточно квалификации, Макс, чтобы технически грамотно изложить проблему (с точки зрения устойчивости сайта и защиты данных). Если ты поможешь правильно сформулировать технические моменты, то я напишу.

Reply

boris_izergin January 26 2015, 08:17:19 UTC
Даже то, что ты написал, для меня непонятно. Т.е. твои выводы для меня неочевидны и я не могу сказать точно - из каких параметров кода они (выводы) следуют.

Reply

maximus43 January 26 2015, 08:31:01 UTC
Напиши то, что тебя волнует, а именно о невозможности пользоваться услугами портала.

Мне, чтобы показать, что сайт дырявый как швейцарский сыр, придется манипулировать входными параметрами в JavaScript функциях и получать данные, которые я не авторизован получать. И дело даже не в том, что у меня нет на это времени, а в том, что ответственные за сайт после получения разноса от начальства, могут выбрать наиболее подлую и наименее конструктивную тактику защиты: типа наш сайт классный, а это какой-то злобный хакер все поломал, а мы не в чем не виноваты.
Я им такого удовольствия не доставлю.
JS библиотеки с комментариями я на всякий случай скачал, чтобы было доказательство, что они в продакшен выкатили файлы с типом debug.

Reply

boris_izergin January 26 2015, 08:55:00 UTC
Понял. Размещу тогда, что в блоге написал.

Reply


Leave a comment

Up