[{"data":1,"prerenderedAt":1199},["ShallowReactive",2],{"blog-uk-vibe-coding-security-scanners-compared":3,"blog-index-uk":956},{"id":4,"title":5,"body":6,"category":909,"cover":910,"coverAlt":911,"description":912,"draft":913,"extension":914,"faq":915,"image":934,"keywords":935,"meta":944,"navigation":945,"ogTitle":946,"path":947,"published":948,"seo":949,"stem":950,"tldr":951,"updated":948,"__hash__":955},"blog_uk\u002Fblog\u002Fvibe-coding-security-scanners-compared.md","Сканери безпеки для vibe coding у порівнянні, наш теж",{"type":7,"value":8,"toc":893},"minimark",[9,13,16,24,37,42,45,51,63,69,77,83,87,90,276,279,282,286,289,420,423,427,430,433,444,451,466,471,474,477,480,483,491,495,498,501,509,515,519,522,706,714,717,728,732,735,756,759,763,766,781,784,804,807,811,814,851,855,878],[10,11,12],"p",{},"Ви набрали «найкращий сканер безпеки для vibe coding» у пошуку, і перше\nпорівняння, що повернулося, написав один із сканерів. Застереження там було, у\nрядку під таблицею.",[10,14,15],{},"Reeve — один із десяти інструментів нижче, тож ця сторінка має ту саму проблему.\nReeve це безкоштовний сканер безпеки, який читає живу URL-адресу секунд за\nдвадцять без облікового запису, і платна підписка, що далі наглядає за\nзастосунком і тримає перевірену копію його бази даних. Що ми можемо зробити з\nцим конфліктом, це показати роботу. Кожен рядок прочитано на сайті самого\nпродавця 7 вересня 2026 року, кожну ціну надруковано, зокрема нашу, нічого тут\nне є оплаченим розміщенням, а ближче до кінця стоїть розділ, що називає три\nроботи на цій сторінці, яких Reeve не виконує зовсім.",[10,17,18,19,23],{},"Ось що порівняння від виробників лишають поза кадром. ",[20,21,22],"strong",{},"Більшість цих\nінструментів читає ту саму поверхню."," Вони завантажують ваш живий застосунок,\nзабирають JavaScript, який він віддає браузеру, читають заголовки, що прийшли з\nним, ставлять вашій базі даних питання, яке міг би поставити будь-який\nнезнайомець, і записують, що відповіло. Сканування це та частина, яку вони мають\nспільною. Розділяють їх три питання:",[25,26,27,31,34],"ol",{},[28,29,30],"li",{},"Чи вміє він відрізнити ключ, якому місце у вашому застосунку, від того, якому не місце?",[28,32,33],{},"Чи каже він, коли перевірка не отримала відповіді?",[28,35,36],{},"Чи стається щось того дня, коли ваших даних справді не стало?",[38,39,41],"h2",{"id":40},"який-сканер-безпеки-для-vibe-coding-найкращий","Який сканер безпеки для vibe coding найкращий?",[10,43,44],{},"Той, що вміє прочитати поверхню, на якій сидить ваша проблема. Це питання\nвпорядковує список швидше за будь-який перелік функцій і ділить десять\nінструментів на три групи.",[10,46,47,50],{},[20,48,49],{},"Інструменти, яким ви даєте URL-адресу."," SafeToShip, LaunchGuard, Vibe App\nScanner, VibeEval, SupaExplorer і Reeve. Ви вставляєте адресу, вони завантажують\nваш застосунок так, як зробив би відвідувач, і за хвилину чи дві повертається\nзвіт. Нічого встановлювати, жодного облікового запису підключати, жодного доступу\nдо чогось вашого.",[10,52,53,56,57,62],{},[20,54,55],{},"Інструменти, яким ви даєте свій код."," CheckVibe читає живу URL-адресу, а ще\nпід’єднується до репозиторію GitHub, якщо ви дозволите. Читання вихідного коду\nвідповідає на питання, яких сканування URL поставити не може, і приносить власну\nсліпу зону, тому\n",[58,59,61],"a",{"href":60},"\u002Fblog\u002Fvibe-coding-security-scanner","чого не бачить сканування URL"," варто\nпрочитати, перш ніж платити за будь-що з двох.",[10,64,65,68],{},[20,66,67],{},"Інструменти, яким ви даєте обліковий запис Supabase."," Власний Security Advisor\nвід Supabase живе у вашій панелі та читає конфігурацію проєкту. Defencecore\nпросить доступ лише на читання до журналів одного проєкту й далі за ними\nнаглядає. Supabomb це інструмент командного рядка з відкритим кодом, написаний\nдля тих, хто робить це фахово. Усі три дістають зсередини облікового запису до\nречей, яких не бачить ніщо поставлене поза вашим застосунком.",[10,70,71,72,76],{},"Якщо ви на Supabase і жодного разу не відкривали Security Advisor, відкрийте його\nраніше, ніж платитимете комусь на цій сторінці. Він безкоштовний, працює сам і\nпише власникові проєкту, коли з’являється таблиця з вимкненим Row Level Security.\nВін також нікому тут не конкурент: він читає вашу конфігурацію, тоді як\nсканування читає, що ваша конфігурація робить незнайомцям, і\n",[58,73,75],{"href":74},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","ці двоє розходяться"," частіше, ніж\nбудь-хто очікує.",[78,79],"diagram",{"alt":80,"caption":81,"src":82},"Сітка три на три. Кожен рядок починається з того, що вручають інструменту: глобус, пара кутових дужок, ключ. Кожен стовпчик це поверхня, яку він міг би прочитати: вікно застосунку, вихідний код, база даних поряд із відром сховища. У кожному рядку одна клітинка світиться, а дві інші намальовані пунктиром, тож світлі клітинки лягають по діагоналі.","Що вручають інструменту кожного типу і що це дає йому прочитати. Один інструмент на цій сторінці купує два з цих рядків. Жоден не купує всі три.","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fwhat-you-hand-it-1600x700.png",[38,84,86],{"id":85},"що-насправді-читає-кожен-сканер","Що насправді читає кожен сканер?",[10,88,89],{},"Сім із десяти працюють з однією лише URL-адресою. Інші три хочуть щось, для\nпередання чого треба увійти, і це той стовпчик, який читають раніше за будь-який\nперелік функцій. Два стовпчики праворуч вирішують, чи зможете ви спробувати\nінструмент сьогодні зранку: п’ять сканують узагалі без облікового запису, і\nчотири з тих п’яти показують вам увесь звіт.",[91,92,93,115],"table",{},[94,95,96],"thead",{},[97,98,99,103,106,109,112],"tr",{},[100,101,102],"th",{},"Інструмент",[100,104,105],{},"Що читає",[100,107,108],{},"Що ви йому даєте",[100,110,111],{},"Сканує без реєстрації",[100,113,114],{},"Усі знахідки безкоштовно",[116,117,118,136,153,170,186,200,215,229,246,262],"tbody",{},[97,119,120,124,127,130,133],{},[121,122,123],"td",{},"Supabase Security Advisor",[121,125,126],{},"Конфігурацію вашого власного проєкту",[121,128,129],{},"Ваш вхід у Supabase",[121,131,132],{},"Це ваш власний запис",[121,134,135],{},"Так",[97,137,138,141,144,147,150],{},[121,139,140],{},"CheckVibe",[121,142,143],{},"Ваш живий застосунок і репозиторій, якщо під’єднаєте",[121,145,146],{},"URL-адресу і GitHub, якщо схочете",[121,148,149],{},"Ні, його кнопка це \u002Fsignup",[121,151,152],{},"Ні, відкриває платний план",[97,154,155,158,161,164,167],{},[121,156,157],{},"Defencecore",[121,159,160],{},"Ваші журнали Supabase",[121,162,163],{},"Доступ лише на читання до журналів проєкту",[121,165,166],{},"Ні, він хоче пробний період",[121,168,169],{},"Ні",[97,171,172,175,178,181,183],{},[121,173,174],{},"LaunchGuard",[121,176,177],{},"Ваш живий застосунок",[121,179,180],{},"URL-адресу",[121,182,135],{},[121,184,185],{},"Так, для того, що сканує",[97,187,188,191,193,195,197],{},[121,189,190],{},"Reeve",[121,192,177],{},[121,194,180],{},[121,196,135],{},[121,198,199],{},"Ні, спершу пошта",[97,201,202,205,207,209,212],{},[121,203,204],{},"SafeToShip",[121,206,177],{},[121,208,180],{},[121,210,211],{},"Так, \"no account needed\"",[121,213,214],{},"Ні, $9 або план",[97,216,217,220,223,225,227],{},[121,218,219],{},"SupaExplorer",[121,221,222],{},"Ваш живий застосунок або проєкт, який під’єднаєте",[121,224,180],{},[121,226,135],{},[121,228,135],{},[97,230,231,234,237,240,243],{},[121,232,233],{},"Supabomb",[121,235,236],{},"Ваш проєкт Supabase, з командного рядка",[121,238,239],{},"Облікові дані, які даєте ви самі",[121,241,242],{},"Ви запускаєте його самі",[121,244,245],{},"Так, він з відкритим кодом",[97,247,248,251,254,256,259],{},[121,249,250],{},"Vibe App Scanner",[121,252,253],{},"Ваш живий застосунок, з входом на найвищому плані",[121,255,180],{},[121,257,258],{},"Його сторінка не каже",[121,260,261],{},"Ні, одне сканування, частково",[97,263,264,267,270,272,274],{},[121,265,266],{},"VibeEval",[121,268,269],{},"Ваш живий застосунок, зокрема сторінки за входом",[121,271,180],{},[121,273,166],{},[121,275,169],{},[10,277,278],{},"Кожен рядок прочитано на власних сторінках самого інструмента 7 вересня 2026\nроку. Це молода категорія, і сторінки рухаються, тож вважайте рядок старішим за\nсайт, з якого він узятий.",[10,280,281],{},"Саме на цій таблиці більшість порівнянь спиняється, і це та частина, яка ці\nінструменти розділяє найменше.",[38,283,285],{"id":284},"три-питання-інструмент-за-інструментом","Три питання, інструмент за інструментом",[10,287,288],{},"Reeve єдиний із десяти відповідає «так» на всі три.",[91,290,291,306],{},[94,292,293],{},[97,294,295,297,300,303],{},[100,296,102],{},[100,298,299],{},"Відрізняє публічний ключ від секретного",[100,301,302],{},"Каже, коли перевірка не відповіла",[100,304,305],{},"Може повернути ваші дані",[116,307,308,321,331,342,352,362,372,383,394,404],{},[97,309,310,312,315,318],{},[121,311,190],{},[121,313,314],{},"Так, розкодовує роль ключа",[121,316,317],{},"Так, друкує «Не вдалося перевірити»",[121,319,320],{},"Так, за підпискою",[97,322,323,325,327,329],{},[121,324,140],{},[121,326,258],{},[121,328,258],{},[121,330,169],{},[97,332,333,335,338,340],{},[121,334,157],{},[121,336,337],{},"Він не про це",[121,339,258],{},[121,341,169],{},[97,343,344,346,348,350],{},[121,345,174],{},[121,347,258],{},[121,349,258],{},[121,351,169],{},[97,353,354,356,358,360],{},[121,355,204],{},[121,357,258],{},[121,359,258],{},[121,361,169],{},[97,363,364,366,368,370],{},[121,365,219],{},[121,367,258],{},[121,369,258],{},[121,371,169],{},[97,373,374,376,378,381],{},[121,375,123],{},[121,377,337],{},[121,379,380],{},"Не стосується, він усередині",[121,382,169],{},[97,384,385,387,390,392],{},[121,386,233],{},[121,388,389],{},"Ви прочитали б вихідний код",[121,391,389],{},[121,393,169],{},[97,395,396,398,400,402],{},[121,397,250],{},[121,399,258],{},[121,401,258],{},[121,403,169],{},[97,405,406,408,416,418],{},[121,407,266],{},[121,409,410,411,415],{},"Подав ключ ",[412,413,414],"code",{},"pk_live_"," як CRIT",[121,417,258],{},[121,419,169],{},[10,421,422],{},"«Його сторінка не каже» означає рівно це. Ми можемо читати те, що ці інструменти\nпублікують про себе; звіту, який отримали б ви, ми побачити не можемо. Три\nрозділи нижче пояснюють кожен стовпчик і дають вам спосіб перевірити це на\nвласному застосунку: проскануйте його двома з цих інструментів і прочитайте два\nзвіти поруч.",[38,424,426],{"id":425},"чи-відрізняє-він-безпечні-ключі-від-небезпечних","Чи відрізняє він безпечні ключі від небезпечних?",[10,428,429],{},"Reeve відрізняє, розкодовуючи ключ і читаючи роль, записану всередині. Ця одна\nздатність і є різницею між звітом, з яким можна щось зробити, і переліком із\nсорока пунктів, повз які ви вчитеся прокручувати.",[10,431,432],{},"Почніть з того, чому кількості так розходяться. Кількість перевірок це\nмаркетингова цифра, а не вимірювання: CheckVibe рекламує понад сто, Reeve\nвиконує дев’ять і публікує, як часто кожна з дев’яти взагалі спрацьовує на\n30 998 застосунках. Довший перелік про той самий застосунок це довший перелік.\nБільша причина в тому, що деякі сканери вважають проблемою будь-який ключ,\nзнайдений у вашому JavaScript, а деяким із тих ключів там і місце.",[10,434,435,436,438,439,443],{},"Вашому публічному ключу Supabase місце у вашому фронтенді. Ключу Stripe, що\nпочинається з ",[412,437,414],{},", теж. Обидва за задумом мандрують до кожного\nвідвідувача, бо запит, який вони позначають, робиться з браузера відвідувача, і\nжоден із них сам собою нічого не надає.\n",[58,440,442],{"href":441},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Які ключі безпечні у вашому фронтенді","\nце та відмінність повністю.",[10,445,446,447,450],{},"7 вересня 2026 року головна сторінка VibeEval подавала \"Stripe pk_live_ found in\n",[412,448,449],{},"\u002Fassets\u002Fapp.js","\" серед п’яти прикладів знахідок, позначене як CRIT. Це публічний\nключ, у тому самому місці, де Stripe його публікує. Ми не бачимо звітів, які ці\nінструменти надсилають своїм справжнім клієнтам, тож читайте це як одну\nмаркетингову сторінку, а не як вирок продукту. Це чистий приклад того, що варто\nперевіряти, і шкода не в тому одному хибному рядку. Сканер, який дає вам\nкритичну знахідку за те, що ви зробили правильно, привчає вас знизати плечима на\nнаступній, а наступна вже справжня.",[10,452,453,454,457,458,461,462,465],{},"Старіший ключ Supabase це JWT, і його середня секція каже ",[412,455,456],{},"\"role\": \"anon\""," або\n",[412,459,460],{},"\"role\": \"service_role\""," читабельним текстом. Reeve читає це слово. Публічний\nключ у вашому бандлі повертається під заголовком, який каже, що це ви зробили\nправильно, і не коштує вам нічого, а ключ ",[412,463,464],{},"service_role"," у тому самому бандлі це\nнайгірше, що сканер уміє знайти. У панелі Supabase ці два виглядають майже\nоднаково й лежать поруч, і саме так копіюють не той.",[78,467],{"alt":468,"caption":469,"src":470},"Дві панелі звіту для одного застосунку. Ліва має вісім рядків, кожен із червоним хрестиком, зокрема рядок із підписом pk_live_. Права має чотири рядки: pk_live_ поруч із зеленою галочкою, червоний хрестик, бурштиновий хрестик і четвертий рядок, позначка якого це порожня пунктирна клітинка.","Один застосунок, два звіти. Рядок, що має значення, це публічний ключ, а останній рядок праворуч це перевірка без відповіді, намальована як відсутність відповіді.","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fsame-app-two-reports-1600x760.png",[38,472,33],{"id":473},"чи-каже-він-коли-перевірка-не-отримала-відповіді",[10,475,476],{},"Reeve каже, саме цими словами. Перевірка закінчується трьома способами, і лише\nодин із них є проходженням: вона щось знаходить, отримує чітке «ні» або не\nотримує нічого, бо запит вичерпав час, хост його відхилив чи сторінка так і не\nдозавантажилася. Це третє закінчення і є порожньою клітинкою праворуч на\nмалюнку вище. Воно друкується як «Не вдалося перевірити» і лишає вашу оцінку в\nспокої.",[10,478,479],{},"Це найтихіша річ на сторінці й та, що вирішує, чи вартий звіт бодай чогось, бо\nзонд без відповіді виглядає точнісінько як зонд, що повернувся чистим, щойно\nхтось округлив його до галочки. Ви діяли б за цією галочкою. За нею немає\nнічого.",[10,481,482],{},"Ми пішли шукати ту саму обіцянку на інших дев’яти сайтах 7 вересня 2026 року й\nніде її не знайшли. Це не доказ, що бодай хтось із них округлює. Це твердження,\nякого жоден не дає письмово, і саме його ми хотіли б мати письмово, перш ніж\nповірити зеленому звіту про застосунок, який нам небайдужий.",[10,484,485,486,490],{},"Те саме правило керує числами, які Reeve публікує про всіх інших. Між 12 і\n14 серпня 2026 року ми прогнали всі дев’ять перевірок по\n",[58,487,489],{"href":488},"\u002Fresearch\u002Fvibe-coded-app-security-2026","30 998 живих vibe-coded застосунках",",\nзроблених на Lovable, Bolt, v0, Cursor, Replit, Windsurf і Base44, випустили\nкожен агрегат під CC BY 4.0, щоб будь-хто міг ним скористатися, і записали, як\nчасто спрацьовувала кожна перевірка, якої частки застосунків вона не досягла і\nяк їх пораховано. Перевірка без відповіді сидить в окремому стовпчику, а не в\nчистій купі, тож ніщо на тій сторінці не роздуте зарахуванням мовчання за\nбезпеку. Головна сторінка LaunchGuard публікує 96 протестованих застосунків і\n2,37 мільйона відкритих записів. Жоден з інших восьми сайтів, які ми читали,\nвзагалі не публікував цифри.",[38,492,494],{"id":493},"що-стається-того-дня-коли-ваших-даних-не-стало","Що стається того дня, коли ваших даних не стало?",[10,496,497],{},"Нічого, у дев’яти з десяти. Сканер знаходить відчинені двері. Він не скаже вам,\nхто вже крізь них пройшов, і не поверне таблицю, яку хтось спорожнив у вівторок.",[10,499,500],{},"Reeve Care це десятий, і закрити цю прогалину і є причиною, чому ця компанія\nіснує. Він знімає копії вашої бази Supabase за розкладом, відкриває кожну копію\nй перелічує її проти того, що зайшло, перш ніж копія зарахується як резервна,\nтримає їх поза вашим обліковим записом Supabase, тож призупинений проєкт чи вхід,\nякий ви не можете відновити, лишає їх там, де вони є, і замінює ваші дані з\nоднієї з них, коли ви попросите. Копію поточного стану знімають першою, перш ніж\nщось замінювати.",[10,502,503,504,508],{},"Ваші завантажені файли мандрують разом із рядками, щойно ви під’єднаєте облікові\nдані Storage, і це другий ключ, який просять окремо, і єдиний із тих, що тримає\nReeve, здатний писати, бо Supabase не видає ключа лише на читання для файлів.\n",[58,505,507],{"href":506},"\u002Fsupabase-backups","Що саме це робить"," намальовано на сторінці резервних копій.",[10,510,511,514],{},[20,512,513],{},"Supabase це єдине, що Care вміє копіювати",", тож якщо ваші дані живуть у\nFirebase чи деінде, цей розділ вам не відкритий, і те, що Reeve має\nзапропонувати, це половина зі скануванням. Vibe App Scanner і SafeToShip обидва\nперевіряють правила безпеки Firebase, і це найближчий відповідник на цій\nсторінці.",[38,516,518],{"id":517},"що-ви-отримуєте-за-місячну-підписку","Що ви отримуєте за місячну підписку?",[10,520,521],{},"У дев’яти з десяти більше сканувань. У Reeve сканування плюс те, що стається\nпісля того, як одне з них щось знайшло.",[523,524,525],"comparison-table",{},[91,526,527,542],{},[94,528,529],{},[97,530,531,533,536,539],{},[100,532],{},[100,534,535],{},"Підписка на сканування",[100,537,538],{},"Reeve Monitor",[100,540,541],{},"Reeve Care",[116,543,544,557,570,582,594,608,620,631,643,655,666,679,692],{},[97,545,546,549,552,555],{},[121,547,548],{},"Пересканування за розкладом",[121,550,551],{},"Так, на платних рівнях",[121,553,554],{},"Щогодини",[121,556,554],{},[97,558,559,562,565,568],{},[121,560,561],{},"Перевірки доступності",[121,563,564],{},"CheckVibe, кожні 60 секунд",[121,566,567],{},"Кожні 60 секунд",[121,569,567],{},[97,571,572,575,578,580],{},[121,573,574],{},"Сповіщення, коли щось змінилося",[121,576,577],{},"У деяких",[121,579,135],{},[121,581,135],{},[97,583,584,587,590,592],{},[121,585,586],{},"Місячний звіт",[121,588,589],{},"У жодного, що ми читали",[121,591,135],{},[121,593,135],{},[97,595,596,599,602,605],{},[121,597,598],{},"Застосунків у складі",[121,600,601],{},"По-різному",[121,603,604],{},"Три",[121,606,607],{},"Один, п’ять на Pro",[97,609,610,613,615,617],{},[121,611,612],{},"Копія вашої бази даних",[121,614,169],{},[121,616,169],{},[121,618,619],{},"Щодня",[97,621,622,625,627,629],{},[121,623,624],{},"Перечитано, перш ніж зарахувати",[121,626,169],{},[121,628,169],{},[121,630,135],{},[97,632,633,636,638,640],{},[121,634,635],{},"Збережених точок відновлення",[121,637,169],{},[121,639,169],{},[121,641,642],{},"30, 90 на Pro",[97,644,645,648,650,652],{},[121,646,647],{},"Ваші завантажені файли",[121,649,169],{},[121,651,169],{},[121,653,654],{},"З ключем Storage",[97,656,657,660,662,664],{},[121,658,659],{},"Повернути це одна кнопка",[121,661,169],{},[121,663,169],{},[121,665,135],{},[97,667,668,671,674,676],{},[121,669,670],{},"Що вміє копіювати",[121,672,673],{},"Нічого",[121,675,673],{},[121,677,678],{},"Лише Supabase",[97,680,681,684,687,690],{},[121,682,683],{},"Безкоштовний пробний період",[121,685,686],{},"7 або 14 днів у деяких",[121,688,689],{},"7 днів",[121,691,689],{},[97,693,694,697,700,703],{},[121,695,696],{},"Ціна, коли ми читали",[121,698,699],{},"$24 до $49 на місяць",[121,701,702],{},"$12 на місяць",[121,704,705],{},"$49 на місяць",[10,707,708,709,713],{},"Ці чужі цифри це те, що показували 7 вересня 2026 року ті п’ять продавців, які\nбодай якусь публікують: SafeToShip $24, Vibe App Scanner $29 або $49, VibeEval\n$49 з командним рівнем за $149, Defencecore $29 і SupaExplorer нижче, за $6.75\nпід банером знижки. CheckVibe і LaunchGuard не публікують жодної цифри. Прочитайте\nпоточну ціну на сторінці самого продавця, перш ніж щось купувати, і це стосується\n",[58,710,712],{"href":711},"\u002Fpricing","нашої"," теж, яка іноді нижча за прейскурантну цифру звідси й ніколи не\nвища.",[10,715,716],{},"Кожен платний план тут можна спробувати, перш ніж він щось спише. Reeve дає вам\nсім днів, Defencecore сім, а VibeEval рекламує чотирнадцять без картки. Інші на\nсвоїх сторінках цін цього не кажуть.",[10,718,719,720,723,724,727],{},"З того останнього рядка випливають дві речі. ",[20,721,722],{},"Reeve Monitor коштує $12 на\nмісяць"," за три застосунки, нижче за будь-який платний рівень тут, окрім одного\nзнижкового, і це вся половина з наглядом: щогодинні пересканування, зонд\nдоступності кожні 60 секунд, сповіщення, коли щось змінюється, і місячний звіт. А\n",[20,725,726],{},"Reeve Care коштує $49 на місяць",", тобто рівно стільки, скільки беруть VibeEval\nPro і Vibe App Scanner Pro, і при цьому це єдина підписка на сторінці, яка ще й\nтримає перевірену копію вашої бази даних і повертає її на прохання. Вище Care Pro\nза $79 додає п’ять застосунків, копії двічі на добу та публічну сторінку стану, а\nCare Max за $139 знімає їх чотири рази на добу й лишається нижчим за командний\nрівень VibeEval за $149.",[38,729,731],{"id":730},"де-reeve-не-є-відповіддю","Де Reeve не є відповіддю",[10,733,734],{},"Три роботи на цій сторінці, яких Reeve не виконує зовсім.",[736,737,738,744,750],"ul",{},[28,739,740,743],{},[20,741,742],{},"Читання вашого вихідного коду."," CheckVibe це робить, якщо ви під’єднаєте\nGitHub, а спеціалізовані сканери секретів для цієї роботи заходять глибше за\nнас обох. Це також єдиний спосіб знайти ключ, який пішов із вашого застосунку\nмісяці тому й досі сидить у його історії.",[28,745,746,749],{},[20,747,748],{},"Тестування застосунку під входом."," VibeEval веде справжній браузер крізь\nекрани входу, Vibe App Scanner робить автентифіковані сканування на найвищому\nплані, а платний рівень LaunchGuard проводить Claude Code крізь сценарії\nавторизації. Reeve ніколи не входить, ніколи не пише й ніколи не завантажує\nжодного рядка, і саме це робить безпечним спрямувати його на продакшн-застосунок\nзі справжніми клієнтами, і це ж причина, чому помилка, яка показується лише\nкористувачеві під входом, лишається для нього невидимою.",[28,751,752,755],{},[20,753,754],{},"Бути відкритим або керованим вашим агентом."," Supabomb має відкритий код і\nнаписаний на Python. Vibe App Scanner публікує MCP-сервер, CheckVibe тягне свої\nзнахідки в Claude чи Cursor, а advisor від Supabase доступний через власний\nMCP-сервер Supabase. Reeve не публікує ні свого коду, ні MCP-сервера.",[10,757,758],{},"Де Reeve є відповіддю: ваш застосунок живий, ви хочете знати, що він віддає\nнезнайомцям просто зараз, нічого нікуди не під’єднуючи, ви хочете звіт, який\nскаже вам, що ви зробили правильно, так само чітко, як і те, що відкрите, і вам\nхотілося б, щоб хтось тримав перевірену копію вашої бази даних того дня, коли все\nпіде не так.",[38,760,762],{"id":761},"що-ви-віддаєте-коли-інструмент-читає-ваш-код","Що ви віддаєте, коли інструмент читає ваш код?",[10,764,765],{},"Постійний доступ до всього в репозиторії, а це значно більша річ за застосунок.",[10,767,768,769,772,773,776,777,780],{},"Ваш репозиторій це не ваш застосунок. У ньому лежить кожен ключ, який ви колись\nзакомітили й потім прибрали, файли seed і fixture зі схожими на справжні даними\nклієнтів, недороблена гілка, яку ніхто не викотив, і вказівки, які ви написали\nдля свого ШІ-білдера. Останнє людей дивує. Ваш ",[412,770,771],{},"CLAUDE.md",", ваші ",[412,774,775],{},".cursorrules",",\nваш ",[412,778,779],{},"AGENTS.md",", довгий промпт, що описує, як продукт має поводитися: це ваше\nпродуктове мислення, відкритим текстом, усередині репозиторію. Сканування URL\nбачить застосунок, який бачать ваші відвідувачі. Під’єднання до репозиторію\nбачить усе це, і тепер копію тримає друга компанія.",[10,782,783],{},"Три речі, які варто перевірити, перш ніж такий доступ надати:",[736,785,786,792,798],{},[28,787,788,791],{},[20,789,790],{},"Це постійний доступ, а не візит."," GitHub App чи дозвіл OAuth працює далі,\nдоки ви не підете його відкликати, тож він читає й те, що ви запушите\nнаступного місяця. З’ясуйте, чи можна обмежити його одним репозиторієм, і\nзнайдіть кнопку відкликання раніше, ніж вона знадобиться.",[28,793,794,797],{},[20,795,796],{},"Їхній витік стає вашим."," Усе, що постачальник тримає про вас, стає відкритим\nтоді, коли відкритим стає він сам. Defencecore наводить рівно цей аргумент на\nвласну користь на своїй сторінці, і аргумент добрий: інструмент, який тільки\nчитає, може \"never become the incident\".",[28,799,800,803],{},[20,801,802],{},"Інструмент, який входить, може щось змінити."," Сканер, що веде браузер крізь\nваш вхід, робить те саме, що робить користувач, на ваших живих даних.\nПрочитайте, що він обіцяє натискати, а чого ні.",[10,805,806],{},"Це обмін, а не застереження. Сканер репозиторію знаходить ключ, який ви видалили\nу квітні, і ніщо з того, що читає ваш живий сайт, цього не зробить, тож якщо у\nвас саме це питання, доступ і є ціною відповіді.",[38,808,810],{"id":809},"який-із-них-вам-обрати","Який із них вам обрати?",[10,812,813],{},"П’ять ситуацій, і дві з них закінчуються не нами.",[736,815,816,827,833,839,845],{},[28,817,818,821,822,826],{},[20,819,820],{},"Ви хочете просто зараз і безкоштовно дізнатися, що ваш застосунок показує\nнезнайомцеві."," ",[58,823,825],{"href":824},"\u002Fsecurity-scanner","Сканування Reeve"," або LaunchGuard. Жоден із\nних не просить реєструватися, і обидва повертаються менш ніж за хвилину.\nSafeToShip і SupaExplorer теж сканують без облікового запису.",[28,828,829,832],{},[20,830,831],{},"Ви на Supabase і жодного разу не відкривали Security Advisor."," Спершу його,\nраніше за будь-що з ціною на цій сторінці. Він безкоштовний і читає те, чого не\nпрочитає жодне сканування ззовні.",[28,834,835,838],{},[20,836,837],{},"Ви хочете, щоб прочитали ваш вихідний код або протестували застосунок під\nвходом."," CheckVibe для репозиторію, VibeEval або найвищий план Vibe App Scanner\nдля того, що за входом. Прочитайте розділ вище про те, чого цей доступ коштує,\nперш ніж його надавати.",[28,840,841,844],{},[20,842,843],{},"Ви хочете нагляд за застосунком і рахуєте кожну копійку."," Reeve Monitor,\n$12 на місяць за три застосунки: щогодинні пересканування, зонд доступності\nкожні 60 секунд, сповіщення та місячний звіт, і жодних резервних копій.",[28,846,847,850],{},[20,848,849],{},"У вас справжні клієнти й нікого, хто виконуватиме відновлення під тиском.","\nReeve Care, $49 на місяць, тобто сканування, нагляд і перевірена копія вашої\nбази даних, яка повертається однією кнопкою. Якщо ваші дані не в Supabase,\nполовина з копіями вас не стосується.",[38,852,854],{"id":853},"що-зробити-цього-тижня","Що зробити цього тижня",[856,857,858],"key-takeaways",{},[736,859,860,863,866,869,872,875],{},[28,861,862],{},"Відкрийте свій Supabase Security Advisor раніше, ніж комусь платити. Він безкоштовний, він уже у вашій панелі, і він читає те, до чого не дістає жодне сканування ззовні.",[28,864,865],{},"Проженіть два безкоштовні сканери URL по одному застосунку й покладіть звіти поруч. Там, де вони розходяться, один із них вгадує.",[28,867,868],{},"Подивіться, що кожен каже про публічний ключ у вашому бандлі. Інструмент, який позначає його критичним, позначить критичним усе, і ви навчитеся ігнорувати все.",[28,870,871],{},"Читайте рядки про перевірки, які не змогли виконатися, раніше за рядки про ті, що пройшли. Звіт без жодного такого рядка не каже вам, що таких не було.",[28,873,874],{},"Перш ніж під’єднувати репозиторій чи обліковий запис Supabase до чогось, перевірте, що охоплює дозвіл, чи можна обмежити його одним проєктом і де кнопка відкликання.",[28,876,877],{},"Окремо вирішіть, хто тримає копію вашої бази даних. Дев’ять із десяти інструментів вище спиняються на тому, щоб вам розповісти, а верхні підписки на саме лише сканування коштують стільки ж, скільки та єдина, що не спиняється.",[10,879,880,883,884,887,888,892],{},[58,881,882],{"href":824},"Безкоштовне сканування безпеки від Reeve"," читає живу\nURL-адресу секунд за двадцять без облікового запису, оцінює знайдене й перелічує\nте, що ви зробили правильно, поруч із тим, що відкрите. Нагляд за застосунком\nдалі починається від $12 на місяць, а резервні копії з відновленням в одну кнопку\nвід $49; ",[58,885,886],{"href":711},"плани тут",". Якщо ви радше спершу пройдетеся застосунком\nсамі, ",[58,889,891],{"href":890},"\u002Fchecklist","десятихвилинний чекліст безпеки"," охоплює ту саму землю без\nінструмента посередині.",{"title":894,"searchDepth":895,"depth":895,"links":896},"",3,[897,899,900,901,902,903,904,905,906,907,908],{"id":40,"depth":898,"text":41},2,{"id":85,"depth":898,"text":86},{"id":284,"depth":898,"text":285},{"id":425,"depth":898,"text":426},{"id":473,"depth":898,"text":33},{"id":493,"depth":898,"text":494},{"id":517,"depth":898,"text":518},{"id":730,"depth":898,"text":731},{"id":761,"depth":898,"text":762},{"id":809,"depth":898,"text":810},{"id":853,"depth":898,"text":854},"Основи безпеки","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcover-1200x630.png","Лупа ліворуч посилає дуги сонара через розкидане поле вікон застосунків, і кожна дуга блідіша за попередню.","Найкращий сканер безпеки для vibe coding залежить від трьох питань, на які не відповідає жоден перелік функцій. Десять інструментів і ціни.",false,"md",[916,919,922,925,928,931],{"q":917,"a":918},"Який сканер безпеки для vibe coding безкоштовний?","Кілька сканують без оплати, і кожен розуміє під цим своє. Supabase Security Advisor безкоштовний повністю й живе в тій панелі, куди ви й так заходите. П’ять сканують узагалі без облікового запису: Reeve, LaunchGuard, SupaExplorer, SafeToShip, чия сторінка цін каже \"no account needed\", і Supabomb, бо його ви запускаєте на власній машині. З цих п’яти LaunchGuard, SupaExplorer і Supabomb також показують увесь звіт безкоштовно, тоді як Reeve показує оцінку, бали та кількості секунд за двадцять і просить електронну пошту перед докладними знахідками, а SafeToShip бере за них $9. CheckVibe відправляє вас на сторінку реєстрації, а VibeEval і Defencecore ховають звіт за пробним періодом.",{"q":920,"a":921},"Скільки коштує сканер безпеки для vibe coding?","Від $24 до $49 на місяць у тих п’яти, що публікували цифру, коли ми читали їх 7 вересня 2026 року: SafeToShip $24, Vibe App Scanner $29 або $49, VibeEval $49 з командним рівнем за $149, Defencecore $29 і SupaExplorer нижче, за $6.75 під банером знижки. Reeve Monitor коштує $12 на місяць за щогодинні пересканування, перевірки доступності кожні 60 секунд, сповіщення та місячний звіт для трьох застосунків, і це нижче за будь-який платний рівень вище, окрім знижкового. Reeve Care коштує $49, стільки ж, скільки беруть верхні рівні самого лише сканування, і додає щоденні копії вашої бази Supabase, які перечитують, перш ніж вони зарахуються, з відновленням в одну кнопку. Перевірте кожну цифру на сторінці продавця, перш ніж купувати, нашу теж.",{"q":923,"a":924},"Чи потрібен комусь із них пароль до моєї бази даних?","Жодному зі сканерів URL, Reeve зокрема. Вони читають ваш застосунок ззовні, тож підключати нічого. Defencecore просить дозволити доступ лише на читання до журналів одного проєкту Supabase, і це дозвіл облікового запису, а не ваш пароль. Supabase Security Advisor потребує вашого входу в Supabase, бо він є частиною Supabase. Supabomb — інструмент командного рядка, який ви запускаєте самі, тож що він отримає, залежить від вас.",{"q":926,"a":927},"Які з них виявляють проблеми з RLS у Supabase?","Більшість цього списку це заявляє, і знаходять вони різне. Сканер URL на кшталт Reeve питає ваш проєкт, чи отримує анонімний запит рядки, тобто наслідок, і читає кількість із заголовка відповіді, не забираючи жодного рядка. Supabase Security Advisor читає конфігурацію й повідомляє про таблиці з вимкненим Row Level Security або залишені без політики, тобто причину. Ці дві речі розходяться частіше, ніж очікують, тож чистий advisor і сканер, що знаходить рядки в тій самій таблиці, одне одному не суперечать.",{"q":929,"a":930},"Чому один інструмент каже 40 проблем, а інший 2?","Бо вони рахують різними лінійками. Інструменти рекламують від дев’яти перевірок до понад ста, і довший перелік дає довший звіт про той самий застосунок. Більша причина в тому, що деякі сканери вважають проблемою будь-який ключ, знайдений у вашому JavaScript, зокрема публічні, яким там і місце. Reeve розкодовує ключ і читає роль, записану всередині, тож публічний ключ повертається як те, що ви зробили правильно, а не як знахідка. Подивіться, що інструмент каже про ваш публічний ключ Supabase, перш ніж вірити його підсумку.",{"q":932,"a":933},"Чи це порівняння упереджене?","Так. Reeve — один із десяти інструментів у таблиці, і робимо його ми, тож читайте сторінку з цим знанням. Що ми з цим зробили: назвали три роботи на цій сторінці, яких Reeve не виконує зовсім, відправили вас до безкоштовного інструмента у вашій власній панелі Supabase раніше за будь-що платне, надрукували чужі ціни поруч зі своєю та оприлюднили весь набір даних за нашими перевірками під відкритою ліцензією, щоб твердження можна було перевірити. Кожен рядок прочитано на сторінці самого продавця 7 вересня 2026 року, і жоден із них не має посилання, тож нічого тут не є оплаченим розміщенням.","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",[936,937,938,939,940,941,942,943],"найкращий сканер безпеки vibe coding","порівняння сканерів безпеки vibe coding","альтернатива checkvibe","альтернатива vibe app scanner","альтернатива launchguard","порівняння сканерів безпеки supabase","безкоштовний чи платний сканер безпеки","AI app security tools 2026",{},true,"Сканери безпеки для vibe coding у порівнянні","\u002Fblog\u002Fvibe-coding-security-scanners-compared","2026-09-07",{"title":5,"description":912},"blog\u002Fvibe-coding-security-scanners-compared",[952,953,954],"Єдиного найкращого сканера безпеки для vibe coding не існує, бо більшість читає ту саму поверхню й різниться тим, що з нею робить. Сім із десяти тут працюють з однією лише URL-адресою.","Їх розділяють три питання: чи вміє інструмент відрізнити ключ, якому місце у вашому застосунку, від того, якому не місце, чи каже він, коли перевірка не отримала відповіді, і чи повертає щось ваші дані потім.","Reeve відповідає «так» на всі три, за $12 на місяць за нагляд і $49 за резервні копії, тобто рівно стільки, скільки тут беруть підписки на саме лише сканування за жодну з цих речей. Ми його робимо, тому три роботи, яких Reeve не виконує, названі ближче до кінця.","Lt4eu1dVXExsTMAiXcjGNd-K3SW6vaj_XCkViG2RkgI",[957,964,970,976,982,988,994,1000,1006,1012,1018,1024,1030,1036,1042,1048,1054,1055,1061,1066,1072,1078,1084,1090,1096,1102,1108,1114,1120,1126,1132,1138,1144,1150,1156,1162,1167,1173,1179,1184,1189,1195],{"path":958,"title":959,"description":960,"published":961,"category":962,"image":963,"draft":913},"\u002Fblog\u002Fsupabase-backup-auth-users","Чому у вашому дампі Supabase немає користувачів","Запустіть supabase db dump окремо і отримаєте форму вашої бази та жодного її рядка, без схеми auth, у якій живуть ваші користувачі.","2026-09-23","Backups","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":965,"title":966,"description":967,"published":968,"category":909,"image":969,"draft":913},"\u002Fblog\u002Fdomain-and-certificate-expiry","Домен закінчився, сайт лежить: що буде далі","Ваш домен закінчився і сайт лежить. Ось який годинник уже пішов, чому прострочений сертифікат це менша з двох бід, і як перевірити обидва.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":971,"title":972,"description":973,"published":974,"category":909,"image":975,"draft":913},"\u002Fblog\u002Fis-lovable-safe","Чи безпечний Lovable? Що показали 18 554 застосунки Lovable","Чи безпечний Lovable? Ми прогнали 18 554 живі застосунки Lovable через дев’ять перевірок. Платформа виявилася найчистішою з п’яти. Знахідки були в застосунках.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":977,"title":978,"description":979,"published":980,"category":909,"image":981,"draft":913},"\u002Fblog\u002Fvibe-coded-app-security-checklist","Чек-лист безпеки для vibe coding, у девʼяти перевірках","Чек-лист безпеки для vibe coding із девʼяти пунктів, кожен з яких будь-хто може перевірити у вашому живому застосунку ззовні, і кожен має тест на один рядок.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":983,"title":984,"description":985,"published":986,"category":909,"image":987,"draft":913},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Секретний ключ Stripe у фронтенді може рухати гроші","Секретний ключ Stripe, відкритий у вашому фронтенді, може повертати кошти, списувати й читати кожну картку клієнта. А ключ pk_live_ там і має бути.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":989,"title":990,"description":991,"published":992,"category":909,"image":993,"draft":913},"\u002Fblog\u002Fvite-and-next-public-env-vars","Змінні оточення Vite відкриті: префікс означає опублікувати це","Змінні оточення Vite відкриті у вашому застосунку, бо так просив префікс. VITE_ і NEXT_PUBLIC_ означають опублікувати це, а ШІ, який їх додав, не знав ціни.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":995,"title":996,"description":997,"published":998,"category":909,"image":999,"draft":913},"\u002Fblog\u002Fbase44-source-maps","Безпека Base44: що позначає скан і що з цього виправляти вам","Безпека Base44 на 5 438 просканованих застосунках: три знахідки майже на кожному належать платформі, source map є бейджем Base44, а ваша частина коротка.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":1001,"title":1002,"description":1003,"published":1004,"category":909,"image":1005,"draft":913},"\u002Fblog\u002Fis-cursor-ai-safe","Чи безпечний Cursor AI? Редактор, код і опублікований застосунок","Чи безпечний Cursor AI? Три запитання в одному пошуку: що Cursor зберігає, у чому помиляється його код і чи відкритий застосунок, який ви опублікували.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":1007,"title":1008,"description":1009,"published":1010,"category":909,"image":1011,"draft":913},"\u002Fblog\u002Fis-replit-safe","Чи безпечний Replit? Що ми знайшли в 3 042 живих застосунках Replit","Чи безпечний Replit? Ми прогнали 3 042 живі застосунки Replit через дев’ять зовнішніх перевірок. Знахідки були в опублікованому застосунку, а не в хостингу.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":1013,"title":1014,"description":1015,"published":1016,"category":962,"image":1017,"draft":913},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: у копії бази даних немає жодного файлу","Supabase storage backup це окрема робота. Копії бази даних зберігають список ваших файлів і жодного з них, тож після відновлення кожне завантаження зламане.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":1019,"title":1020,"description":1021,"published":1022,"category":962,"image":1023,"draft":913},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery у Supabase: ціна та межі","Point-in-time recovery у Supabase відмотує базу на будь-яку секунду за останній тиждень. Коштує $100 на місяць понад Pro і покриває лише базу даних.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":1025,"title":1026,"description":1027,"published":1028,"category":962,"image":1029,"draft":913},"\u002Fblog\u002Fsupabase-project-paused-recover","Проєкт Supabase на паузі? Ваші дані нікуди не зникли","Supabase поставив ваш проєкт на паузу після тижня без активності. Нічого не видалено, кнопка Restore стоїть поруч із назвою, і у вас є рік, щоб натиснути.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":1031,"title":1032,"description":1033,"published":1034,"category":909,"image":1035,"draft":913},"\u002Fblog\u002Fsafest-ai-app-builder","Який білдер застосунків з ШІ найбезпечніший? 30 998 тестів","Який білдер застосунків з ШІ найбезпечніший? Ми просканували 30 998 живих застосунків з Lovable, Base44, Replit, v0 і Bolt. Оцінку вирішує не білдер.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":1037,"title":1038,"description":1039,"published":1040,"category":909,"image":1041,"draft":913},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Увімкніть Row Level Security на кожній таблиці Supabase і перевірте","Row Level Security у Supabase без політики закриває таблицю повністю. Політика без увімкненого перемикача не робить нічого. Ось SQL, і ось перевірка.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":1043,"title":1044,"description":1045,"published":1046,"category":909,"image":1047,"draft":913},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": чого не бачить попередження","Supabase позначає \"RLS disabled in public\" як помилку. Про політику читання, яка лишає вашу таблицю так само відкритою, він не каже нічого.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":1049,"title":1050,"description":1051,"published":1052,"category":909,"image":1053,"draft":913},"\u002Fblog\u002Frotate-supabase-service-role-key","Як замінити злитий ключ service_role у Supabase","Supabase каже спершу закрити витік. Інші посібники кажуть міняти негайно. Що правильно, залежить від того, куди саме потрапив ваш ключ service_role.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":947,"title":5,"description":912,"published":948,"category":909,"image":934,"draft":913},{"path":1056,"title":1057,"description":1058,"published":1059,"category":909,"image":1060,"draft":913},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: п’ять перевірок, які зробите самі","Supabase security checker читає ваш опублікований застосунок, а не налаштування проєкту. Ось п’ять перевірок і як виконати кожну самостійно.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":60,"title":1062,"description":1063,"published":1064,"category":909,"image":1065,"draft":913},"Сканер безпеки для vibe coding: чого не бачить скан URL","Сканер безпеки для vibe coding читає ваш робочий застосунок ззовні. Що це охоплює, чотири речі, яких він не бачить, і як читати результат.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":1067,"title":1068,"description":1069,"published":1070,"category":909,"image":1071,"draft":913},"\u002Fblog\u002Fmissing-security-headers","Відсутні заголовки безпеки: коли це справді важливо","Відсутні заголовки безпеки трапляються в наших звітах найчастіше. Від чого вони захищають і коли це найменш терміновий рядок вашого звіту.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":1073,"title":1074,"description":1075,"published":1076,"category":909,"image":1077,"draft":913},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Ваш ключ API OpenAI відкритий у фронтенді. Замініть його.","Ключ API OpenAI, відкритий у фронтенді, не можна прив'язати до домену. Замініть його сьогодні, перенесіть виклик на свій сервер і обмежте витрати.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":1079,"title":1080,"description":1081,"published":1082,"category":909,"image":1083,"draft":913},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Ключ API у фронтенді: що насправді віддають 30 998 застосунків","Ключ API, відкритий у вашому фронтенді, зазвичай є ключем Google Maps. Ми просканували 30 998 vibe-coded застосунків і порахували, що витікає насправді.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":1085,"title":1086,"description":1087,"published":1088,"category":962,"image":1089,"draft":913},"\u002Fblog\u002Fsupabase-backup-tools-compared","Інструменти резервного копіювання Supabase, і наш серед них","Чотири види інструментів резервного копіювання Supabase, що копіює кожен і коли безкоштовна GitHub Action виграє в будь-якої оплати, нашої теж.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":1091,"title":1092,"description":1093,"published":1094,"category":909,"image":1095,"draft":913},"\u002Fblog\u002Freplit-secrets-explained","Як користуватися секретами в Replit і що все одно публікується","Як користуватися секретами в Replit: додати, прочитати і усунути дві причини undefined. А ще ключі, які цей інструмент не здатен зберегти в таємниці.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":1097,"title":1098,"description":1099,"published":1100,"category":962,"image":1101,"draft":913},"\u002Fblog\u002Fback-up-supabase-free-tier","Резервні копії на безкоштовному тарифі Supabase без терміналу","На безкоштовному тарифі Supabase резервних копій немає: копію робите ви. Як зробити її з панелі та що втрачає шлях через CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":1103,"title":1104,"description":1105,"published":1106,"category":909,"image":1107,"draft":913},"\u002Fblog\u002Fis-supabase-secure","Чи безпечний Supabase? Так. Ваш проєкт це інше питання","Чи безпечний Supabase? Платформа проходить аудити, шифрує дані й тримає пентести. Їхня документація каже, де це закінчується і починаються ваші налаштування.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":1109,"title":1110,"description":1111,"published":1112,"category":909,"image":1113,"draft":913},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Де знайти API-ключі Supabase: anon, service_role і URL","URL проєкту, ключ anon і ключ service_role лежать на одній сторінці панелі. Ось де вона, і яке з чотирьох значень має бути у вашому застосунку.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":1115,"title":1116,"description":1117,"published":1118,"category":909,"image":1119,"draft":913},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy в Supabase. Що далі?","\"New row violates row-level security policy\" означає, що Supabase відмовив у записі. Швидке виправлення знову відкриває таблицю для всіх.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":1121,"title":1122,"description":1123,"published":1124,"category":909,"image":1125,"draft":913},"\u002Fblog\u002Fcors-wildcard-security-risk","Чи є вайлдкард CORS ризиком для безпеки? Майже ніколи.","Чи є вайлдкард CORS ризиком для безпеки? Зазвичай це типове налаштування вашого білдера, і воно не видає нічого, що ваш сервер і так віддавав кожному.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":1127,"title":1128,"description":1129,"published":1130,"category":962,"image":1131,"draft":913},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Branching у Supabase це не бекап. Він іде тільки вперед.","Чому branching у Supabase це не бекап: гілка стартує без ваших даних, а мердж переносить саму лише схему. Для чого він потрібен і що брати замість нього.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":1133,"title":1134,"description":1135,"published":1136,"category":962,"image":1137,"draft":913},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Як відновити резервну копію Supabase, і що ламається потім","Як відновити резервну копію Supabase з панелі або з файлу дампа, що саме замінює відновлення і чому ваш застосунок може лишитися зламаним після нього.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":1139,"title":1140,"description":1141,"published":1142,"category":909,"image":1143,"draft":913},"\u002Fblog\u002Fsupabase-storage-bucket-public","Ваш бакет Supabase Storage публічний. Чи це проблема?","Публічний бакет Supabase Storage означає, що той, хто має URL файлу, може його відкрити. Він не означає, що хтось може переглянути список вмісту.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":1145,"title":1146,"description":1147,"published":1148,"category":909,"image":1149,"draft":913},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","Чи є проблемою ключ API Google у вашому браузері?","Ключ API Google у відкритому коді сторінки наш сканер знаходить найчастіше, і зазвичай усе гаразд. Вирішує це одне безкоштовне налаштування.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":1151,"title":1152,"description":1153,"published":1154,"category":962,"image":1155,"draft":913},"\u002Fblog\u002Fai-agent-deleted-my-database","ШІ-агент видалив мої дані в Supabase. Що можна відновити?","ШІ-агент видалив дані з вашої бази. Те, що ви зможете відновити, вирішилося раніше, а наступні хвилини вирішують, скільки з цього вціліє.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":1157,"title":1158,"description":1159,"published":1160,"category":909,"image":1161,"draft":913},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Чи може будь-хто прочитати вашу базу Supabase? 3 680 застосунків","Чи може будь-хто прочитати вашу базу даних Supabase без входу? Ми просканували 30 998 живих застосунків, зроблених ШІ-білдерами, і виміряли, як часто так.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":1163,"title":1164,"description":1165,"published":1160,"category":909,"image":1166,"draft":913},"\u002Fblog\u002Fsource-maps-exposed-in-production","Відкриті source maps: ваш застосунок публікує свій вихідний код","Відкрита source map дає будь-кому прочитати оригінальний код вашого застосунку, разом із коментарями. Перевірка за 30 секунд, і що важить насправді.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":1168,"title":1169,"description":1170,"published":1171,"category":909,"image":1172,"draft":913},"\u002Fblog\u002Fsupabase-new-api-keys","Нові API-ключі Supabase: який із них безпечний у застосунку?","Supabase замінив anon і service_role публічними та секретними ключами. Який із них має бути у вашому застосунку, а який не має бути ніколи?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":1174,"title":1175,"description":1176,"published":1177,"category":962,"image":1178,"draft":913},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Чи робить Supabase резервні копії моєї бази? Залежить від тарифу.","Чи робить Supabase резервні копії вашої бази даних? На платних тарифах щодня, на безкоштовному жодної. Як дізнатися, що у вас насправді є.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":74,"title":1180,"description":1181,"published":1182,"category":909,"image":1183,"draft":913},"Supabase Row Level Security увімкнено. Таблиця досі публічна.","Увімкнути Supabase Row Level Security не означає захистити таблицю. Захищають політики, а та, що полагодила застосунок, часто впускає всіх.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":1185,"title":1186,"description":1187,"published":1182,"category":962,"image":1188,"draft":913},"\u002Fblog\u002Fversion-history-is-not-a-backup","Історія версій не є резервною копією. Вона не поверне таблицю.","Lovable і Bolt ведуть історію версій вашого коду. Ваша база даних працює як окремий сервіс, тож відкат назад не поверне ваші дані.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":1190,"title":1191,"description":1192,"published":1193,"category":962,"image":1194,"draft":913},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Три способи зробити резервну копію бази Supabase, і чого бракує","Панель, pg_dump і керований сервіс. Що насправді зберігає кожен спосіб, що тихо лишає осторонь і який із них переживе втрату акаунта.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":441,"title":1196,"description":1197,"published":1193,"category":909,"image":1198,"draft":913},"Які API-ключі безпечні у браузері, а які ні","Ваш ключ anon у Supabase створений, щоб бути публічним. Ключ service_role для цього не створений, і він ігнорує всі правила, які ви задали. Як їх розрізнити.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1790150956278]