[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"content-post-skolko-stoit-ii-v-prode":3},{"post":4,"related":131,"status":10},{"id":5,"title":6,"slug":7,"excerpt":8,"cover_alt":9,"cover_position":10,"reading_time":11,"seo_title":12,"seo_description":13,"date_published":14,"date_modified":10,"source_lead":10,"tag":15,"blocks":19,"cover":128},"d82b4980-87a8-4007-b7b1-e98ed1181f73","Один вопрос за 7 долларов: сколько на самом деле стоит ИИ в проде","skolko-stoit-ii-v-prode","Один зациклившийся вопрос ушёл в 117 итераций и стоил 6,87 доллара при среднем чеке в доли цента. Разбираю реальные расходы на ИИ в работающей системе: откуда они берутся, кто их на самом деле создаёт и какие четыре ограничителя надо поставить до запуска, а не после.","Барабаны счётчика в быстром вращении и падающая капля",null,3,"Расходы на токены LLM в продакшене: где утекает и какие лимиты ставить","Разбор реальных расходов на ИИ в работающей системе: 117 итераций и 6,87 доллара на один вопрос, 36 процентов бюджета от одного сотрудника. Какие ограничители ставить сразу.","2026-08-27T17:56:48.000Z",{"name":16,"slug":17,"color":18},"Разборы задач","razbory-zadach","#4A4A4A",[20,26,30,35,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111],{"sort":21,"collection":22,"item":23},1,"block_text",{"body":24,"is_lead":25,"footnote":10},"Есть расход, который в бизнес-планах внедрения ИИ обычно отсутствует как класс. Не разработка, не подписка, не сервер, а сами вычисления: каждый ответ модели стоит денег, и стоимость зависит не от прайса, а от того, как система написана.",false,{"sort":27,"collection":22,"item":28},2,{"body":29,"is_lead":25,"footnote":10},"Мы это увидели прямым способом. На одном из проектов однажды утром на общем счёте оставалось 10,79 доллара при расходе 23,76 доллара за предыдущие сутки. То есть меньше чем через сутки всё, что работает на ИИ, просто перестало бы отвечать. Дальше был разбор, и он оказался поучительнее любой теории.",{"sort":11,"collection":31,"item":32},"block_heading",{"heading":33,"level":34},"Откуда берётся расход","h2",{"sort":36,"collection":22,"item":37},4,{"body":38,"is_lead":25,"footnote":10},"Модель считает деньги за токены - куски текста на входе и выходе. Пока вы играете в чате, это копейки. В проде появляются три множителя, каждый из которых способен увеличить счёт в разы.",{"sort":40,"collection":22,"item":41},5,{"body":42,"is_lead":25,"footnote":10},"**Длина контекста.** Агент, который перед ответом подтягивает документы, историю переписки и описание инструментов, отправляет в модель не вопрос пользователя, а несколько страниц текста. Каждый раз.",{"sort":44,"collection":22,"item":45},6,{"body":46,"is_lead":25,"footnote":10},"**Количество шагов.** Современный ИИ-агент не отвечает одним запросом: он думает, зовёт инструмент, читает результат, снова думает. Один диалог - это десяток обращений к модели.",{"sort":48,"collection":22,"item":49},7,{"body":50,"is_lead":25,"footnote":10},"**Фоновые процессы.** Самое коварное. Обработка данных по расписанию, разметка, обогащение записей - работают без человека, круглосуточно и никем не наблюдаются.",{"sort":52,"collection":31,"item":53},8,{"heading":54,"level":34},"Что показал разбор",{"sort":56,"collection":22,"item":57},9,{"body":58,"is_lead":25,"footnote":10},"Первое, и самое неприятное: собственного учёта расходов в системе не было. Считать пришлось постфактум, выковыривая цифры из журналов исполнений - а они хранились две недели. Всё, что старше, не восстановить.",{"sort":60,"collection":22,"item":61},10,{"body":62,"is_lead":25,"footnote":10},"Второе: жгли бюджет не пользователи. Тридцать шесть процентов расхода за две недели пришлось на одного сотрудника, который тестировал функциональность. Ещё двадцать один процент - на фоновую разметку профилей, работавшую по расписанию. То есть больше половины денег ушло не на то, ради чего система построена.",{"sort":64,"collection":22,"item":65},11,{"body":66,"is_lead":25,"footnote":10},"Третье, и главное. У агентных узлов не был выставлен потолок числа шагов. В нормальном режиме агент делает три-пять итераций и отвечает. Один вопрос, на котором агент зациклился, ушёл в 117 итераций и стоил 6,87 доллара. Один. Вопрос. При среднем чеке в доли цента.",{"sort":68,"collection":22,"item":69},12,{"body":70,"is_lead":25,"footnote":10},"Это классическая авария из мира облаков, просто в новой одежде: процесс без ограничителя, работающий за деньги.",{"sort":72,"collection":31,"item":73},13,{"heading":74,"level":34},"Что мы поставили",{"sort":76,"collection":22,"item":77},14,{"body":78,"is_lead":25,"footnote":10},"Ничего сложного - и в этом суть. Все меры дешёвые, но их нужно вводить заранее, а не после того, как счёт кончился.",{"sort":80,"collection":22,"item":81},15,{"body":82,"is_lead":25,"footnote":10},"**Потолок итераций для каждого агента.** Основному ассистенту - 10 шагов, вспомогательным поисковым агентам - 6, фоновой разметке - 5. Если агент не уложился, он останавливается и честно говорит, что не смог, вместо того чтобы крутиться дальше за деньги.",{"sort":84,"collection":22,"item":85},16,{"body":86,"is_lead":25,"footnote":10},"**Уменьшение выдачи поиска.** Агент, ищущий по базе знаний, тянул в контекст по 25-31 фрагменту, а один процесс - 60. Снизили до 15 и 20. Расход упал, а качество ответов - нет: лишние фрагменты не помогали модели, а разбавляли её внимание. Это частая история - \"дадим побольше контекста\" ухудшает ответ и увеличивает счёт одновременно.",{"sort":88,"collection":22,"item":89},17,{"body":90,"is_lead":25,"footnote":10},"**Разделение ключей.** Один ключ на все среды означает, что тестирование на разработческом стенде выедает боевой бюджет. Разные ключи с отдельными лимитами - копеечная организационная мера, которую все откладывают.",{"sort":92,"collection":22,"item":93},18,{"body":94,"is_lead":25,"footnote":10},"**Свой учёт.** Не отчёты провайдера постфактум, а собственная запись: какой процесс, сколько токенов, по какому поводу. Иначе разбор начинается с археологии по журналам с двухнедельной глубиной.",{"sort":96,"collection":31,"item":97},19,{"heading":98,"level":34},"Что с этим делать, если вы только внедряете",{"sort":100,"collection":22,"item":101},20,{"body":102,"is_lead":25,"footnote":10},"Считать надо не \"сколько стоит запрос\", а \"сколько стоит процесс в месяц при ожидаемой нагрузке\". Формула грубая, но рабочая: количество обращений умножить на среднее число шагов агента, умножить на средний объём контекста, умножить на цену модели. Полученную цифру умножить на два - на фоновые задачи и на людей, которые будут это тестировать.",{"sort":104,"collection":22,"item":105},21,{"body":106,"is_lead":25,"footnote":10},"И сразу заложить четыре вещи: лимит на ключ, потолок шагов у каждого агента, отдельные ключи для сред и оповещение при исчерпании порога. Ни одна из них не требует ни дня работы. Их не делают не потому, что дорого, а потому, что на старте расход выглядит как погрешность.",{"sort":108,"collection":31,"item":109},22,{"heading":110,"level":34},"Что забрать себе",{"sort":112,"collection":113,"item":114},23,"block_list",{"list_style":115,"items":116},"dash",[117,120,122,124,126],{"lead":118,"text":119,"highlight":25},"","ИИ в проде - это переменные расходы, а не разовая покупка. Бюджетируется помесячно, как электричество.",{"lead":118,"text":121,"highlight":25},"Ограничитель числа шагов у агента обязателен. Без него один зациклившийся диалог стоит как месяц нормальной работы.",{"lead":118,"text":123,"highlight":25},"Больше контекста не значит лучше ответ. Часто наоборот - и всегда дороже.",{"lead":118,"text":125,"highlight":25},"Основной расход обычно создают не клиенты, а сотрудники и фоновые процессы. Пока вы не считаете отдельно, вы этого не увидите.",{"lead":118,"text":127,"highlight":25},"Если учёта нет, глубина разбора равна сроку хранения журналов у провайдера. Обычно это две недели.",{"id":129,"modified_on":130},"72600d64-5427-4500-b77f-048f887a73b8","2026-08-27T18:12:34.406Z",[132,264,365],{"id":133,"title":134,"slug":135,"excerpt":136,"cover_alt":137,"cover_position":10,"reading_time":36,"seo_title":138,"seo_description":139,"date_published":140,"date_modified":10,"source_lead":10,"tag":141,"blocks":142,"cover":261},"5961ca87-2b6f-4c60-9d4d-3677f34b294f","Претензия за фотографию: как мы заменили 211 картинок на живом сайте","pretenziya-za-fotografiyu","Клиенту пришла досудебная претензия за одну фотографию на сайте: 60 000 рублей за картинку, которую в 2018 году поставил подрядчик. Рассказываю, как мы вместо выплаты и паники заменили 211 изображений нейросетевыми - кадр в кадр, вместе с 1123 миниатюрами, не тронув ни строчки в базе и не сдвинув вёрстку.","Сетка одинаковых кадров на тёмной стене, несколько из них подсвечены","Досудебная претензия за фото на сайте: как заменить картинки без потерь","Кейс: претензия правообладателя за фотографию на корпоративном сайте. Как мы нашли 359 картинок, заменили 211 нейросетевыми кадр в кадр и пересобрали 1123 миниатюры, не тронув вёрстку и SEO.","2026-08-27T18:10:09.000Z",{"name":16,"slug":17,"color":18},[143,146,149,152,155,158,161,164,167,170,173,176,179,182,191,194,197,200,203,206,209,212,215,218,222,226,230,234,238,242,246,249],{"sort":21,"collection":22,"item":144},{"body":145,"is_lead":25,"footnote":10},"Клиенту пришла досудебная претензия: на сайте используется фотография, права на которую принадлежат не ему. Требование - 60 000 рублей за одно изображение на одной странице, со скидкой до 35 000, если заплатить в течение пяти рабочих дней. Фотография попала на сайт в 2018 году вместе с материалами подрядчика, который давно не работает с компанией, и это, к сожалению, не аргумент: отвечает владелец сайта.",{"sort":27,"collection":22,"item":147},{"body":148,"is_lead":25,"footnote":10},"История настолько типовая, что её стоит разобрать целиком. Заканчивается она обычно одинаково: либо платят, либо судятся, либо в панике сносят полсайта и ломают себе вёрстку и поисковый трафик. Мы пошли четвёртым путём.",{"sort":11,"collection":31,"item":150},{"heading":151,"level":34},"Почему \"просто удалить\" не работает",{"sort":36,"collection":22,"item":153},{"body":154,"is_lead":25,"footnote":10},"Первая реакция собственника - убрать картинку и забыть. Она понятна, но закрывает только часть вопроса.",{"sort":40,"collection":22,"item":156},{"body":157,"is_lead":25,"footnote":10},"Во-первых, претензия уже предъявлена, и удаление не отменяет прошлого использования - это разговор для юриста, и его надо вести отдельно. Во-вторых, снятая картинка оставляет дыру: у неё есть размеры, и вёрстка рассчитана на них. В-третьих, и это главное - если одна чужая фотография попала на сайт случайно, там почти наверняка есть и другие. Правообладатели работают системно: находят одно нарушение и проверяют весь домен.",{"sort":44,"collection":22,"item":159},{"body":160,"is_lead":25,"footnote":10},"Поэтому задача формулируется не как \"убрать эту картинку\", а как \"убрать с сайта весь чужой визуальный материал, ничего при этом не сломав\".",{"sort":48,"collection":31,"item":162},{"heading":163,"level":34},"Почему нельзя просто взять новые фотографии",{"sort":52,"collection":22,"item":165},{"body":166,"is_lead":25,"footnote":10},"Два очевидных варианта отпадают сразу.",{"sort":56,"collection":22,"item":168},{"body":169,"is_lead":25,"footnote":10},"Скачать новые фотографии из интернета - это ровно то, с чего началась история. Купить сток - вариант рабочий, но дорогой на трёх сотнях картинок, и он всё равно требует подобрать снимки той же композиции, иначе поедет вёрстка.",{"sort":60,"collection":22,"item":171},{"body":172,"is_lead":25,"footnote":10},"Отдельно стоит сказать про соблазн сделать нейросетью попиксельную копию исходного кадра. Так делать нельзя. Узнаваемая копия остаётся переработкой чужого произведения - это прямо описано в статье 1270 ГК РФ - и требует согласия правообладателя ровно так же, как оригинал. Технически вы вроде бы ничего не скачивали, юридически ничего не изменилось.",{"sort":64,"collection":22,"item":174},{"body":175,"is_lead":25,"footnote":10},"Рабочая формулировка оказалась другой: тот же кадр, снятый заново. Не копия и не новая картинка на ту же тему, а самостоятельный снимок той же сцены - как если бы на то же место приехал другой фотограф.",{"sort":68,"collection":31,"item":177},{"heading":178,"level":34},"Сначала инвентаризация, потом всё остальное",{"sort":72,"collection":22,"item":180},{"body":181,"is_lead":25,"footnote":10},"Найти все картинки сайта сложнее, чем кажется. Одного источника не хватает, их нужно три:",{"sort":76,"collection":113,"item":183},{"list_style":115,"items":184},[185,187,189],{"lead":118,"text":186,"highlight":25},"обход живых страниц - что реально видит посетитель, включая фоны, заданные стилями;",{"lead":118,"text":188,"highlight":25},"база данных - тексты материалов, настройки модулей, меню, медиатека;",{"lead":118,"text":190,"highlight":25},"файлы на диске - поиск по всем папкам с изображениями, включая шаблон и слайдеры.",{"sort":80,"collection":22,"item":192},{"body":193,"is_lead":25,"footnote":10},"Пересечение этих трёх списков дало карту: 359 картинок, у каждой известно, где она встречается, живая она или осталась только в базе, и есть ли у неё дубликаты. Отдельной строкой - 1434 файла, которых нет ни в одном источнике: старьё, забытое прежними подрядчиками. Их мы не трогали вообще. Удалять то, о чём не знаешь, - лучший способ сломать что-нибудь неожиданное.",{"sort":84,"collection":31,"item":195},{"heading":196,"level":34},"Разметка: не всё подряд",{"sort":88,"collection":22,"item":198},{"body":199,"is_lead":25,"footnote":10},"Дальше начинается работа глазами. Я смотрел все картинки контактными листами по 24 штуки и раскладывал на три стопки.",{"sort":92,"collection":22,"item":201},{"body":202,"is_lead":25,"footnote":10},"**Перегенерить** - стоковые постановки: техника на идеальном газоне, человек в каске на фоне заката, руки с чертежом, каталожные снимки приборов, чужие промзоны. Это и есть основной источник риска.",{"sort":96,"collection":22,"item":204},{"body":205,"is_lead":25,"footnote":10},"**Удалить** - демо-контент шаблона, который никто не убрал при запуске: чашки кофе, гамаки, картинки с подписью Sample Image, логотипы платёжных систем, которыми компания не пользуется.",{"sort":100,"collection":22,"item":207},{"body":208,"is_lead":25,"footnote":10},"**Оставить** - собственная полевая съёмка, чертежи, обложки документации, сотрудники, своё оборудование.",{"sort":104,"collection":22,"item":210},{"body":211,"is_lead":25,"footnote":10},"Здесь была ловушка, в которую я попал на первом заходе. Портреты сотрудников, снятые в студии, выглядят как чистый сток - ровный свет, белый фон, дежурная улыбка - и уехали в стопку на замену. Это свои люди, снятые за свои деньги, менять их нельзя. Вывод: спорные кадры показывать владельцу, а не решать за него.",{"sort":108,"collection":31,"item":213},{"heading":214,"level":34},"Где всё ломается",{"sort":112,"collection":22,"item":216},{"body":217,"is_lead":25,"footnote":10},"Самое хрупкое место - формулировка задания для генератора. Первая версия звучала разумно: \"сними эту сцену заново, другой ракурс, другой свет\" плюс описание сюжета из подписи к картинке. Результат был отличный и совершенно негодный. Модель приняла подставленный сюжет за задание и начала дорисовывать: на пустом галечном берегу появились пятеро геодезистов и грузовик, а в другом кадре берег превратился в поле с нефтяными качалками.",{"sort":219,"collection":22,"item":220},24,{"body":221,"is_lead":25,"footnote":10},"Рабочая формулировка получилась занудной и подробной: сохранить композицию, ракурс, границы кадра, все объекты и их положение, количество людей и техники, позы, цвета, свет и время года; ничего не добавлять и не убирать; отличия допускаются только в мелкой фактуре. Скучно - зато на выходе тот же кадр, и вёрстка стоит как стояла.",{"sort":223,"collection":31,"item":224},25,{"heading":225,"level":34},"Миниатюры, о которых все забывают",{"sort":227,"collection":22,"item":228},26,{"body":229,"is_lead":25,"footnote":10},"Заменить исходный файл мало. Движок сайта хранит нарезанные копии каждой картинки под разные места - превью в списке, картинка в шапке, миниатюра в галерее. Если их не пересобрать, посетитель ещё месяцами будет видеть старое изображение в анонсах, а сайт - продолжать нарушение.",{"sort":231,"collection":22,"item":232},27,{"body":233,"is_lead":25,"footnote":10},"На этом сайте таких копий оказалось 1123 штуки. Все пересобраны из новых оригиналов.",{"sort":235,"collection":22,"item":236},28,{"body":237,"is_lead":25,"footnote":10},"Ещё одно правило, которое экономит недели: имя файла не меняется. Тогда база, кэш вёрстки и внешние ссылки не трогаются вообще - в базе данных не правится ни одной строки, а поисковые адреса картинок остаются прежними.",{"sort":239,"collection":31,"item":240},29,{"heading":241,"level":34},"Итог",{"sort":243,"collection":22,"item":244},30,{"body":245,"is_lead":25,"footnote":10},"Проверены все 418 страниц сайта и вся библиотека изображений: 359 картинок в аудите, 211 заменено, 7 удалено, 1123 миниатюры пересобраны. База не тронута, вёрстка не поехала. Полный бэкап базы и папок с картинками сделан до первой правки. Владелец получил документ, где по каждой замене стоят рядом старая и новая картинка - и как отчёт, и как аргумент в переговорах с правообладателем: нарушение прекращено добровольно и в полном объёме, а не только по спорному кадру.",{"sort":247,"collection":31,"item":248},31,{"heading":110,"level":34},{"sort":250,"collection":113,"item":251},32,{"list_style":115,"items":252},[253,255,257,259],{"lead":118,"text":254,"highlight":25},"Проверьте, откуда взялись картинки на вашем сайте. Если ответ \"подрядчик ставил\" - это ваш риск, а не его.",{"lead":118,"text":256,"highlight":25},"Демо-контент шаблона надо вычищать при запуске. Это самая частая находка и самый глупый способ получить претензию.",{"lead":118,"text":258,"highlight":25},"Замена картинки без пересборки миниатюр не считается заменой.",{"lead":118,"text":260,"highlight":25},"Нейросеть здесь - не про творчество, а про повторяемость: задача сформулирована как \"тот же кадр, снятый заново\", и проверяется тем, что посетитель не заметил подмены.",{"id":262,"modified_on":263},"acbf6596-6ae4-44e5-b6c6-54c5326c8011","2026-08-27T18:12:21.832Z",{"id":265,"title":266,"slug":267,"excerpt":268,"cover_alt":269,"cover_position":10,"reading_time":11,"seo_title":270,"seo_description":271,"date_published":272,"date_modified":10,"source_lead":10,"tag":273,"blocks":274,"cover":362},"75251e39-6088-48b3-b70b-62a33464f173","База лежала в открытом доступе пять месяцев, и никто её не взламывал","utechka-bazy-cherez-bekapy","Полные копии базы с заказами и паролями клиентов лежали в открытой части сайта пять месяцев и скачивались по прямой ссылке. Признаков взлома не было ни одного - и это самое интересное в этой истории. Разбираю, как утекают базы через рабочий мусор и как проверить свой сайт.","Приоткрытая дверь хранилища, полоса света на рядах коробок, незапертый замок","Утечка базы сайта через открытые бэкапы: как проверить свой сайт","Кейс аудита: полные копии базы с персональными данными клиентов скачивались с сайта по прямой ссылке. Что искать, как проверять и почему это не взлом, а рабочий мусор.","2026-08-27T18:03:48.000Z",{"name":16,"slug":17,"color":18},[275,278,281,284,287,290,293,296,299,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,349],{"sort":21,"collection":22,"item":276},{"body":277,"is_lead":25,"footnote":10},"Собственник спросил осторожно: \"У нас же не могли слить базу?\" Повод был - месяцем раньше на одном из его сайтов мы уже находили открытый архив. Я проверил все сайты, до которых у него есть отношение. Результат: на соседнем сайте лежали две полные копии базы данных, доступные любому человеку в интернете, - самой старой было пять месяцев.",{"sort":27,"collection":22,"item":279},{"body":280,"is_lead":25,"footnote":10},"Признаков взлома не было ни одного. Никаких подозрительных файлов, чужого кода и следов правок. Данные просто лежали так, что взламывать ничего не требовалось.",{"sort":11,"collection":31,"item":282},{"heading":283,"level":34},"Утечка - это чаще всего не взлом",{"sort":36,"collection":22,"item":285},{"body":286,"is_lead":25,"footnote":10},"В голове у большинства владельцев сайтов утечка выглядит как хакер в толстовке. На практике типовой сценарий скучнее и обиднее: база утекает через рабочий мусор, который оставили свои же.",{"sort":40,"collection":22,"item":288},{"body":289,"is_lead":25,"footnote":10},"Плагин резервного копирования складывает копии базы в открытую часть сайта и хранит их месяцами. Подрядчик перенёс сайт и забыл убрать архив с установщиком. Кто-то поставил панель управления базой, чтобы разово посмотреть таблицу, и она осталась. Каждый шаг по отдельности выглядит безобидно, а вместе это готовый способ скачать всё содержимое компании, зная только имя файла.",{"sort":44,"collection":22,"item":291},{"body":292,"is_lead":25,"footnote":10},"Именно так выглядели три находки на этом аудите.",{"sort":48,"collection":22,"item":294},{"body":295,"is_lead":25,"footnote":10},"**Копии базы в открытой части сайта.** Две штуки, от марта и апреля, плюс архивы самого сайта на 162 мегабайта. Внутри - заказы клиентов с персональными данными, пароли всех пользователей сайта (зашифрованные, но подбираются офлайн и не спеша), ключи доступа интеграций. Рядом лежала копия служебного файла с логином и паролем от базы.",{"sort":52,"collection":22,"item":297},{"body":298,"is_lead":25,"footnote":10},"**Архив сайта на 876 мегабайт** на копии другого сайта - со всеми файлами и базой внутри. Такой архив разворачивается в один клик где угодно: у того, кто его скачал, появляется полная рабочая копия чужого бизнеса.",{"sort":56,"collection":22,"item":300},{"body":301,"is_lead":25,"footnote":10},"**Открытая панель управления базой** версии 2013 года на боевом сайте. Пароль она спрашивает, но для такой старой версии публично известны способы обхода, и это удобная точка для перебора.",{"sort":60,"collection":22,"item":303},{"body":304,"is_lead":25,"footnote":10},"Отдельно неприятная деталь: формально защита стояла. В папке с копиями лежал файл-запрет на скачивание - но конкретный хостинг для таких путей его игнорировал. По конфигу всё выглядело закрытым, по факту файлы отдавались наружу. Это ровно тот случай, когда проверять надо не настройку, а поведение.",{"sort":64,"collection":31,"item":306},{"heading":307,"level":34},"Диск - это не то же самое, что интернет",{"sort":68,"collection":22,"item":309},{"body":310,"is_lead":25,"footnote":10},"Главная методическая ошибка в таких проверках - искать файлы на сервере и по факту находки объявлять утечку. Файл может лежать на диске и не отдаваться наружу, а может лежать в неожиданном месте и прекрасно скачиваться.",{"sort":72,"collection":22,"item":312},{"body":313,"is_lead":25,"footnote":10},"Поэтому порядок такой: сначала поиск по диску (все архивы, дампы, файлы с расширениями bak, old, save, остатки установщиков), затем каждый найденный файл проверяется обычным запросом из интернета. Вывод делается только по коду ответа сервера. И отдельно - обратная проверка: типовые адреса запрашиваются снаружи вслепую, даже если на диске ничего не нашлось, потому что доступа к диску может и не быть.",{"sort":76,"collection":22,"item":315},{"body":316,"is_lead":25,"footnote":10},"Смежные векторы, про которые забывают: доступен ли сервер базы данных напрямую из интернета (на этом хостинге - да, и пользователь базы принимал подключение с любого адреса, то есть добывшему пароль сайт уже не нужен), нет ли следов веб-шелла, что лежит на соседних сайтах того же аккаунта.",{"sort":80,"collection":31,"item":318},{"heading":319,"level":34},"Сколько это было открыто и что теперь доказывать",{"sort":84,"collection":22,"item":321},{"body":322,"is_lead":25,"footnote":10},"Копии базы лежали с начала марта - пять месяцев. Логи доступа за такой срок хостинг не хранит, поэтому доказать, скачивал кто-то эти файлы или нет, невозможно в принципе.",{"sort":88,"collection":22,"item":324},{"body":325,"is_lead":25,"footnote":10},"Это важный практический вывод, а не формальность. Если в базе есть персональные данные клиентов, невозможность доказать отсутствие утечки означает, что исходить придётся из худшего: считать данные скомпрометированными, менять ключи и пароли, оценивать обязанности по 152-ФЗ. Разница между \"у нас была дыра\" и \"у нас была утечка\" стоит дорого, и определяется она наличием логов, которых обычно нет.",{"sort":92,"collection":31,"item":327},{"heading":328,"level":34},"Правило, которое я соблюдаю жёстко: аудит ничего не меняет",{"sort":96,"collection":22,"item":330},{"body":331,"is_lead":25,"footnote":10},"Ни одного удаления, переноса или изменения прав на сайте клиента без его отдельного согласия. Даже когда дыра очевидна, даже когда правка обратима.",{"sort":100,"collection":22,"item":333},{"body":334,"is_lead":25,"footnote":10},"Причина простая. На сайте работает не только тот, кто заказал аудит: есть SEO-подрядчик, прежние разработчики, иногда сам собственник. Той самой панелью управления базой, судя по датам, кто-то регулярно пользовался. Молча снести её - значит сломать чужой рабочий процесс, а объясняться будет заказчик.",{"sort":104,"collection":22,"item":336},{"body":337,"is_lead":25,"footnote":10},"Логика такая: находки, потом отчёт, потом решение владельца, и только потом правки - с бэкапом до изменения. Файлы, к слову, были открыты уже пять месяцев; час до ответа собственника ничего не менял.",{"sort":108,"collection":31,"item":339},{"heading":340,"level":34},"Что было на выходе",{"sort":112,"collection":22,"item":342},{"body":343,"is_lead":25,"footnote":10},"Два документа. Технический разбор - что где лежит, каким запросом это проверяется, что предлагается сделать. И отчёт собственнику человеческим языком: что нашли, чем это грозит, как давно открыто, что делать в порядке важности и сколько это займёт (получилось около трёх часов работы).",{"sort":219,"collection":22,"item":345},{"body":346,"is_lead":25,"footnote":10},"Плюс один вопрос, на который может ответить только он: панелью пользуются подрядчики - убираем сразу или сначала предупреждаем.",{"sort":223,"collection":31,"item":348},{"heading":110,"level":34},{"sort":227,"collection":113,"item":350},{"list_style":115,"items":351},[352,354,356,358,360],{"lead":118,"text":353,"highlight":25},"Проверьте, куда ваш плагин бэкапов кладёт копии. Если внутрь сайта - у вас уже открытая база, вопрос только в том, нашли её или нет.",{"lead":118,"text":355,"highlight":25},"После любого переезда сайта пройдитесь по остаткам: архивы, установщики, папки с названием installation, копии конфигов.",{"lead":118,"text":357,"highlight":25},"Панель управления базой в открытой части сайта - это не удобство, это второй вход.",{"lead":118,"text":359,"highlight":25},"Наличие файла-запрета не равно закрытому доступу. Проверяйте запросом из интернета, а не глазами по конфигу.",{"lead":118,"text":361,"highlight":25},"Если персональные данные клиентов могли утечь, а логов нет - юридически вы в позиции \"докажите, что не утекли\". Логи стоят дешевле, чем эта позиция.",{"id":363,"modified_on":364},"4c65f02c-1ce3-4f81-bddd-7537e050386b","2026-08-27T18:12:31.902Z",{"id":366,"title":367,"slug":368,"excerpt":369,"cover_alt":370,"cover_position":10,"reading_time":36,"seo_title":371,"seo_description":372,"date_published":373,"date_modified":10,"source_lead":10,"tag":374,"blocks":375,"cover":500},"de032c5c-0df8-45d9-9d9e-7405da29fc47","152-ФЗ для маленького сайта: что реально нужно сделать","152-fz-dlya-malenkogo-sayta","Сайт с одной формой \"оставьте телефон\" - это уже обработка персональных данных. Разбираю минимальный рабочий набор для маленького сайта: отдельное согласие, фиксация факта, аналитика после согласия, внутренние акты и вторая форма уведомления в РКН, о которой почти все забывают.","Светящаяся галочка над ровной стопкой листов","152-ФЗ для сайта с формой заявки: минимальный рабочий набор","Что нужно сделать сайту с одной формой обратной связи, чтобы соответствовать 152-ФЗ: отдельное согласие, фиксация факта, метрика после согласия, уведомление РКН и трансграничная передача.","2026-08-27T17:28:48.000Z",{"name":16,"slug":17,"color":18},[376,379,382,385,388,391,394,397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,442,445,448,460,463,466,469,472,475,478,481,484],{"sort":21,"collection":22,"item":377},{"body":378,"is_lead":25,"footnote":10},"Сайт с одной формой \"оставьте телефон, мы перезвоним\" - это уже обработка персональных данных. Со всем, что из этого следует: политикой, согласием, обязанностями и уведомлением в Роскомнадзор. Штрафы за нарушения в последние годы выросли до величин, которые для малого бизнеса уже чувствительны.",{"sort":27,"collection":22,"item":380},{"body":381,"is_lead":25,"footnote":10},"Я недавно приводил в порядок собственный сайт: не по чек-листу из интернета, а сверяя, что сайт реально делает с данными, с тем, чего требует закон. Разрыв нашёлся. Рассказываю, из чего состоит минимальный рабочий набор, - для тех, у кого сайт-визитка с формой, а не отдел комплаенса.",{"sort":11,"collection":22,"item":383},{"body":384,"is_lead":25,"footnote":10},"Оговорка: я инженер, а не юрист. Ниже - инженерная часть работы. Формулировки документов под конкретный бизнес стоит показать юристу, это недорого.",{"sort":36,"collection":31,"item":386},{"heading":387,"level":34},"Согласие - отдельный документ, а не абзац в политике",{"sort":40,"collection":22,"item":389},{"body":390,"is_lead":25,"footnote":10},"Самая частая ошибка: чекбокс \"согласен с политикой конфиденциальности\". Политика - это документ о том, как вы обрабатываете данные, он информационный. Согласие - это волеизъявление человека, документ другого жанра, и он должен быть отдельным.",{"sort":44,"collection":22,"item":392},{"body":393,"is_lead":25,"footnote":10},"У меня их теперь два разных: политика по своему адресу и согласие на обработку по своему. Чекбокс ссылается на согласие.",{"sort":48,"collection":22,"item":395},{"body":396,"is_lead":25,"footnote":10},"Второе: согласие на обработку заявки и согласие на рассылку - разные вещи, и складывать их в одну галочку нельзя. Первая обязательна для отправки формы, вторая - отдельная и необязательная.",{"sort":52,"collection":31,"item":398},{"heading":399,"level":34},"Галочка должна стоять там, где начинается сбор",{"sort":56,"collection":22,"item":401},{"body":402,"is_lead":25,"footnote":10},"У меня на сайте многошаговая форма: на первом шаге человек описывает задачу, на втором оставляет контакт. Чекбокс изначально стоял на втором шаге - рядом с телефоном, как у всех.",{"sort":60,"collection":22,"item":404},{"body":405,"is_lead":25,"footnote":10},"Это было неправильно. Текст задачи - тоже данные, и они улетают на сервер уже на первом шаге. Галочка переехала на первый шаг и теперь гейтит саму отправку, а не только контакт.",{"sort":64,"collection":22,"item":407},{"body":408,"is_lead":25,"footnote":10},"Общее правило: согласие берётся до первой передачи данных, а не перед последней.",{"sort":68,"collection":31,"item":410},{"heading":411,"level":34},"Проверять согласие должен сервер",{"sort":72,"collection":22,"item":413},{"body":414,"is_lead":25,"footnote":10},"Галочка на странице - это интерфейс. Отправить запрос в обход интерфейса может кто угодно, и тогда данные попадут в базу без согласия, а вы об этом не узнаете.",{"sort":76,"collection":22,"item":416},{"body":417,"is_lead":25,"footnote":10},"Поэтому проверка дублируется на сервере: нет отметки о согласии - запрос отклоняется. Это десять строк кода и принципиальная разница в том, что вы сможете утверждать про свою базу.",{"sort":80,"collection":31,"item":419},{"heading":420,"level":34},"Факт согласия надо зафиксировать",{"sort":84,"collection":22,"item":422},{"body":423,"is_lead":25,"footnote":10},"Согласие, которое нельзя доказать, юридически бесполезно. Значит, вместе с заявкой сохраняется: адрес, с которого пришёл запрос, браузер и, главное, версия документа, с которым человек согласился.",{"sort":88,"collection":22,"item":425},{"body":426,"is_lead":25,"footnote":10},"Последнее часто забывают. Текст согласия со временем меняется, а доказывать придётся не то, что человек согласился вообще, а с чем именно он согласился в тот день.",{"sort":92,"collection":22,"item":428},{"body":429,"is_lead":25,"footnote":10},"Отдельно я убрал автоматическую простановку отметки о согласии на рассылку при любом контакте с человеком - раньше она ставилась всегда, просто потому, что так было проще написать.",{"sort":96,"collection":31,"item":431},{"heading":432,"level":34},"Аналитика - только после согласия",{"sort":100,"collection":22,"item":434},{"body":435,"is_lead":25,"footnote":10},"Счётчик посещаемости грузится до того, как человек что-то нажал, и начинает собирать данные о нём сразу. Это отдельный сюжет, и решается он честной плашкой: счётчик не запускается, пока согласия нет.",{"sort":104,"collection":22,"item":437},{"body":438,"is_lead":25,"footnote":10},"Ключевая деталь - в плашке должна быть кнопка \"Отклонить\". Плашка с единственной кнопкой \"Принять\" согласием не является: выбора нет.",{"sort":108,"collection":22,"item":440},{"body":441,"is_lead":25,"footnote":10},"Сам сервис аналитики при этом надо честно назвать в политике обработчиком по поручению - он обрабатывает данные ваших посетителей по вашему заданию.",{"sort":112,"collection":31,"item":443},{"heading":444,"level":34},"Документы, которые никто не видит, но которые должны быть",{"sort":219,"collection":22,"item":446},{"body":447,"is_lead":25,"footnote":10},"Кроме публичных политики и согласия, есть внутренние документы. Их не публикуют, они лежат в папке и предъявляются при проверке:",{"sort":223,"collection":113,"item":449},{"list_style":115,"items":450},[451,454,457],{"lead":452,"text":453,"highlight":25},"Акт оценки вреда и акт определения уровня защищённости.","Для сайта-визитки уровень обычно четвёртый, самый мягкий, но зафиксировать это надо письменно, с перечнем лиц, допущенных к данным. Если вы работаете один - в перечне будет одна фамилия, и это нормально.",{"lead":455,"text":456,"highlight":25},"Памятка на случай утечки.","Закон даёт 24 часа на уведомление регулятора о факте инцидента и 72 часа на результаты внутреннего расследования. В момент инцидента искать, куда и что писать, поздно. Памятка занимает страницу.",{"lead":458,"text":459,"highlight":25},"Регламент чистки базы.","Данные нельзя хранить вечно: истёк срок - удаляются, с составлением акта. Даже если реальная чистка у вас случится через три года, регламент должен быть написан сейчас.",{"sort":227,"collection":31,"item":461},{"heading":462,"level":34},"Уведомление в Роскомнадзор - и вторая форма, о которой забывают",{"sort":231,"collection":22,"item":464},{"body":465,"is_lead":25,"footnote":10},"Уведомление о намерении обрабатывать персональные данные подаётся через портал регулятора. Это отдельная процедура, требующая подтверждённой учётной записи, - её делает лично владелец бизнеса, подрядчик может только подготовить текст.",{"sort":235,"collection":22,"item":467},{"body":468,"is_lead":25,"footnote":10},"А вот деталь, на которой я сам сначала ошибся. Если данные передаются за границу - а это касается всех, кто использует зарубежные сервисы, - трансграничная передача требует **отдельного** уведомления по своей форме. Соответствующий раздел в обычном уведомлении его не заменяет. Подавать надо до начала передачи, а в страны без адекватной защиты - только после истечения срока рассмотрения.",{"sort":239,"collection":22,"item":470},{"body":471,"is_lead":25,"footnote":10},"Здесь же полезно честно ответить себе на вопрос, что именно уезжает наружу. У меня, например, текст задачи уходит в языковую модель, а контактные данные - нет: это разные ответы, и в уведомлении они выглядят по-разному.",{"sort":243,"collection":31,"item":473},{"heading":474,"level":34},"Побочная находка",{"sort":247,"collection":22,"item":476},{"body":477,"is_lead":25,"footnote":10},"Пока я разбирался, что вообще происходит с данными, нашлась настоящая утечка - и совсем не там, где я её искал. Забытый сценарий автоматизации, оставшийся от закрытого проекта, продолжал работать и отдавал наружу тестовую запись с персональными данными. Формально он был выключен, фактически - отвечал.",{"sort":250,"collection":22,"item":479},{"body":480,"is_lead":25,"footnote":10},"Это лучший аргумент в пользу такой ревизии. Соответствие закону - приятный побочный эффект; главное - вы наконец узнаёте, что ваша система на самом деле делает с чужими данными.",{"sort":482,"collection":31,"item":483},33,{"heading":110,"level":34},{"sort":485,"collection":113,"item":486},34,{"list_style":115,"items":487},[488,490,492,494,496,498],{"lead":118,"text":489,"highlight":25},"Согласие и политика - два разных документа. Одна галочка \"согласен с политикой\" не закрывает вопрос.",{"lead":118,"text":491,"highlight":25},"Согласие берётся до первой отправки данных, а не перед последней.",{"lead":118,"text":493,"highlight":25},"Проверяйте согласие на сервере и сохраняйте версию документа, с которым человек согласился.",{"lead":118,"text":495,"highlight":25},"Плашка про cookie без кнопки \"Отклонить\" бессмысленна.",{"lead":118,"text":497,"highlight":25},"Трансграничная передача - отдельное уведомление, до начала передачи.",{"lead":118,"text":499,"highlight":25},"Начните не с документов, а с инвентаризации: какие данные вы собираете, где они лежат и кому уезжают. Половина работы окажется в том, чтобы перестать собирать лишнее.",{"id":501,"modified_on":502},"5735faa8-229b-403a-8d49-f32e2eb3592b","2026-08-27T18:13:00.511Z"]