Часто разработчики думают: «Я зашифрую ID объекта в URL, и никто не узнает, что там внутри». Они берут AES, режим CBC и считают задачу выполненной. Но без одной важной детали эта защита превращается в дыру, через которую можно не только читать, но и подделывать данные. Разбираем мой недавний кейс. 🎯 Суть уязвимости Сервер использует AES-CBC для шифрования идентификаторов форм. Проблема в двух фатальных ошибках реализации: Болтливый сервер: Если при дешифровке паддинг некорректен, сервер возвращает ошибку crypto: padding: bad padding. Нет подписи: Отсутствует HMAC. Сервер пытается расшифровать любые пришедшие данные. Это классическая атака Padding Oracle. 🧠 Как это работает В AES-CBC данные делятся на блоки. Последний блок всегда должен иметь правильный «хвост» (паддинг), чтобы длина была кратна размеру блока. Атака выглядит так: Мы берем зашифрованную строку. Мы меняем один байт в шифротексте и отправляем серверу. Сервер пытается расшифровать. Из-за особенностей CBC, где блок XOR