[{"data":1,"prerenderedAt":903},["ShallowReactive",2],{"blog-uk-is-v0-safe":3,"blog-index-uk":552},{"id":4,"title":5,"body":6,"category":506,"cover":507,"coverAlt":508,"description":509,"draft":510,"extension":511,"faq":512,"image":530,"keywords":531,"meta":541,"navigation":542,"ogTitle":5,"path":543,"published":544,"seo":545,"stem":546,"tldr":547,"updated":544,"__hash__":551},"blog_uk\u002Fblog\u002Fis-v0-safe.md","Безпека v0: усі 1 790 просканованих застосунків v0 отримали A",{"type":7,"value":8,"toc":492},"minimark",[9,18,21,29,34,37,40,63,66,91,95,98,121,133,146,152,163,167,170,173,184,188,191,204,210,222,226,229,238,241,246,263,270,274,277,289,292,316,324,328,331,372,379,383,389,398,416,419,429,446,449,457,461,484],[10,11,12,13,17],"p",{},"Ви описали v0 застосунок, подивилися, як він його будує, і отримали посилання,\nщо закінчується на ",[14,15,16],"code",{},"vusercontent.net",". Воно працює, виглядає завершеним, і,\nможливо, ви вже комусь його надіслали. Перш ніж справжні клієнти введуть туди\nсвої дані, ви пошукали безпеку v0, і частина того, що знайшлося, була історією\nпро зловмисників, які за допомогою v0 будують фальшиві сторінки входу.",[10,19,20],{},"Ця історія про те, що інші люди роблять цим інструментом. Ця стаття про\nзастосунок, який зробили ним ви, і для нього в нас є вимірювання. З 12 по 14\nсерпня 2026 року ми прогнали ті самі дев’ять зовнішніх перевірок, які будь-хто\nможе безкоштовно запустити на нашій головній сторінці, по 30 998 живих\nзастосунках, і 1 790 із них були застосунками v0. Усі 1 790 отримали A.",[10,22,23,24,28],{},"Ось що рейтинг розуміє неправильно: ",[25,26,27],"strong",{},"ця оцінка A говорить більше про те, що\nбуло перевіряти, ніж про v0."," Як рейтинг вона робить v0 найбезпечнішим\nbuilder, якого ми вимірювали. Прочитана разом зі своїми знаменниками, вона\nописує фронтенди, за якими нічого немає, і перестає описувати ваш того дня,\nколи ви під’єднуєте базу даних.",[30,31,33],"h2",{"id":32},"чи-безпечний-v0","Чи безпечний v0?",[10,35,36],{},"У всьому, що ми змогли виміряти щодо самого v0, так. Його єдина знахідка\nналежить домену, з якого v0 віддає ваш застосунок, і нічого іншого не з’явилося\nв жодному з 1 790, у жодній із дев’яти перевірок. Чого це не може сказати, так\nце того, як поводиться ваш застосунок, коли в ньому є дані, бо майже жоден із\nцих їх не мав.",[10,38,39],{},"Уявіть попередній перегляд v0 як картотечну шафу у виставковій залі. Шухляди\nвисуваються, етикетки на місці, будь-хто, хто проходить повз, може висунути\nодну, і кожна шухляда порожня. Наші перевірки спробували кожну шухляду й ні в\nодній нічого не знайшли, і це точний звіт про порожню шафу.",[10,41,42,43,45,46,53,54,57,58,62],{},"Наскільки вона порожня, кажуть цифри. Лише 17 із 1 790 згадували проєкт\nSupabase десь у коді, який вони віддають, і на всіх 17 наша перевірка бази\nданих не отримала відповіді, яку могла б оцінити, тож кількість читабельних\nтаблиць на v0 дорівнює нулю з нуля. Усі 1 790 віддавалися з ",[14,44,16],{},",\nякий Vercel у своєму\n",[47,48,52],"a",{"href":49,"rel":50},"https:\u002F\u002Fgithub.com\u002Fpublicsuffix\u002Flist\u002Fpull\u002F2121",[51],"nofollow","запиті до Public Suffix List","\nописує як місце, «де ми розміщуємо вміст, надісланий користувачами» v0.\nЗастосунок, який ви публікуєте, потрапляє на адресу ",[14,55,56],{},"vercel.app"," або на ваш\nдомен, де ззовні ніщо не позначає його як v0, тож такі застосунки до підрахунку\nне входять. Методика й повні дані є\n",[47,59,61],{"href":60},"\u002Fresearch\u002Fvibe-coded-app-security-2026","у звіті",".",[10,64,65],{},"Тож «чи безпечний v0» це три запитання:",[67,68,69,76,85],"ol",{},[70,71,72,75],"li",{},[25,73,74],{},"Інструмент."," Що v0 перевіряє в коді, який пише, і що відмовляється\nпублікувати. Ця частина належить Vercel, і вона задокументована.",[70,77,78,81,82,84],{},[25,79,80],{},"Попередній перегляд."," Шафа у виставковій залі, за своєю адресою\n",[14,83,16],{},". Усі застосунки, які ми виміряли, були на цьому етапі.",[70,86,87,90],{},[25,88,89],{},"Застосунок, який ви наповнюєте."," Той самий код, коли в ньому дані ваших\nклієнтів або коли він працює на вашому домені. Майже ніщо з виміряного нами\nтак далеко не дійшло.",[30,92,94],{"id":93},"що-покриває-безпека-v0-до-публікації","Що покриває безпека v0 до публікації",[10,96,97],{},"Три речі, і власна документація v0 називає кожну з них.",[10,99,100,103,108,109,112,113,115,116,120],{},[25,101,102],{},"Він перечитує код, який написав.",[47,104,107],{"href":105,"rel":106},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fsecurity",[51],"Сторінка безпеки"," v0 каже, що весь згенерований\nкод «проходить аналіз безпеки перед виконанням» і що v0 «аналізує використання\n",[14,110,111],{},"NEXT_PUBLIC_"," і попереджає користувачів про можливі ризики безпеки».\n",[14,114,111],{}," це префікс, який каже Next.js, фреймворку, на якому пише v0,\nпокласти значення в код, що його завантажує кожен відвідувач.\n",[47,117,119],{"href":118},"\u002Fblog\u002Fvite-and-next-public-env-vars","Що цей префікс робить із ключем",",\nрозповідає окрема стаття.",[10,122,123,126,127,132],{},[25,124,125],{},"Він відмовляє деяким деплоям."," У\n",[47,128,131],{"href":129,"rel":130},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fv0-vibe-coding-securely",[51],"серпні 2025 року"," Vercel\nнаписав, що v0 за попередні 30 днів заблокував понад 17 000 деплоїв лише через\nвідкриті секрети, а від запуску понад 100 000 небезпечних деплоїв. Це цифри\nVercel про блокування Vercel, і воно стосується деплоїв на Vercel. Частина\nнашого нуля може бути роботою цього блокування. Наскільки велика, ззовні сказати\nне можемо.",[10,134,135,138,139,141,142,145],{},[25,136,137],{},"Інтеграція Supabase ставить префікс у правильне місце."," Під’єднана через\nVercel Marketplace, вона додає дюжину змінних середовища, і лише дві з них мають\n",[14,140,111],{},": адреса проєкту й публічний ключ, обидва призначені бути\nпублічними. ",[14,143,144],{},"SUPABASE_SECRET_KEY"," і пароль бази даних лишаються без нього, на\nсервері.",[147,148],"diagram",{"alt":149,"caption":150,"src":151},"Дванадцять рядків налаштувань у коробці. Десять мають замасковані значення й лишаються в коробці. Два мають позначку NEXT_PUBLIC_ і читабельні значення, і стрілки переносять ці два через пунктирну стіну до відвідувача назовні.","Інтеграція Supabase додає дванадцять змінних. Дві з них доходять до кожного відвідувача, і обидві мають доходити: адреса проєкту й публічний ключ.","\u002Fblog\u002Fis-v0-safe\u002Ftwo-of-twelve-1600x720.png",[153,154,156],"callout",{"type":155},"note",[10,157,158,159,62],{},"Безкоштовно, без акаунта, приблизно 20 секунд: сканування на нашій головній\nсторінці виконує всі дев’ять цих перевірок на вашому живому застосунку і пише\n«Не вдалося перевірити» замість галочки для всього, на що не отримало\nвідповіді. ",[47,160,162],{"href":161},"\u002Fsecurity-scanner","Просканувати застосунок",[30,164,166],{"id":165},"чому-в-попередньому-перегляді-v0-бракує-заголовків-безпеки","Чому в попередньому перегляді v0 бракує заголовків безпеки",[10,168,169],{},"Бо їх задає домен попереднього перегляду v0, кожен застосунок на ньому отримує\nту саму відповідь, і зсередини попереднього перегляду ви цього не зміните.",[10,171,172],{},"Заголовки безпеки це інструкції, які сайт надсилає з кожною сторінкою: завжди\nвикористовуй HTTPS, не дозволяй іншому сайту показувати цю сторінку всередині\nсвоєї, не вгадуй, що це за тип файлу. Надсилає їх той, хто віддає сторінку.\nПопередні перегляди, які ми відкрили 3 жовтня 2026 року, надсилали один із\nп’яти, які шукає наша перевірка, той, що примушує використовувати HTTPS, і\nжодного з інших чотирьох. Це знахідка на всіх 1 790 застосунках v0, і вона\nєдина.",[10,174,175,176,179,180,120],{},"Виставкова зала сама вирішує, які в неї двері й сигналізація, і ви не можете\nперепаяти їх для однієї шафи у своєму кутку. Щойно ви публікуєте, шафа стоїть у\nвашому офісі, а заголовки стають налаштуванням у ",[14,177,178],{},"vercel.json"," або у вашій\nконфігурації Next.js.\n",[47,181,183],{"href":182},"\u002Fblog\u002Fmissing-security-headers","Що робить кожен заголовок і які два нічого не коштують",[30,185,187],{"id":186},"чи-публічний-попередній-перегляд-на-vusercontentnet","Чи публічний попередній перегляд на vusercontent.net?",[10,189,190],{},"Вважайте його публічним. Будь-хто з адресою може його відкрити, а адреси\nпоширюються.",[10,192,193,194,199,200,203],{},"Кожен із 1 790 відкрився для нас без входу, і нам не довелося вгадувати жодного:\nїхні адреси взялися з публічного вебархіву, який уже зберіг копію кожного.\n",[47,195,198],{"href":196,"rel":197},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fsharing",[51],"Налаштування спільного доступу"," v0 вирішують, хто\nбачить ваш ",[25,201,202],{},"чат",": за замовчуванням приватний, далі ваша команда, будь-хто з\nпосиланням або будь-хто в інтернеті. Документація не каже, що ці налаштування\nпоширюються на попередній перегляд.",[10,205,206,207,209],{},"Тож попередній перегляд це шафа у виставковій залі. Вона годиться, щоб показати\nкомусь дизайн, і не годиться для справжніх документів будь-кого. Vercel додав\n",[14,208,16],{}," до Public Suffix List у вересні 2024 року, і через це\nбраузери вважають кожен попередній перегляд окремим сайтом, тож один попередній\nперегляд не може ставити cookie для всіх інших. Це тримає попередні перегляди\nокремо один від одного і нічого не робить для того, щоб ваш лишався приватним.",[10,211,212,213,215,216,221],{},"Якщо ви тут, бо хтось надіслав вам посилання на ",[14,214,16],{},": домен\nналежить Vercel, а сторінку на ньому зробив той, хто попросив її промптом.\n1 липня 2025 року\n",[47,217,220],{"href":218,"rel":219},"https:\u002F\u002Fwww.okta.com\u002Fblog\u002Fthreat-intelligence\u002Fokta-observes-v0-ai-tool-used-to-build-phishing-sites\u002F",[51],"Okta повідомила","\nпро зловмисників, які за допомогою v0 будували копії справжніх сторінок входу, і\nVercel обмежив доступ до тих, які знайшов. Не вводьте пароль у форму входу на\nтакій адресі, якщо ви на неї не чекали.",[30,223,225],{"id":224},"що-змінюється-коли-ви-підєднуєте-supabase-до-v0","Що змінюється, коли ви під’єднуєте Supabase до v0",[10,227,228],{},"Ви починаєте наповнювати шухляди, і перевірки, що повернулися порожніми на v0,\nпочинають мати що перевіряти.",[10,230,231,232,237],{},"v0 додає Supabase в один клік і, словами\n",[47,233,236],{"href":234,"rel":235},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fdatabases",[51],"його власної документації",", «може генерувати й\nвиконувати SQL. Це дає змогу створювати, оновлювати й видаляти таблиці». Саме\nтак з’являються ваші таблиці. Кожна таблиця це шухляда, а Row Level Security це\nзамок на ній: налаштування для кожної таблиці, яке вирішує, які рядки може\nчитати публічний ключ на вашій сторінці. Цей ключ має бути публічним, тож лише\nзамок вирішує, що отримає незнайомець.",[10,239,240],{},"Supabase ставить цей замок за замовчуванням на таблиці, створені в його Table\nEditor, і не ставить на таблиці, створені виконанням SQL, а саме так їх створює\nv0.",[147,242],{"alt":243,"caption":244,"src":245},"Дві доріжки. На верхній значок сітки створює три таблиці, кожна із закритим замком поруч. На нижній значок термінала з логотипом v0 поруч створює три таблиці, кожна з відчиненим замком, намальованим червоним.","Таблиця, створена в Table Editor Supabase, з’являється замкненою. Таблиця, створена виконанням SQL, а саме так їх створює v0, з’являється з відчиненим замком.","\u002Fblog\u002Fis-v0-safe\u002Ftwo-ways-to-make-a-table-1600x620.png",[10,247,248,249,253,254,257,258,262],{},"Саме туди лягли серйозні знахідки в усіх інших builder. Із 3 553 застосунків\nLovable, чию базу даних ми змогли запитати, 2 017 віддали рядки на запит без\nвходу, і ",[47,250,252],{"href":251},"\u002Fblog\u002Fis-lovable-safe","цифри Lovable"," показують, як виглядають\nрезультати builder, коли в шухлядах уже лежать документи. Замок, який відчиняє\nбудь-який ключ, теж не замок: політика з ",[14,255,256],{},"using (true)"," пропускає всіх, поки\nдашборд показує таблицю як захищену.\n",[47,259,261],{"href":260},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","RLS увімкнено, а таблиця все одно публічна","\nрозповідає всю історію.",[10,264,265,266,62],{},"Якщо ж ваші дані стоять за маршрутами, на які відповідає ваш власний серверний\nкод, те саме запитання стосується цих маршрутів:\n",[47,267,269],{"href":268},"\u002Fblog\u002Fopen-api-endpoint-exposed","що означає відкритий API-ендпоінт",[30,271,273],{"id":272},"що-змінюється-коли-ви-публікуєте-або-деплоїте-самі","Що змінюється, коли ви публікуєте або деплоїте самі",[10,275,276],{},"Шафа переїжджає з виставкової зали до вашого офісу, і рішення, які ухвалював\nдомен v0, стають вашими.",[10,278,279,280,285,286,288],{},"Публікація з v0 створює проєкт у Vercel і питає про три речі, згідно з\n",[47,281,284],{"href":282,"rel":283},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fdeployments",[51],"документацією v0 про деплої",": назву проєкту,\nхто може відкривати опублікований застосунок, і домен, адресу ",[14,287,56],{}," або\nваш власний. На другому пункті не поспішайте. Які варіанти ви бачите, залежить\nвід вашого тарифу, і якщо до перевірки тримати застосунок лише для команди або\nза паролем, сторонні лишаються ззовні, поки ви дивитеся.",[10,290,291],{},"Під час публікації до вас переходять три речі:",[293,294,295,301,310],"ul",{},[70,296,297,300],{},[25,298,299],{},"Заголовки."," Двері й сигналізацію офісу тепер налаштовуєте ви.",[70,302,303,306,307,309],{},[25,304,305],{},"Змінні середовища."," Вони живуть у налаштуваннях вашого проєкту, і саме в\nцьому списку ключ отримує префікс ",[14,308,111],{}," або не отримує.",[70,311,312,315],{},[25,313,314],{},"Перевірка вашого деплою, якщо ви йдете з Vercel."," Vercel описує своє\nблокування як те, що зупиняє деплої на Vercel, тож код, який ви завантажуєте\nй розміщуєте деінде, виходить без цієї перевірки.",[10,317,318,319,323],{},"Так чи інакше, ви вийшли за межі вибірки, яку ми виміряли. Застосунок v0 на\nвласному домені з базою даних за ним має більше спільного із\n",[47,320,322],{"href":321},"\u002Fblog\u002Fis-bolt-safe","застосунками Bolt, які ми виміряли",", ніж із цими 1 790\nпопередніми переглядами.",[30,325,327],{"id":326},"як-перевірити-власний-застосунок-v0","Як перевірити власний застосунок v0",[10,329,330],{},"П’ять речей, і перші три починають мати значення, лише коли ви під’єднали базу\nданих або опублікували застосунок. Використовуйте приватне вікно, щоб ваш власний\nвхід не відповідав за незнайомця.",[67,332,333,345,351,357,363],{},[70,334,335,338,339,341,342,344],{},[25,336,337],{},"Прочитайте свої змінні середовища."," У v0 вони в меню проєкту, у розділі\nSettings, Environment Variables. Усе, що починається з ",[14,340,111],{},", є в\nкоді, який завантажує кожен відвідувач. Адреса проєкту й публічний ключ там\nна місці. Ключ, за який вам виставляють рахунок, ",[14,343,144],{}," і\nбудь-що з паролем там бути не мають ніколи. Якщо хтось із них колись мав\nпрефікс, спершу ротуйте його в провайдера, бо старе значення працює, доки ви\nцього не зробите.",[70,346,347,350],{},[25,348,349],{},"Прочитайте замок на кожній таблиці."," У Supabase відкрийте Authentication →\nPolicies і пройдіться списком. Таблицю з вимкненою Row Level Security може\nпрочитати будь-хто, у кого є адреса вашого проєкту, а ця адреса є на вашій\nсторінці. Політика, яка дозволяє все всім, вважається вимкненою.",[70,352,353,356],{},[25,354,355],{},"Оберіть, хто бачить застосунок, коли публікуєте."," Лише команда або пароль,\nдоки перші два пункти не зроблено.",[70,358,359,362],{},[25,360,361],{},"Налаштуйте заголовки, щойно домен стане вашим."," Два з них займають по\nодному рядку.",[70,364,365,368,369,62],{},[25,366,367],{},"Потім подивіться ззовні."," Наше сканування виконує всі дев’ять перевірок на\nопублікованій адресі так, як це зробив би незнайомець, триває приблизно 20\nсекунд і не потребує акаунта:\n",[47,370,371],{"href":161},"просканувати застосунок безкоштовно",[10,373,374,375,62],{},"Сканування ззовні не бачить ні коду, який написав v0, ні чату, у якому ви його\nнаписали, ні таблиці, яку ваші сторінки ніколи не згадують. Перевірки v0 бачать\nкод зсередини й не бачать, що незнайомець отримує за адресою. Запускайте\nперевірки v0, поки будуєте, дивіться ззовні після публікації, і якщо вони колись\nне погодяться, чи читабельна таблиця, довіряйте відповіді ззовні, бо саме її\nотримує незнайомець. Версія простою мовою для цієї платформи:\n",[47,376,378],{"href":377},"\u002Fis-your-v0-app-safe","чи безпечний ваш застосунок v0",[30,380,382],{"id":381},"щоб-так-і-лишалося-після-публікації","Щоб так і лишалося після публікації",[10,384,385,388],{},[25,386,387],{},"Оцінка A на попередньому перегляді описує попередній перегляд."," Того дня,\nколи ви під’єднуєте базу даних або публікуєте на власному домені, ваша оцінка\nможе змінитися, і ніщо на вашому екрані не скаже, що вона змінилася.",[10,390,391],{},[25,392,393,397],{},[47,394,396],{"href":395},"\u002Fpricing","Reeve Monitor"," проганяє дев’ять перевірок знову за вас:",[293,399,400,403,406,413],{},[70,401,402],{},"усі дев’ять перевірок щогодини, для трьох застосунків максимум",[70,404,405],{},"чи працює застосунок, кожні 60 секунд",[70,407,408,409,412],{},"повідомлення, коли результат ",[25,410,411],{},"змінюється",", щоб нова таблиця чи новий ключ не чекали, поки ви глянете",[70,414,415],{},"місячний звіт про те, що він побачив",[10,417,418],{},"Monitor коштує $12 на місяць за прайсом, із сімома безкоштовними днями до\nпершого списання. Сторінка цін іноді нижча за цифру тут і ніколи не вища.",[10,420,421],{},[25,422,423,424,428],{},"Якщо ваш застосунок v0 тримає дані в Supabase,\n",[47,425,427],{"href":426},"\u002Fsupabase-backups","Reeve Care"," зберігає копію вашої бази даних Supabase.",[293,430,431,434,437,440,443],{},[70,432,433],{},"зашифрована копія щоночі, у місці, до якого ваш проєкт не дотягнеться",[70,435,436],{},"кожна копія перевірена, перш ніж її зарахувати, з підрахунком рядків у кожній таблиці",[70,438,439],{},"відновлення в один клік, коли воно знадобиться",[70,441,442],{},"ваші завантажені файли теж, щойно ви під’єднаєте облікові дані Storage",[70,444,445],{},"усе, що робить Monitor",[10,447,448],{},"Care коштує $49 на місяць за прайсом за один застосунок, із тими самими сімома\nбезкоштовними днями.",[10,450,451,452,456],{},"Документація v0 каже, що він може не лише створювати таблиці, а й видаляти їх, і\nжодна з дев’яти перевірок вище не повернула б рядки такої таблиці.\n",[47,453,455],{"href":454},"\u002Fblog\u002Fai-agent-deleted-my-database","День, коли ШІ-агент видалив продакшн-базу даних","\nпоказує, як це виглядає зсередини.",[30,458,460],{"id":459},"що-зробити-цього-тижня","Що зробити цього тижня",[462,463,464],"key-takeaways",{},[293,465,466,469,475,478,481],{},[70,467,468],{},"Якщо ваш застосунок v0 досі попередній перегляд, вважайте його адресу публічною й не тримайте в ньому дані реальних людей.",[70,470,471,472,474],{},"Перш ніж під’єднати базу даних, вирішіть, де живе кожен ключ: ",[14,473,111],{}," для адреси проєкту й публічного ключа, а для всього іншого нічого поруч із браузером.",[70,476,477],{},"Після під’єднання Supabase прочитайте політику кожної таблиці, яку створив v0, і вважайте вимкненою таку, що дозволяє все всім.",[70,479,480],{},"Публікуйте лише для команди або за паролем, доки це не зроблено, а потім перевірте опубліковану адресу ззовні.",[70,482,483],{},"Тримайте копію своєї бази даних там, куди не дістануть ні v0, ні ваш проєкт, і перевірте, що копія відновлюється.",[10,485,486,487,491],{},"Почніть зі змінних середовища, бо саме вони вирішують, що завантажує кожен\nвідвідувач. Якщо ви ще обираєте builder,\n",[47,488,490],{"href":489},"\u002Fblog\u002Fsafest-ai-app-builder","який AI-конструктор застосунків найбезпечніший","\nставить усі п’ять поруч.",{"title":493,"searchDepth":494,"depth":494,"links":495},"",3,[496,498,499,500,501,502,503,504,505],{"id":32,"depth":497,"text":33},2,{"id":93,"depth":497,"text":94},{"id":165,"depth":497,"text":166},{"id":186,"depth":497,"text":187},{"id":224,"depth":497,"text":225},{"id":272,"depth":497,"text":273},{"id":326,"depth":497,"text":327},{"id":381,"depth":497,"text":382},{"id":459,"depth":497,"text":460},"Основи безпеки","\u002Fblog\u002Fis-v0-safe\u002Fcover-1200x630.png","Картотечна шафа з логотипом v0 і висунутою порожньою шухлядою, поруч шафа, де всі шухляди замкнені.","Безпека v0 на 1 790 живих застосунках v0: усі отримали A. Лише 17 згадували базу даних, і саме це здебільшого вимірює оцінка A.",false,"md",[513,515,518,521,524,527],{"q":33,"a":514},"У тому, що ми змогли виміряти, v0 вийшов чистішим за будь-який інший просканований builder. Усі 1 790 живих застосунків v0 отримали A, а єдина спільна для них знахідка була налаштуванням браузерних заголовків на домені, з якого v0 віддає попередні перегляди. Проте лише 17 із них згадували базу даних, і жоден із цих 17 не відповів нашій перевірці бази даних, тож оцінка A здебільшого описує фронтенди, за якими нічого немає. Щойно ви під’єднуєте Supabase або публікуєте застосунок на власному домені, перевірки, що вирішують про серйозну оцінку, починають стосуватися і вас.",{"q":516,"a":517},"Чи безпечні застосунки v0 за замовчуванням?","Частини, які контролює v0, у доброму стані. Його документація каже, що згенерований код проходить аналіз безпеки перед виконанням і що v0 попереджає про ризиковане використання префікса NEXT_PUBLIC_, а в серпні 2025 року Vercel повідомив, що v0 за 30 днів заблокував понад 17 000 деплоїв через відкриті секрети. Чого не вирішує жодне налаштування за замовчуванням, так це замок на ваших таблицях. Supabase не вмикає Row Level Security для таблиць, створених виконанням SQL, а саме так їх створює v0, тож прочитайте політику кожної таблиці після того, як під’єднаєте базу даних.",{"q":519,"a":520},"Чи публічна URL-адреса попереднього перегляду на vusercontent.net?","Вважайте її публічною. Кожен із 1 790 попередніх переглядів v0, які ми просканували, відкрився без входу, а їхні адреси ми знайшли в публічному вебархіві. Налаштування спільного доступу у v0 визначають, хто бачить ваш чат, і документація не каже, що вони поширюються на попередній перегляд. Не тримайте в попередньому перегляді дані реальних людей, а під час публікації оберіть видимість лише для команди або за паролем, доки застосунок не буде готовий для сторонніх.",{"q":522,"a":523},"Чи безпечний vusercontent.net?","Домен справжній і належить Vercel, який розміщує на ньому те, що люди генерують у v0. Але сторінку за конкретною адресою зробив той, хто попросив її промптом, і в липні 2025 року Okta повідомила про зловмисників, які за допомогою v0 будували копії сторінок входу. Vercel обмежив доступ до тих, які знайшов. Якщо посилання, на яке ви не чекали, відкриває форму входу на адресі vusercontent.net, не вводьте туди пароль.",{"q":525,"a":526},"Що змінюється, коли я під’єдную Supabase до v0?","Тепер за вашим фронтендом є дані, тож перевірки, що повернулися порожніми на застосунках v0, починають мати що перевіряти. v0 може виконувати SQL, щоб створювати таблиці, а Supabase не вмикає Row Level Security для таблиць, створених так. Ваш публічний ключ має бути на сторінці, тож лише політика кожної таблиці вирішує, що може прочитати незнайомець. Із 3 553 застосунків Lovable, чию базу ми змогли запитати, 2 017 віддали рядки на запит без входу.",{"q":528,"a":529},"Що змінюється, коли я сам деплою код із v0?","Три речі стають вашими. Заголовки безпеки, які обирав домен попереднього перегляду v0, стають налаштуванням у vercel.json або у вашій конфігурації Next.js. Ваші змінні середовища, і те, які з них мають префікс NEXT_PUBLIC_, живуть у вашому власному проєкті. А код, який ви завантажуєте й розміщуєте деінде, ніж у Vercel, більше не проходить перевірку деплою, яку Vercel описує для v0. Подивіться на опубліковану адресу ззовні, щойно вона запрацює.","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",[532,533,534,535,536,537,538,539,540],"безпека v0","чи безпечний v0","безпека v0.dev","чи безпечно користуватися v0","безпека vercel v0","чи безпечні застосунки v0","безпека застосунків v0","безпека деплою v0","чи безпечний vusercontent.net",{},true,"\u002Fblog\u002Fis-v0-safe","2026-10-03",{"title":5,"description":509},"blog\u002Fis-v0-safe",[548,549,550],"За безпекою v0 вийшов чистішим за будь-який інший builder, який ми вимірювали: усі 1 790 живих застосунків v0, які ми просканували, отримали A, а єдина спільна для них знахідка це налаштування заголовків на домені, з якого v0 їх віддає.","Це здебільшого факт про те, чим ці застосунки є. Лише 17 із 1 790 згадували базу даних, і жоден із цих 17 не дав нашій перевірці бази даних відповіді, яку вона могла б оцінити.","Під’єднайте Supabase або опублікуйте застосунок на власному домені, і перевірки, що повернулися порожніми, почнуть мати що перевіряти.","sWW9XeFWO3FDtgPcvLj58iWiLfoNqQlqTebJu41ecrg",[553,559,565,571,577,583,589,595,601,602,607,613,619,625,632,638,644,649,654,660,666,672,677,683,689,694,700,706,712,718,724,730,735,741,747,753,759,765,771,776,782,788,794,800,806,812,818,824,830,836,842,848,854,859,865,870,876,882,887,892,898],{"path":554,"title":555,"description":556,"published":557,"category":506,"image":558,"draft":510},"\u002Fblog\u002Fstorage-upload-violates-row-level-security","\"Row-level security policy for table objects\" при вивантаженні","\"New row violates row-level security policy for table objects\" означає, що вашому вивантаженню бракує правила insert. Публічний бакет його не додає.","2026-10-11","\u002Fblog\u002Fstorage-upload-violates-row-level-security\u002Fcard-800x500.png",{"path":560,"title":561,"description":562,"published":563,"category":506,"image":564,"draft":510},"\u002Fblog\u002Fbase44-security-scan","Сканування безпеки Base44: те, що бачить лише воно","Сканування безпеки Base44 перевіряє сім видів проблем зсередини. Ось половина, яку читає тільки воно, і половина, на яку воно ніколи не дивиться.","2026-10-10","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":566,"title":567,"description":568,"published":569,"category":506,"image":570,"draft":510},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Ваш API-ключ витік. Порядок дій","API-ключ витік, і ви не знаєте, що робити першим. Не кожен ключ у вашому фронтенді є витоком, а порядок важить більше за швидкість.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":572,"title":573,"description":574,"published":575,"category":506,"image":576,"draft":510},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" без вимкнення RLS","\"Infinite recursion detected in policy for relation\" означає, що ваша policy запитала таблицю, яку вона захищає. Ось як розірвати коло.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":578,"title":579,"description":580,"published":581,"category":506,"image":582,"draft":510},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" у Supabase, і хибне виправлення","\"No API key found in request\" означає, що запит дійшов до Supabase без ключа. Більшість відповідей натомість вказують на правила вашої бази.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":584,"title":585,"description":586,"published":587,"category":506,"image":588,"draft":510},"\u002Fblog\u002Fis-base44-safe","Чи безпечний Base44? Дані 5 442 застосунків","Чи безпечний Base44? Ми прогнали дев’ять перевірок на 5 442 робочих застосунках Base44. Майже всі отримали B з причин, яких власник ніколи не обирав.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":590,"title":591,"description":592,"published":593,"category":506,"image":594,"draft":510},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Сховати ключ API: перенесіть його в Supabase Edge Function","Сховати ключ API означає прибрати його з браузера, а Supabase Edge Function це найменше місце, куди його покласти. Два кроки поруч важать більше.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":596,"title":597,"description":598,"published":599,"category":506,"image":600,"draft":510},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Чи відкритий ваш файл .env? Дванадцять шляхів для перевірки","Чи відкритий ваш файл .env на вашому власному вебсервері? Дванадцять адрес скажуть це за хвилину, а влучання означає, що все в ньому вже публічне.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":543,"title":5,"description":509,"published":544,"category":506,"image":530,"draft":510},{"path":321,"title":603,"description":604,"published":605,"category":506,"image":606,"draft":510},"Чи безпечний Bolt? Що показали 1 123 застосунки Bolt","Чи безпечний Bolt? Ми прогнали 1 123 живі застосунки Bolt через дев’ять перевірок. Хостинг був чистим. Знахідки: ключі й відкриті таблиці в самих застосунках.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":608,"title":609,"description":610,"published":611,"category":506,"image":612,"draft":510},"\u002Fblog\u002Fis-supabase-down-or-your-app","Supabase не працює чи проблема у вашому застосунку? Як розрізнити","Supabase не працює чи зламався ваш застосунок? Пауза, повна база й ваша власна помилка виглядають однаково. Чотири перевірки їх розрізняють.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":614,"title":615,"description":616,"published":617,"category":506,"image":618,"draft":510},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","Чи шифрує Supabase мої дані? Так. Ось від чого це захищає","Чи шифрує Supabase дані? Так: AES-256 у стані спокою, TLS під час передавання, SOC 2 та ISO 27001. Що покриває кожне і який витік не зупиняє жодне.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":620,"title":621,"description":622,"published":623,"category":506,"image":624,"draft":510},"\u002Fblog\u002Fsupabase-free-plan-limits","Ліміти безкоштовного тарифу Supabase і що стається на кожному","Ліміти безкоштовного тарифу Supabase: 500 МБ бази, 5 ГБ egress і жодних резервних копій. Що стається на кожній межі і що змінює Pro за $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":626,"title":627,"description":628,"published":629,"category":630,"image":631,"draft":510},"\u002Fblog\u002Ftest-your-supabase-backup","Перевірте резервну копію Supabase до того, як вона знадобиться","Як перевірити резервну копію Supabase: відновити в тестовий проєкт, порахувати рядки, увійти й знайти рядок, якого бракує обрізаному файлу.","2026-09-28","Backups","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":633,"title":634,"description":635,"published":636,"category":630,"image":637,"draft":510},"\u002Fblog\u002Fsupabase-backup-github-action","Безкоштовна резервна копія Supabase через GitHub Action і підступ","Резервна копія Supabase через GitHub Action безкоштовна й годиться багатьом застосункам. Робочий процес, потрібний рядок підключення та egress.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":639,"title":640,"description":641,"published":642,"category":630,"image":643,"draft":510},"\u002Fblog\u002Fdownload-your-supabase-backup","Чому ви не можете завантажити резервну копію Supabase","Завантажити резервну копію Supabase на сучасному проєкті не вийде: щоденна копія там фізична. Як це перевірити і як тримати власну копію.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":645,"title":646,"description":647,"published":642,"category":506,"image":648,"draft":510},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": бракує GRANT","З 30 жовтня нова таблиця в Supabase відповідає \"permission denied for table\", доки ви не дасте доступ. Лист показує лише половину виправлення.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":268,"title":650,"description":651,"published":652,"category":506,"image":653,"draft":510},"Чи є відкритий API-ендпоінт проблемою безпеки? Читайте JSON","Ваше сканування позначило відкритий API-ендпоінт. Чи це важливо, залежить від того, що повернулося, і більшість знайдених належали платформі.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":655,"title":656,"description":657,"published":658,"category":506,"image":659,"draft":510},"\u002Fblog\u002Flovable-security-scan","Сканування безпеки Lovable: чого воно не доведе","Сканування безпеки Lovable: що перевіряють Quick scan і Deep scan, коли запускається кожне, і єдине, чого не доведе жодне сканування зсередини.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":661,"title":662,"description":663,"published":664,"category":630,"image":665,"draft":510},"\u002Fblog\u002Fsupabase-backup-auth-users","Чому у вашому дампі Supabase немає користувачів","Запустіть supabase db dump окремо і отримаєте форму вашої бази та жодного її рядка, без схеми auth, у якій живуть ваші користувачі.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":667,"title":668,"description":669,"published":670,"category":506,"image":671,"draft":510},"\u002Fblog\u002Fdomain-and-certificate-expiry","Домен закінчився, сайт лежить: що буде далі","Ваш домен закінчився і сайт лежить. Ось який годинник уже пішов, чому прострочений сертифікат це менша з двох бід, і як перевірити обидва.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":251,"title":673,"description":674,"published":675,"category":506,"image":676,"draft":510},"Чи безпечний Lovable? Що показали 18 554 застосунки Lovable","Чи безпечний Lovable? Ми прогнали 18 554 живі застосунки Lovable через дев’ять перевірок. Платформа виявилася найчистішою з п’яти. Знахідки були в застосунках.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":678,"title":679,"description":680,"published":681,"category":506,"image":682,"draft":510},"\u002Fblog\u002Fvibe-coded-app-security-checklist","Чек-лист безпеки для vibe coding, у девʼяти перевірках","Чек-лист безпеки для vibe coding із девʼяти пунктів, кожен з яких будь-хто може перевірити у вашому живому застосунку ззовні, і кожен має тест на один рядок.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":684,"title":685,"description":686,"published":687,"category":506,"image":688,"draft":510},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Секретний ключ Stripe у фронтенді може рухати гроші","Секретний ключ Stripe, відкритий у вашому фронтенді, може повертати кошти, списувати й читати кожну картку клієнта. А ключ pk_live_ там і має бути.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":118,"title":690,"description":691,"published":692,"category":506,"image":693,"draft":510},"Змінні оточення Vite відкриті: префікс означає опублікувати це","Змінні оточення Vite відкриті у вашому застосунку, бо так просив префікс. VITE_ і NEXT_PUBLIC_ означають опублікувати це, а ШІ, який їх додав, не знав ціни.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":695,"title":696,"description":697,"published":698,"category":506,"image":699,"draft":510},"\u002Fblog\u002Fbase44-source-maps","Безпека Base44: що позначає скан і що з цього виправляти вам","Безпека Base44 на 5 438 просканованих застосунках: три знахідки майже на кожному належать платформі, source map є бейджем Base44, а ваша частина коротка.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":701,"title":702,"description":703,"published":704,"category":506,"image":705,"draft":510},"\u002Fblog\u002Fis-cursor-ai-safe","Чи безпечний Cursor AI? Редактор, код і опублікований застосунок","Чи безпечний Cursor AI? Три запитання в одному пошуку: що Cursor зберігає, у чому помиляється його код і чи відкритий застосунок, який ви опублікували.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":707,"title":708,"description":709,"published":710,"category":506,"image":711,"draft":510},"\u002Fblog\u002Fis-replit-safe","Чи безпечний Replit? Що ми знайшли в 3 042 живих застосунках Replit","Чи безпечний Replit? Ми прогнали 3 042 живі застосунки Replit через дев’ять зовнішніх перевірок. Знахідки були в опублікованому застосунку, а не в хостингу.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":713,"title":714,"description":715,"published":716,"category":630,"image":717,"draft":510},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: у копії бази даних немає жодного файлу","Supabase storage backup це окрема робота. Копії бази даних зберігають список ваших файлів і жодного з них, тож після відновлення кожне завантаження зламане.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":719,"title":720,"description":721,"published":722,"category":630,"image":723,"draft":510},"\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":725,"title":726,"description":727,"published":728,"category":630,"image":729,"draft":510},"\u002Fblog\u002Fsupabase-project-paused-recover","Проєкт Supabase на паузі? Ваші дані нікуди не зникли","Supabase поставив ваш проєкт на паузу після тижня без активності. Нічого не видалено, кнопка Restore стоїть поруч із назвою, і у вас є рік, щоб натиснути.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":489,"title":731,"description":732,"published":733,"category":506,"image":734,"draft":510},"Який білдер застосунків з ШІ найбезпечніший? 30 998 тестів","Який білдер застосунків з ШІ найбезпечніший? Ми просканували 30 998 живих застосунків з Lovable, Base44, Replit, v0 і Bolt. Оцінку вирішує не білдер.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":736,"title":737,"description":738,"published":739,"category":506,"image":740,"draft":510},"\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":742,"title":743,"description":744,"published":745,"category":506,"image":746,"draft":510},"\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":748,"title":749,"description":750,"published":751,"category":506,"image":752,"draft":510},"\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":754,"title":755,"description":756,"published":757,"category":506,"image":758,"draft":510},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Сканери безпеки для vibe coding у порівнянні, наш теж","Найкращий сканер безпеки для vibe coding залежить від трьох питань, на які не відповідає жоден перелік функцій. Десять інструментів і ціни.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":760,"title":761,"description":762,"published":763,"category":506,"image":764,"draft":510},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: п’ять перевірок, які зробите самі","Supabase security checker читає ваш опублікований застосунок, а не налаштування проєкту. Ось п’ять перевірок і як виконати кожну самостійно.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":766,"title":767,"description":768,"published":769,"category":506,"image":770,"draft":510},"\u002Fblog\u002Fvibe-coding-security-scanner","Сканер безпеки для vibe coding: чого не бачить скан URL","Сканер безпеки для vibe coding читає ваш робочий застосунок ззовні. Що це охоплює, чотири речі, яких він не бачить, і як читати результат.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":182,"title":772,"description":773,"published":774,"category":506,"image":775,"draft":510},"Відсутні заголовки безпеки: коли це справді важливо","Відсутні заголовки безпеки трапляються в наших звітах найчастіше. Від чого вони захищають і коли це найменш терміновий рядок вашого звіту.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":777,"title":778,"description":779,"published":780,"category":506,"image":781,"draft":510},"\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":783,"title":784,"description":785,"published":786,"category":506,"image":787,"draft":510},"\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":789,"title":790,"description":791,"published":792,"category":630,"image":793,"draft":510},"\u002Fblog\u002Fsupabase-backup-tools-compared","Інструменти резервного копіювання Supabase, і наш серед них","Чотири види інструментів резервного копіювання Supabase, що копіює кожен і коли безкоштовна GitHub Action виграє в будь-якої оплати, нашої теж.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":795,"title":796,"description":797,"published":798,"category":506,"image":799,"draft":510},"\u002Fblog\u002Freplit-secrets-explained","Як користуватися секретами в Replit і що все одно публікується","Як користуватися секретами в Replit: додати, прочитати і усунути дві причини undefined. А ще ключі, які цей інструмент не здатен зберегти в таємниці.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":801,"title":802,"description":803,"published":804,"category":630,"image":805,"draft":510},"\u002Fblog\u002Fback-up-supabase-free-tier","Резервні копії на безкоштовному тарифі Supabase без терміналу","На безкоштовному тарифі Supabase резервних копій немає: копію робите ви. Як зробити її з панелі та що втрачає шлях через CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":807,"title":808,"description":809,"published":810,"category":506,"image":811,"draft":510},"\u002Fblog\u002Fis-supabase-secure","Чи безпечний Supabase? Так. Ваш проєкт це інше питання","Чи безпечний Supabase? Платформа проходить аудити, шифрує дані й тримає пентести. Їхня документація каже, де це закінчується і починаються ваші налаштування.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":813,"title":814,"description":815,"published":816,"category":506,"image":817,"draft":510},"\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":819,"title":820,"description":821,"published":822,"category":506,"image":823,"draft":510},"\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":825,"title":826,"description":827,"published":828,"category":506,"image":829,"draft":510},"\u002Fblog\u002Fcors-wildcard-security-risk","Чи є вайлдкард CORS ризиком для безпеки? Майже ніколи.","Чи є вайлдкард CORS ризиком для безпеки? Зазвичай це типове налаштування вашого білдера, і воно не видає нічого, що ваш сервер і так віддавав кожному.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":831,"title":832,"description":833,"published":834,"category":630,"image":835,"draft":510},"\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":837,"title":838,"description":839,"published":840,"category":630,"image":841,"draft":510},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Як відновити резервну копію Supabase, і що ламається потім","Як відновити резервну копію Supabase з панелі або з файлу дампа, що саме замінює відновлення і чому ваш застосунок може лишитися зламаним після нього.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":843,"title":844,"description":845,"published":846,"category":506,"image":847,"draft":510},"\u002Fblog\u002Fsupabase-storage-bucket-public","Ваш бакет Supabase Storage публічний. Чи це проблема?","Публічний бакет Supabase Storage означає, що той, хто має URL файлу, може його відкрити. Він не означає, що хтось може переглянути список вмісту.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":849,"title":850,"description":851,"published":852,"category":506,"image":853,"draft":510},"\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":454,"title":855,"description":856,"published":857,"category":630,"image":858,"draft":510},"ШІ-агент видалив мої дані в Supabase. Що можна відновити?","ШІ-агент видалив дані з вашої бази. Те, що ви зможете відновити, вирішилося раніше, а наступні хвилини вирішують, скільки з цього вціліє.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":860,"title":861,"description":862,"published":863,"category":506,"image":864,"draft":510},"\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":866,"title":867,"description":868,"published":863,"category":506,"image":869,"draft":510},"\u002Fblog\u002Fsource-maps-exposed-in-production","Відкриті source maps: ваш застосунок публікує свій вихідний код","Відкрита source map дає будь-кому прочитати оригінальний код вашого застосунку, разом із коментарями. Перевірка за 30 секунд, і що важить насправді.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":871,"title":872,"description":873,"published":874,"category":506,"image":875,"draft":510},"\u002Fblog\u002Fsupabase-new-api-keys","Нові API-ключі Supabase: який із них безпечний у застосунку?","Supabase замінив anon і service_role публічними та секретними ключами. Який із них має бути у вашому застосунку, а який не має бути ніколи?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":877,"title":878,"description":879,"published":880,"category":630,"image":881,"draft":510},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Чи робить Supabase резервні копії моєї бази? Залежить від тарифу.","Чи робить Supabase резервні копії вашої бази даних? На платних тарифах щодня, на безкоштовному жодної. Як дізнатися, що у вас насправді є.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":260,"title":883,"description":884,"published":885,"category":506,"image":886,"draft":510},"Supabase Row Level Security увімкнено. Таблиця досі публічна.","Увімкнути Supabase Row Level Security не означає захистити таблицю. Захищають політики, а та, що полагодила застосунок, часто впускає всіх.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":888,"title":889,"description":890,"published":885,"category":630,"image":891,"draft":510},"\u002Fblog\u002Fversion-history-is-not-a-backup","Історія версій не є резервною копією. Вона не поверне таблицю.","Lovable і Bolt ведуть історію версій вашого коду. Ваша база даних працює як окремий сервіс, тож відкат назад не поверне ваші дані.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":893,"title":894,"description":895,"published":896,"category":630,"image":897,"draft":510},"\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":899,"title":900,"description":901,"published":896,"category":506,"image":902,"draft":510},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Які API-ключі безпечні у браузері, а які ні","Ваш ключ anon у Supabase створений, щоб бути публічним. Ключ service_role для цього не створений, і він ігнорує всі правила, які ви задали. Як їх розрізнити.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791705966115]