Посмотрел я сайт. Волосы встали дыбом. Мало того, что у них все реализовано через клиентский JavaScript, так еще и доступ к базе слеплен через прямые селекты, например:
Это значит, что я могу подставить любые параметры и тупо выкачать все данные, включая так охраняемые нашей ГосДурой персональные данные. Программисту надо голову оторвать за такую реализацию. Заказчику - тоже. Сайт висит, потому что я попробовал отправить 50 запросов в секунду с одной слабой виртуалки. Просто посмотреть устойчивость к векторам атаки. Через минуту понял, что сайт может положить любой школьник с мобильного телефона. Загрустил и решил больше своими тестами бедных родителей не мучать. Разработчика и заказчика однозначно надо наказывать. Напиши об этом безобразии в СМИ.
У меня недостаточно квалификации, Макс, чтобы технически грамотно изложить проблему (с точки зрения устойчивости сайта и защиты данных). Если ты поможешь правильно сформулировать технические моменты, то я напишу.
Даже то, что ты написал, для меня непонятно. Т.е. твои выводы для меня неочевидны и я не могу сказать точно - из каких параметров кода они (выводы) следуют.
Напиши то, что тебя волнует, а именно о невозможности пользоваться услугами портала.
Мне, чтобы показать, что сайт дырявый как швейцарский сыр, придется манипулировать входными параметрами в JavaScript функциях и получать данные, которые я не авторизован получать. И дело даже не в том, что у меня нет на это времени, а в том, что ответственные за сайт после получения разноса от начальства, могут выбрать наиболее подлую и наименее конструктивную тактику защиты: типа наш сайт классный, а это какой-то злобный хакер все поломал, а мы не в чем не виноваты. Я им такого удовольствия не доставлю. JS библиотеки с комментариями я на всякий случай скачал, чтобы было доказательство, что они в продакшен выкатили файлы с типом debug.
Волосы встали дыбом.
Мало того, что у них все реализовано через клиентский 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
Reply
Reply
Мне, чтобы показать, что сайт дырявый как швейцарский сыр, придется манипулировать входными параметрами в JavaScript функциях и получать данные, которые я не авторизован получать. И дело даже не в том, что у меня нет на это времени, а в том, что ответственные за сайт после получения разноса от начальства, могут выбрать наиболее подлую и наименее конструктивную тактику защиты: типа наш сайт классный, а это какой-то злобный хакер все поломал, а мы не в чем не виноваты.
Я им такого удовольствия не доставлю.
JS библиотеки с комментариями я на всякий случай скачал, чтобы было доказательство, что они в продакшен выкатили файлы с типом debug.
Reply
Reply
Leave a comment