[{"data":1,"prerenderedAt":653},["ShallowReactive",2],{"blog-uk-is-supabase-secure":3,"blog-index-uk":411},{"id":4,"title":5,"body":6,"category":367,"cover":368,"coverAlt":369,"description":370,"draft":371,"extension":372,"faq":373,"image":391,"keywords":392,"meta":400,"navigation":401,"ogTitle":25,"path":402,"published":403,"seo":404,"stem":405,"tldr":406,"updated":403,"__hash__":410},"blog_uk\u002Fblog\u002Fis-supabase-secure.md","Чи безпечний Supabase? Так. Ваш проєкт це інше питання",{"type":7,"value":8,"toc":355},"minimark",[9,13,21,26,29,40,43,46,50,53,59,68,71,77,80,84,87,90,93,101,108,112,115,235,238,242,245,251,262,272,277,287,291,313,325,332,336,339,342,345,348],[10,11,12],"p",{},"Хтось сказав вам, що Supabase не годиться для справжніх даних користувачів.\nХтось інший сказав, що на ньому працює половина застосунків, про які ви цього\nроку чули. Обидва були впевнені, і жоден із них не відкривав ваш застосунок.",[10,14,15,16,20],{},"Ось те, що гайд за гайдом розуміє неправильно: ",[17,18,19],"strong",{},"на \"чи безпечний Supabase\" і \"чи\nбезпечний мій проєкт на Supabase\" відповідають дві різні людини."," Supabase відповідає на перше, і відповідає добре. Друге ваше, хоч би\nчи казав вам хтось, що його передали.",[22,23,25],"h2",{"id":24},"чи-безпечний-supabase","Чи безпечний Supabase?",[10,27,28],{},"Так. Зовнішні аудитори оглянули платформу, і її сертифікації задокументовані.",[10,30,31,32,39],{},"Supabase відповідає SOC 2 Type 2 і сертифікований за ISO 27001. Дані клієнтів\nшифруються у спокої через AES-256 і в передачі через TLS. Для медичних даних є\nпропозиція HIPAA, якій потрібні додаток і підписана угода. Тести на проникнення\nпроводяться регулярно із зовнішніми фахівцями, і все це опубліковано на\n",[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fsupabase.com\u002Fsecurity",[37],"nofollow","їхній сторінці безпеки",".",[10,41,42],{},"Уявіть це як будинок. Фундамент тримає, протипожежні двері працюють, на вході\nстоїть охоронець, а на стіні висить сертифікат від когось, хто приходив і\nперевіряв. Це справді те, що ви купуєте.",[10,44,45],{},"Ваш проєкт займає квартиру в цьому будинку.",[22,47,49],{"id":48},"що-насправді-покриває-цей-сертифікат","Що насправді покриває цей сертифікат?",[10,51,52],{},"Будинок. Supabase записує межу одним реченням, у власній SOC 2 документації:",[54,55,56],"blockquote",{},[10,57,58],{},"Відповідність Supabase SOC 2 не переноситься на середовища поза продуктом\nSupabase або поза контролем Supabase.",[10,60,61,62,67],{},"На тій самій сторінці додано, що дані на клієнтському боці цієї межі є\nвідповідальністю клієнта, а їхня\n",[33,63,66],{"href":64,"rel":65},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdeployment\u002Fshared-responsibility-model",[37],"модель спільної відповідальності","\nвизначає, який бік який. Supabase веде інфраструктуру, операційну систему,\nоновлення Postgres і моніторинг самої платформи. На вашому боці лишаються ваш\nакаунт і те, хто має до нього доступ, ваші дані, секрети вашої бази й\nAPI-ключі, та Row Level Security, який ця сторінка радить застосовувати завжди.",[10,69,70],{},"Останній пункт вміщує всю цю статтю. Row Level Security ставить правило на\nкожну таблицю, і воно каже, хто які рядки може читати. Воно лишається вимкненим, доки\nхтось його не увімкне, а вмикають його всередині вашого проєкту, на сторінці,\nяку ви, можливо, ніколи не відкривали.",[72,73],"diagram",{"alt":74,"caption":75,"src":76},"Дві огорожі, одна всередині іншої. Зовнішня стіна суцільна, з галочкою й табличкою SOC 2; запит проходить крізь її охоронювану браму. Внутрішня стіна, підписана RLS, має проріз, і запит іде далі крізь цей проріз до стосу рядків бази даних.","Зовнішню стіну перевірено й сертифіковано. Запит, який дістався ваших рядків, пройшов крізь проріз у стіні всередині, а її креслить ваш проєкт.","\u002Fblog\u002Fis-supabase-secure\u002Fwhere-the-certificate-stops-1600x760.png",[10,78,79],{},"Сертифікат стосується будинку. Із квартирами платформа робить одне: показує\nдвері. Security Advisor у вашій панелі називає кожну таблицю з\nвимкненим правилом і лишає рішення вам.",[22,81,83],{"id":82},"чому-ж-тоді-стільки-застосунків-на-supabase-віддають-дані","Чому ж тоді стільки застосунків на Supabase віддають дані?",[10,85,86],{},"Бо все на вашому боці цієї межі й далі працює бездоганно, поки стоїть навстіж\nвідчинене.",[10,88,89],{},"У серпні 2026 ми просканували 30 998 живих застосунків, зроблених у Lovable,\nBase44, Replit, v0 і Bolt. У 3 680 з них нам вдалося довести до кінця перевірку,\nяка питає базу даних, без жодного логіна, чи віддасть вона рядки. 2 096\nвідповіли \"так\" щонайменше на одній таблиці. Storage розповів ту саму історію\nпід іншим кутом: із 27 269 застосунків, які вдалося перевірити, 792 мали бакет,\nщо його міг перелічити незнайомець.",[10,91,92],{},"Нічого з цього не було збоєм Supabase. Кожна з тих відповідей прийшла з\nоновленої, зашифрованої бази на сертифікованій платформі, яка робила рівно те,\nщо їй сказав її власний проєкт. Із будинком усе було гаразд. Двері всередині\nстояли відчинені.",[10,94,95,96,100],{},"Це стається через порядок, у якому все будується. Ваш застосунок працює з\nпершого дня, і працює однаково, написані правила чи ні, тож немає моменту, коли\nщось ламається й змушує вас подивитися.\n",[33,97,99],{"href":98},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Повне вимірювання"," розкладає, що\nсаме нам вдалося побачити, а що ні.",[10,102,103,104,39],{},"Якщо вам потрібна відповідь про власний застосунок, а не про платформу, наше\nбезкоштовне сканування робить той самий анонімний запит іззовні й показує, які з\nваших таблиць відповіли. Близько 20 секунд, без акаунта:\n",[33,105,107],{"href":106},"\u002F#scan","сканувати застосунок",[22,109,111],{"id":110},"чи-годиться-supabase-для-продакшену","Чи годиться Supabase для продакшену?",[10,113,114],{},"Годиться, і того, що маєте зробити ви, небагато, бо довгу половину Supabase уже\nзробив.",[116,117,118,134],"table",{},[119,120,121],"thead",{},[122,123,124,128,131],"tr",{},[125,126,127],"th",{},"Питання",[125,129,130],{},"Хто цим займається",[125,132,133],{},"Що це означає для вас",[135,136,137,149,158,167,177,190,211,223],"tbody",{},[122,138,139,143,146],{},[140,141,142],"td",{},"Патчі серверів, оновлення Postgres, система",[140,144,145],{},"Supabase",[140,147,148],{},"Робити нічого",[122,150,151,154,156],{},[140,152,153],{},"Шифрування у спокої та в передачі",[140,155,145],{},[140,157,148],{},[122,159,160,163,165],{},[140,161,162],{},"Фізична безпека, мережева безпека, пентести",[140,164,145],{},[140,166,148],{},[122,168,169,172,174],{},[140,170,171],{},"Резервні копії вашої бази",[140,173,145],{},[140,175,176],{},"Щодня на платному плані й жодної на безкоштовному. Перевірте, який у вас",[122,178,179,182,187],{},[140,180,181],{},"Які рядки дозволено читати відвідувачу",[140,183,184],{},[17,185,186],{},"Ви",[140,188,189],{},"Політика Row Level Security на кожній таблиці зі справжніми даними",[122,191,192,195,199],{},[140,193,194],{},"Який ключ потрапив у ваш застосунок",[140,196,197],{},[17,198,186],{},[140,200,201,202,206,207,210],{},"Публічний ключ там доречний. ",[203,204,205],"code",{},"service_role"," і ",[203,208,209],{},"sb_secret_"," ніколи",[122,212,213,216,220],{},[140,214,215],{},"Які файли може перелічити незнайомець",[140,217,218],{},[17,219,186],{},[140,221,222],{},"Позначка public на кожному бакеті, окремо від правил ваших таблиць",[122,224,225,228,232],{},[140,226,227],{},"Хто може увійти у ваш акаунт Supabase",[140,229,230],{},[17,231,186],{},[140,233,234],{},"Пароль, якого більше ні в кого немає, і другий фактор на акаунті",[10,236,237],{},"Кожен рядок нижньої половини описує налаштування, і кожне налаштування займає\nкілька хвилин у панелі. Платформа приїжджає готовою до продакшену.\nКонфігурація приїжджає в тому стані, у якому її лишив ваш білдер.",[22,239,241],{"id":240},"як-перевірити-власний-проєкт","Як перевірити власний проєкт?",[10,243,244],{},"Три місця, і жодне з них не потребує читати рядок SQL.",[10,246,247,250],{},[17,248,249],{},"Відкрийте Security Advisor у своїй панелі Supabase."," Він перелічує кожну\nтаблицю з вимкненим Row Level Security, а це найгрубіша версія цієї проблеми, і\nSupabase добре її позначає. Проєкт із порожнім списком там закрив перше\nпитання.",[10,252,253,256,257,261],{},[17,254,255],{},"Далі прочитайте політику на будь-якій таблиці, де лежать люди."," Advisor не\nможе вирішити, чи дозвільна політика була навмисною, бо для каталогу товарів\nвона була б правильною. Таблиця може мати увімкнений перемикач, чинну політику\nй зелену галочку в панелі й усе одно віддавати свої рядки кожному, хто спитає;\n",[33,258,260],{"href":259},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","чотири стани, у яких може бути таблиця","\nпоказують, як упізнати свій.",[10,263,264,267,268,39],{},[17,265,266],{},"Далі подивіться Storage."," У бакетів власні налаштування, і правила ваших\nтаблиць туди не дістають, тож щільно закрита база нічого не каже про\n",[33,269,271],{"href":270},"\u002Fblog\u002Fsupabase-storage-bucket-public","файли, які завантажили ваші користувачі",[72,273],{"alt":274,"caption":275,"src":276},"Товста зовнішня стіна з табличкою SOC 2 і галочкою тягнеться на задньому плані. Перед нею стоїть менша огорожа з трьома дверима, кожні підписані моношрифтом: RLS, public і service_role.","Стіну позаду перевіряє хтось інший. Ці три ручки всередині вашого власного проєкту, і кожна з них відкривається сторінкою у вашій панелі.","\u002Fblog\u002Fis-supabase-secure\u002Fthree-doors-you-own-1600x700.png",[10,278,279,280,284,285,39],{},"Є четверте питання, на яке панель відповісти не може: який ключ насправді\nпотрапив у ваш застосунок. Сторінка налаштувань перелічує ключі, які має ваш\nпроєкт, а який із них туди зайшов, фіксує тільки ваш застосунок.\nПрочитати ключ на власній живій сторінці можна за\n",[33,281,283],{"href":282},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","дві хвилини",", або наше\nбезкоштовне сканування прочитає його за вас разом з усім вищепереліченим:\n",[33,286,107],{"href":106},[22,288,290],{"id":289},"що-робити-зараз","Що робити зараз",[292,293,294],"key-takeaways",{},[295,296,297,301,304,307,310],"ul",{},[298,299,300],"li",{},"Перестаньте питати, чи безпечний Supabase. Безпечний, і за цим стоять звіт SOC 2 Type 2, ISO 27001, шифрування AES-256 у спокої та регулярні тести на проникнення.",[298,302,303],{},"Прочитайте межу їхніми ж словами. Відповідність покриває продукт Supabase, а ваші політики Row Level Security, ключі та бакети лежать на вашому боці.",[298,305,306],{},"Спершу відкрийте Security Advisor. Це коштує хвилину й відповідає на найгрубішу версію питання.",[298,308,309],{},"Прочитайте політику на кожній таблиці, де лежать люди, бо дозвільна політика виглядає в панелі як захищена таблиця.",[298,311,312],{},"Перевіряйте Storage окремо від таблиць. У них різні налаштування, і сувора база нічого не каже про ваші файли.",[10,314,315,316,320,321,39],{},"Якщо вам зручніше пройти все списком,\n",[33,317,319],{"href":318},"\u002Fchecklist","10-хвилинний чекліст безпеки"," покриває це разом з іншими\nналаштуваннями, які варто закрити в щойно запущеному застосунку, а ще є\nпояснення простою мовою для\n",[33,322,324],{"href":323},"\u002Fis-your-supabase-app-safe","застосунків на Supabase",[10,326,327,328,39],{},"Пройти цей список можна за вечір, і відповідь, яку ви отримаєте, правдива того\nвечора, коли ви це робите. Тримати її правдивою в один вечір уже не влазить, і саме для цього ми зробили Reeve Care: він повторює ті самі\nперевірки на вашому застосунку за розкладом і пише вам, коли якась із них\nпочинає відповідати інакше. ",[33,329,331],{"href":330},"\u002F#pricing","Що він стежить і скільки коштує",[22,333,335],{"id":334},"reeve-тримає-копію-вашої-бази-supabase","Reeve тримає копію вашої бази Supabase",[10,337,338],{},"Поза акаунтом, з якого вона взялася, за розкладом і перевіреною до того, як вона\nзарахується. Першого з цих трьох власні резервні копії Supabase за вас зробити\nне можуть.",[10,340,341],{},"Supabase знімає щоденну копію на платному плані й жодної на безкоштовному, і в\nобох випадках ця копія живе всередині проєкту, з якого її взяли. Для того\nпообіддя, коли ви ламаєте власні дані, це правильний інструмент. Вона\nопиняється поза досяжністю того дня, коли проблемою стає сам акаунт: несплачений\nрахунок, видалення, вхід, у який більше ніхто не потрапляє.",[10,343,344],{},"Reeve Care тримає копію в іншому місці. Знята за розкладом, який задає ваш план,\nзашифрована перед тим, як покинути машину, що її зробила, і прочитана назад та\nзвірена, перш ніж ми взагалі зарахуємо її як резервну копію, щоб дата у вашій\nпанелі була датою, коли існування копії доведено, а не датою, коли стартувало\nзавдання. Вона покриває вашу базу Supabase і файли, які завантажили ваші\nкористувачі, щойно ви їх під'єднаєте.",[10,346,347],{},"Відновлення робить три речі навколо самого повернення даних. Воно перевіряє, чи\nкопія й досі підходить вашій базі, перш ніж покласти назад бодай один рядок,\nспершу знімає страхувальний знімок того, що є зараз, а потім доводить, що база\nприймає запис, записавши в неї, бо відновлення, яке лишає вас лише з читанням,\nне завершене. Ви також можете завантажити будь-яку копію, яку ми тримаємо, і\nпіти з нею.",[10,349,350,351,39],{},"Кожна перевірка на цій сторінці каже, де ваш застосунок стоїть сьогодні.\nРезервні копії потрібні для того дня, коли щось уже пішло не так.\n",[33,352,354],{"href":353},"\u002Fsupabase-backups","Що Reeve копіює на Supabase, як часто, і що робить відновлення",{"title":356,"searchDepth":357,"depth":357,"links":358},"",3,[359,361,362,363,364,365,366],{"id":24,"depth":360,"text":25},2,{"id":48,"depth":360,"text":49},{"id":82,"depth":360,"text":83},{"id":110,"depth":360,"text":111},{"id":240,"depth":360,"text":241},{"id":289,"depth":360,"text":290},{"id":334,"depth":360,"text":335},"Основи безпеки","\u002Fblog\u002Fis-supabase-secure\u002Fcover-1200x630.png","Будинок зі світлими вікнами, де одна стулка на верхньому поверсі відчинена й лишає темний проріз у решті глухого фасаду.","Чи безпечний Supabase? Платформа проходить аудити, шифрує дані й тримає пентести. Їхня документація каже, де це закінчується і починаються ваші налаштування.",false,"md",[374,377,380,383,385,388],{"q":375,"a":376},"Чи достатньо Supabase безпечний для справжніх даних клієнтів?","Так. Supabase відповідає SOC 2 Type 2 і сертифікований за ISO 27001, шифрує дані клієнтів у спокої через AES-256 і в передачі через TLS, а також регулярно проводить тести на проникнення. Чого це не каже: чи дозволяють правила всередині вашого власного проєкту незнайомцю прочитати ваші таблиці, бо це налаштування належить вашому проєкту, а не платформі.",{"q":378,"a":379},"Чи відповідає Supabase SOC 2?","Так, SOC 2 Type 2. Клієнти Enterprise і Team можуть запросити звіт у своїй панелі. Обсяг охоплює сам продукт Supabase: їхня інфраструктура, їхні контролі, їхній моніторинг.",{"q":381,"a":382},"Чи покриває звіт SOC 2 від Supabase мій застосунок?","Ні, і Supabase пише це прямо. У їхній SOC 2 документації сказано, що відповідність не переноситься на середовища поза продуктом Supabase або поза контролем Supabase, а дані на клієнтському боці цієї межі є відповідальністю клієнта. Ваші політики Row Level Security, ваші API-ключі та ваші налаштування Storage лежать на вашому боці.",{"q":111,"a":384},"Годиться, і роботи на вашому боці небагато. Увімкніть Row Level Security на кожній таблиці зі справжніми даними й напишіть політику, яка називає умову, тримайте секретний ключ подалі від усього, що завантажують ваші відвідувачі, і подивіться, які Storage-бакети позначені як публічні. Саме ці три налаштування вирішують, чи дістанеться незнайомець до ваших даних, і саме з них ми починаємо, коли скануємо застосунок.",{"q":386,"a":387},"Чи відповідає Supabase вимогам HIPAA?","Supabase пропонує відповідність HIPAA, і вона не вмикається сама. Потрібні додаток HIPAA і підписаний Business Associate Agreement, а їхня документація прямо каже, що SOC 2 цього не замінює. Захищена медична інформація також приносить правила про те, де її можна тримати, зокрема вказівку не класти її в публічні Storage-бакети.",{"q":389,"a":390},"Supabase безпечніший за власний бекенд?","У тих частинах, які бере на себе Supabase, майже напевно. Патчі серверів, оновлення бази, шифрування у спокої, мережева безпека та перевірений режим доступів соло-засновник рідко робить так само ретельно. Частини, які лишаються вашими, однакові в обох випадках, а з власним бекендом їх на одну більше: код між вашим застосунком і вашою базою.","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",[393,394,395,396,397,398,399],"чи безпечний supabase","наскільки безпечний supabase","безпека supabase","supabase надійний","supabase для продакшену","supabase shared responsibility model","supabase soc 2",{},true,"\u002Fblog\u002Fis-supabase-secure","2026-08-29",{"title":5,"description":370},"blog\u002Fis-supabase-secure",[407,408,409],"Чи безпечний Supabase? Платформа так: SOC 2 Type 2, ISO 27001, AES-256 у спокої, TLS у передачі та регулярні тести на проникнення.","Власна SOC 2 документація Supabase каже, що ця відповідність закінчується на межі їхнього продукту. Ваші таблиці, ваші ключі та ваші Storage-бакети лежать по інший бік цієї межі.","У серпні 2026 ми просканували 30 998 живих застосунків. У 2 096 із 3 680, які вдалося перевірити, таблиця відповіла незнайомцю, на платформі, що працювала рівно так, як задумано.","tGx45zfhlXyKCDu-Rwbfxlz8LTcLeipTqfOpD3IRB7g",[412,419,425,431,437,443,449,455,461,467,473,479,485,491,497,503,509,515,521,527,533,539,545,551,557,563,564,570,576,582,588,594,599,605,611,616,621,627,633,638,643,649],{"path":413,"title":414,"description":415,"published":416,"category":417,"image":418,"draft":371},"\u002Fblog\u002Fsupabase-backup-auth-users","Чому у вашому дампі Supabase немає користувачів","Запустіть supabase db dump окремо і отримаєте форму вашої бази та жодного її рядка, без схеми auth, у якій живуть ваші користувачі.","2026-09-23","Backups","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":420,"title":421,"description":422,"published":423,"category":367,"image":424,"draft":371},"\u002Fblog\u002Fdomain-and-certificate-expiry","Домен закінчився, сайт лежить: що буде далі","Ваш домен закінчився і сайт лежить. Ось який годинник уже пішов, чому прострочений сертифікат це менша з двох бід, і як перевірити обидва.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":426,"title":427,"description":428,"published":429,"category":367,"image":430,"draft":371},"\u002Fblog\u002Fis-lovable-safe","Чи безпечний Lovable? Що показали 18 554 застосунки Lovable","Чи безпечний Lovable? Ми прогнали 18 554 живі застосунки Lovable через дев’ять перевірок. Платформа виявилася найчистішою з п’яти. Знахідки були в застосунках.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":432,"title":433,"description":434,"published":435,"category":367,"image":436,"draft":371},"\u002Fblog\u002Fvibe-coded-app-security-checklist","Чек-лист безпеки для vibe coding, у девʼяти перевірках","Чек-лист безпеки для vibe coding із девʼяти пунктів, кожен з яких будь-хто може перевірити у вашому живому застосунку ззовні, і кожен має тест на один рядок.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":438,"title":439,"description":440,"published":441,"category":367,"image":442,"draft":371},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Секретний ключ Stripe у фронтенді може рухати гроші","Секретний ключ Stripe, відкритий у вашому фронтенді, може повертати кошти, списувати й читати кожну картку клієнта. А ключ pk_live_ там і має бути.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":444,"title":445,"description":446,"published":447,"category":367,"image":448,"draft":371},"\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":450,"title":451,"description":452,"published":453,"category":367,"image":454,"draft":371},"\u002Fblog\u002Fbase44-source-maps","Безпека Base44: що позначає скан і що з цього виправляти вам","Безпека Base44 на 5 438 просканованих застосунках: три знахідки майже на кожному належать платформі, source map є бейджем Base44, а ваша частина коротка.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":456,"title":457,"description":458,"published":459,"category":367,"image":460,"draft":371},"\u002Fblog\u002Fis-cursor-ai-safe","Чи безпечний Cursor AI? Редактор, код і опублікований застосунок","Чи безпечний Cursor AI? Три запитання в одному пошуку: що Cursor зберігає, у чому помиляється його код і чи відкритий застосунок, який ви опублікували.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":462,"title":463,"description":464,"published":465,"category":367,"image":466,"draft":371},"\u002Fblog\u002Fis-replit-safe","Чи безпечний Replit? Що ми знайшли в 3 042 живих застосунках Replit","Чи безпечний Replit? Ми прогнали 3 042 живі застосунки Replit через дев’ять зовнішніх перевірок. Знахідки були в опублікованому застосунку, а не в хостингу.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":468,"title":469,"description":470,"published":471,"category":417,"image":472,"draft":371},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: у копії бази даних немає жодного файлу","Supabase storage backup це окрема робота. Копії бази даних зберігають список ваших файлів і жодного з них, тож після відновлення кожне завантаження зламане.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":474,"title":475,"description":476,"published":477,"category":417,"image":478,"draft":371},"\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":480,"title":481,"description":482,"published":483,"category":417,"image":484,"draft":371},"\u002Fblog\u002Fsupabase-project-paused-recover","Проєкт Supabase на паузі? Ваші дані нікуди не зникли","Supabase поставив ваш проєкт на паузу після тижня без активності. Нічого не видалено, кнопка Restore стоїть поруч із назвою, і у вас є рік, щоб натиснути.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":486,"title":487,"description":488,"published":489,"category":367,"image":490,"draft":371},"\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":492,"title":493,"description":494,"published":495,"category":367,"image":496,"draft":371},"\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":498,"title":499,"description":500,"published":501,"category":367,"image":502,"draft":371},"\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":504,"title":505,"description":506,"published":507,"category":367,"image":508,"draft":371},"\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":510,"title":511,"description":512,"published":513,"category":367,"image":514,"draft":371},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Сканери безпеки для vibe coding у порівнянні, наш теж","Найкращий сканер безпеки для vibe coding залежить від трьох питань, на які не відповідає жоден перелік функцій. Десять інструментів і ціни.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":516,"title":517,"description":518,"published":519,"category":367,"image":520,"draft":371},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: п’ять перевірок, які зробите самі","Supabase security checker читає ваш опублікований застосунок, а не налаштування проєкту. Ось п’ять перевірок і як виконати кожну самостійно.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":522,"title":523,"description":524,"published":525,"category":367,"image":526,"draft":371},"\u002Fblog\u002Fvibe-coding-security-scanner","Сканер безпеки для vibe coding: чого не бачить скан URL","Сканер безпеки для vibe coding читає ваш робочий застосунок ззовні. Що це охоплює, чотири речі, яких він не бачить, і як читати результат.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":528,"title":529,"description":530,"published":531,"category":367,"image":532,"draft":371},"\u002Fblog\u002Fmissing-security-headers","Відсутні заголовки безпеки: коли це справді важливо","Відсутні заголовки безпеки трапляються в наших звітах найчастіше. Від чого вони захищають і коли це найменш терміновий рядок вашого звіту.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":534,"title":535,"description":536,"published":537,"category":367,"image":538,"draft":371},"\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":540,"title":541,"description":542,"published":543,"category":367,"image":544,"draft":371},"\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":546,"title":547,"description":548,"published":549,"category":417,"image":550,"draft":371},"\u002Fblog\u002Fsupabase-backup-tools-compared","Інструменти резервного копіювання Supabase, і наш серед них","Чотири види інструментів резервного копіювання Supabase, що копіює кожен і коли безкоштовна GitHub Action виграє в будь-якої оплати, нашої теж.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":552,"title":553,"description":554,"published":555,"category":367,"image":556,"draft":371},"\u002Fblog\u002Freplit-secrets-explained","Як користуватися секретами в Replit і що все одно публікується","Як користуватися секретами в Replit: додати, прочитати і усунути дві причини undefined. А ще ключі, які цей інструмент не здатен зберегти в таємниці.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":558,"title":559,"description":560,"published":561,"category":417,"image":562,"draft":371},"\u002Fblog\u002Fback-up-supabase-free-tier","Резервні копії на безкоштовному тарифі Supabase без терміналу","На безкоштовному тарифі Supabase резервних копій немає: копію робите ви. Як зробити її з панелі та що втрачає шлях через CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":402,"title":5,"description":370,"published":403,"category":367,"image":391,"draft":371},{"path":565,"title":566,"description":567,"published":568,"category":367,"image":569,"draft":371},"\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":571,"title":572,"description":573,"published":574,"category":367,"image":575,"draft":371},"\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":577,"title":578,"description":579,"published":580,"category":367,"image":581,"draft":371},"\u002Fblog\u002Fcors-wildcard-security-risk","Чи є вайлдкард CORS ризиком для безпеки? Майже ніколи.","Чи є вайлдкард CORS ризиком для безпеки? Зазвичай це типове налаштування вашого білдера, і воно не видає нічого, що ваш сервер і так віддавав кожному.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":583,"title":584,"description":585,"published":586,"category":417,"image":587,"draft":371},"\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":589,"title":590,"description":591,"published":592,"category":417,"image":593,"draft":371},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Як відновити резервну копію Supabase, і що ламається потім","Як відновити резервну копію Supabase з панелі або з файлу дампа, що саме замінює відновлення і чому ваш застосунок може лишитися зламаним після нього.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":270,"title":595,"description":596,"published":597,"category":367,"image":598,"draft":371},"Ваш бакет Supabase Storage публічний. Чи це проблема?","Публічний бакет Supabase Storage означає, що той, хто має URL файлу, може його відкрити. Він не означає, що хтось може переглянути список вмісту.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":600,"title":601,"description":602,"published":603,"category":367,"image":604,"draft":371},"\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":606,"title":607,"description":608,"published":609,"category":417,"image":610,"draft":371},"\u002Fblog\u002Fai-agent-deleted-my-database","ШІ-агент видалив мої дані в Supabase. Що можна відновити?","ШІ-агент видалив дані з вашої бази. Те, що ви зможете відновити, вирішилося раніше, а наступні хвилини вирішують, скільки з цього вціліє.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":98,"title":612,"description":613,"published":614,"category":367,"image":615,"draft":371},"Чи може будь-хто прочитати вашу базу Supabase? 3 680 застосунків","Чи може будь-хто прочитати вашу базу даних Supabase без входу? Ми просканували 30 998 живих застосунків, зроблених ШІ-білдерами, і виміряли, як часто так.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":617,"title":618,"description":619,"published":614,"category":367,"image":620,"draft":371},"\u002Fblog\u002Fsource-maps-exposed-in-production","Відкриті source maps: ваш застосунок публікує свій вихідний код","Відкрита source map дає будь-кому прочитати оригінальний код вашого застосунку, разом із коментарями. Перевірка за 30 секунд, і що важить насправді.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":622,"title":623,"description":624,"published":625,"category":367,"image":626,"draft":371},"\u002Fblog\u002Fsupabase-new-api-keys","Нові API-ключі Supabase: який із них безпечний у застосунку?","Supabase замінив anon і service_role публічними та секретними ключами. Який із них має бути у вашому застосунку, а який не має бути ніколи?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":628,"title":629,"description":630,"published":631,"category":417,"image":632,"draft":371},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Чи робить Supabase резервні копії моєї бази? Залежить від тарифу.","Чи робить Supabase резервні копії вашої бази даних? На платних тарифах щодня, на безкоштовному жодної. Як дізнатися, що у вас насправді є.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":259,"title":634,"description":635,"published":636,"category":367,"image":637,"draft":371},"Supabase Row Level Security увімкнено. Таблиця досі публічна.","Увімкнути Supabase Row Level Security не означає захистити таблицю. Захищають політики, а та, що полагодила застосунок, часто впускає всіх.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":639,"title":640,"description":641,"published":636,"category":417,"image":642,"draft":371},"\u002Fblog\u002Fversion-history-is-not-a-backup","Історія версій не є резервною копією. Вона не поверне таблицю.","Lovable і Bolt ведуть історію версій вашого коду. Ваша база даних працює як окремий сервіс, тож відкат назад не поверне ваші дані.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":644,"title":645,"description":646,"published":647,"category":417,"image":648,"draft":371},"\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":282,"title":650,"description":651,"published":647,"category":367,"image":652,"draft":371},"Які API-ключі безпечні у браузері, а які ні","Ваш ключ anon у Supabase створений, щоб бути публічним. Ключ service_role для цього не створений, і він ігнорує всі правила, які ви задали. Як їх розрізнити.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1790150956977]