[{"data":1,"prerenderedAt":818},["ShallowReactive",2],{"blog-uk-base44-security-scan":3,"blog-index-uk":463},{"id":4,"title":5,"body":6,"category":420,"cover":421,"coverAlt":422,"description":423,"draft":424,"extension":425,"faq":426,"image":442,"keywords":443,"meta":451,"navigation":452,"ogTitle":453,"path":454,"published":455,"seo":456,"stem":457,"tldr":458,"updated":455,"__hash__":462},"blog_uk\u002Fblog\u002Fbase44-security-scan.md","Сканування безпеки Base44: те, що бачить лише воно",{"type":7,"value":8,"toc":408},"minimark",[9,13,21,24,29,32,127,139,161,165,168,171,178,184,193,197,200,226,233,238,241,249,257,261,264,267,272,275,279,282,296,302,313,317,320,329,347,357,374,377,381,401],[10,11,12],"p",{},"Ви відкриваєте Dashboard свого застосунку на Base44, натискаєте Security,\nтиснете Run Security Scan, і за кілька секунд повертається список. Або не\nповертається нічого. Так чи інакше ви тримаєте результат і міркуєте, чи то була\nвся перевірка.",[10,14,15,16,20],{},"Більшість текстів про це подає все навпаки. Звичний аргумент каже, що\nсканування зсередини вашого проєкту не бачить того, що бачить інтернет, тож\nдовіряти варто зовнішньому. На Base44 для важливої половини все навпаки:\n",[17,18,19],"strong",{},"сканування безпеки Base44 — це єдине, що може перевірити, чи може незнайомець\nпрочитати ваші дані, і ми можемо показати вам, що ми цього не можемо."," Ми\nспробували на 1 466 застосунках Base44 й отримали відповідь від двох.",[10,22,23],{},"Отже, це поділ праці. Одне сканування працює всередині будівлі. Інше стоїть на\nтротуарі й читає те, що видають спереду. Обидва варті того, щоб їх робити, і на\nBase44 внутрішнє бере на себе важчу половину.",[25,26,28],"h2",{"id":27},"що-перевіряє-сканування-безпеки-base44","Що перевіряє сканування безпеки Base44?",[10,30,31],{},"Сім видів проблем, прочитаних зсередини вашого проєкту. По вашу опубліковану\nадресу воно не йде ніколи.",[33,34,35,51],"table",{},[36,37,38],"thead",{},[39,40,41,45,48],"tr",{},[42,43,44],"th",{},"Що перевіряє",[42,46,47],{},"Що це означає",[42,49,50],{},"Тарифи",[52,53,54,66,76,86,96,106,117],"tbody",{},[39,55,56,60,63],{},[57,58,59],"td",{},"Data permission issues",[57,61,62],{},"Таблиця даних без правил доступу або люди з більшим доступом, ніж їм належить",[57,64,65],{},"Усі",[39,67,68,71,74],{},[57,69,70],{},"Exposed secrets",[57,72,73],{},"Ключі API, паролі чи токени, залишені там, куди дістаються відвідувачі застосунку",[57,75,65],{},[39,77,78,81,84],{},[57,79,80],{},"Unauthenticated backend functions",[57,82,83],{},"Щось за лаштунками, що віддає дані без перевірки того, хто питає. Із заголовком \"Anyone can run this function\"",[57,85,65],{},[39,87,88,91,94],{},[57,89,90],{},"Credit protection",[57,92,93],{},"Ваші функції ШІ, зображень чи пошти доступні ззовні вашого застосунку, тож чужа людина витрачає ваші кредити",[57,95,65],{},[39,97,98,101,104],{},[57,99,100],{},"App dependencies",[57,102,103],{},"Стороння бібліотека з відомою вразливістю і версія, на яку варто перейти",[57,105,65],{},[39,107,108,111,114],{},[57,109,110],{},"Code vulnerabilities",[57,112,113],{},"Патерни у вашому власному коді: відсутні перевірки доступу, необережне поводження з тим, що хтось увів",[57,115,116],{},"Від Builder",[39,118,119,122,125],{},[57,120,121],{},"Security header recommendations",[57,123,124],{},"Два захисти браузера, вбудовування в iframe і невикористовувані можливості браузера",[57,126,65],{},[10,128,129,130,134,135,138],{},"Усе це прочитано 10 жовтня 2026 року у власній документації Base44, на\nсторінках ",[131,132,133],"code",{},"Running a security scan"," та ",[131,136,137],{},"Base44 security: An overview",". Три речі\nзвідти варто знати, перш ніж покладатися на результат:",[140,141,142,149,155],"ul",{},[143,144,145,148],"li",{},[17,146,147],{},"Сканування ніколи не застосовує виправлення саме."," Ви тиснете Fix, і\nBase44 записує зміну в AI-чат вашого застосунку, ставлячи перед нею\ncheckpoint, тож виправлення, яке щось зламало, можна відкотити просто з чату.",[143,150,151,154],{},[17,152,153],{},"Кнопка Fix with AI на неавтентифікованій функції відхиляє будь-який виклик\nбез увійшлого користувача."," Base44 тут же пише, що це може зламати сторінку\nдля невідвідувачів без входу, вебхук або інтеграцію, яка викликає цю функцію.\nПеревірте ці шляхи після цього.",[143,156,157,160],{},[17,158,159],{},"Воно попереджає під час публікації й не зупиняє вас."," Панель публікації\nпоказує статус Security, і Base44 описує його як попередження, яке не заважає\nвам публікувати.",[25,162,164],{"id":163},"те-що-бачить-лише-воно","Те, що бачить лише воно",[10,166,167],{},"Чи можуть люди, які користуються вашим застосунком, дістатися до даних, що їм\nне належать. Для застосунку на Base44 ніщо поза платформою цього не перевірить.",[10,169,170],{},"У більшості білдерів ваш застосунок говорить із базою даних просто з браузера\nвашого відвідувача. Через це база має публічну адресу, ваша сторінка несе цю\nадресу, і будь-хто може її звідти дістати й почати ставити запитання. Чи\nотримає він відповіді, залежить від налаштування на кожну таблицю, яке\nбільшість власників ніколи не відкривала. Застосунок на Base44 надсилає свої\nзапити через Base44, тож на вулиці немає жодної адреси, яку можна було б\nспробувати.",[10,172,173,174,177],{},"Вимір досить перекошений, щоб закрити питання. 1 466 із 5 442 оцінених нами\nзастосунків Base44 називають проєкт Supabase десь у сторінці. Наша перевірка\nRow Level Security отримала придатну відповідь від ",[17,175,176],{},"2"," з них. На Lovable, де\nбаза відповідає прямо на вулицю, відповіли 3 553 з 6 535. На Bolt відповіли 35\nз 267.",[179,180],"diagram",{"alt":181,"caption":182,"src":183},"Дві смуги. У верхній лупа стоїть усередині запечатаної панелі платформи поруч із базою даних і дістає до неї, з галочкою. У нижній лупа ззовні дістає до сторінки застосунку, з галочкою, а пунктирна лінія від тієї самої лупи до бази даних зупиняється біля стіни панелі під знаком питання.","Угорі сканування Base44, що працює всередині платформи, де живуть ваші дані. Унизу зовнішнє сканування, яке читає сторінку, що завантажують ваші відвідувачі, і зупиняється біля стіни.","\u002Fblog\u002Fbase44-security-scan\u002Fthe-two-halves-1600x680.png",[10,185,186,187,192],{},"Два застосунки — це не частка, і ми її тут не друкуватимемо. Що це число\nзакриває, то це питання, хто може подивитися: у застосунку на Base44 правила\nдоступу до ваших даних читаються зі сторінки Security у вашій власній панелі й\nбільше ніде.\n",[188,189,191],"a",{"href":190},"\u002Fblog\u002Fis-base44-safe","Повний перепис того, які оцінки отримали 5 442 застосунки Base44",",\nмістить решту цифр.",[25,194,196],{"id":195},"чому-ваш-опублікований-застосунок-усе-одно-може-нести-ключ","Чому ваш опублікований застосунок усе одно може нести ключ",[10,198,199],{},"Бо сканування читає ваш проєкт, а ваші відвідувачі завантажують файл. Чотири\nречі з власної документації Base44 розводять ці дві:",[140,201,202,208,214,220],{},[143,203,204,207],{},[17,205,206],{},"Опублікована версія може бути старшою за ту, яку прочитало сканування.","\nЗнахідка credit protection у Base44 має стан саме для цього, і напис каже\n\"Publish changes before protecting credits\", коли ваш живий застосунок досі\nпрацює на попередній версії.",[143,209,210,213],{},[17,211,212],{},"Статус під час публікації — це попередження."," Risks found відкриває\nсторінку Security, а опублікувати ви все одно можете.",[143,215,216,219],{},[17,217,218],{},"Знахідка, яку ви проігнорували, не повертається."," Проігноровані знахідки\nпереходять до окремого розділу внизу списку й, словами Base44, не з'являються\nзнову під час наступного сканування. Чистий список може означати, що хтось\nвідхилив знахідку в червні.",[143,221,222,225],{},[17,223,224],{},"Половина про код потребує платного тарифу."," Code vulnerability scanning\nпрацює від Builder і вище, як і необов'язкова інтеграція з Wiz, що додає\nстатичний аналіз через ваш власний тенант Wiz.",[10,227,228,229,232],{},"З тротуару цей розрив має розмір. Із 5 442 оцінених нами застосунків Base44\n",[17,230,231],{},"95 віддавали ключ Google API у сторінці",", 11 мали щось у формі пароля або\nтокена, один обмежений ключ Stripe і ще один секретний ключ Stripe. Перевірка\nоблікових даних відповіла на всіх 5 442 застосунках, тож це підрахунки, а не\nвибірка.",[179,234],{"alt":235,"caption":236,"src":237},"Верхня смуга: вікно редактора, а поруч звіт із галочкою. Нижня смуга: опублікована сторінка застосунку з бурштиновим ключем, до якої дістаються троє відвідувачів біля правого краю. Пунктирна лінія з'єднує дві смуги як дві версії одного застосунку.","Сканування читає версію, що лежить у вашому редакторі. Ваші відвідувачі завантажують ту, яку ви опублікували, а вона, за власною знахідкою Base44 про кредити, може бути попередньою.","\u002Fblog\u002Fbase44-security-scan\u002Fthe-publish-gap-1600x600.png",[10,239,240],{},"Ці 95 становлять меншу частку, ніж у сусідів, і це варто сказати прямо: у тому самому\nобході 727 із 18 563 застосунків Lovable і 200 із 3 050 застосунків Replit\nнесли ключ Google API. За цим виміром застосунки Base44 тихіші за ті, що\nзбудовані поруч.",[10,242,243,244,248],{},"Це ще й та знахідка зі списку, яка найімовірніше в порядку. Google видає один\nвид ключа API й очікує побачити його в браузері; чи зможе незнайомець нагнати\nвам рахунок, вирішує те, чи обмежили ви ключ власним доменом, і це обмеження\nживе в консолі Google, а не у вашому застосунку.\n",[188,245,247],{"href":246},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","Що перевірити в ключі Google, знайденому у вашій власній сторінці",",\nце два налаштування, які треба прочитати.",[10,250,251,252,256],{},"Якщо ви радше подивитеся повний список того, що віддає ваш опублікований\nзастосунок Base44, наше безкоштовне сканування читає вашу живу адресу й\nзвітує, що бачить ззовні. Воно триває близько 20 секунд і не потребує\nоблікового запису: ",[188,253,255],{"href":254},"\u002Fsecurity-scanner","просканувати застосунок безкоштовно",".",[25,258,260],{"id":259},"перевірка-з-того-списку-якої-ніхто-не-очікує","Перевірка з того списку, якої ніхто не очікує",[10,262,263],{},"Хтось викликає платні функції вашого застосунку напряму, зовсім не проходячи\nчерез ваш застосунок.",[10,265,266],{},"Base44 називає це credit protection, і знахідка з'являється, коли ваша функція,\nщо використовує ШІ, генерацію зображень або пошту, доступна ззовні вашого\nзастосунку. Їхня документація прямо каже про наслідок: той, хто її знайде, може\nїї запустити й витратити ваші кредити інтеграцій. Вона має рівень High, і\nзалежно від застосунку виправленням буде або одна кнопка Fix, що обмежує ці\nфункції, лишаючи ваш власний доступ недоторканим, або Resolve with AI, що\nпереносить виклики у ваш бекенд.",[179,268],{"alt":269,"caption":270,"src":271},"Сторінка застосунку посередині зі стрілкою відвідувача, що входить у неї. Друга стрілка від фігури ліворуч обходить сторінку й дістається напряму до спалаху та стосу монет позаду неї.","Нижній маршрут і є тим, про що йдеться в credit protection. Функція доступна без відкривання вашого застосунку, і кожен виклик витрачає ті самі кредити, що й ваші.","\u002Fblog\u002Fbase44-security-scan\u002Fcredits-from-outside-1600x560.png",[10,273,274],{},"Це саме те, що внутрішнє сканування робить добре, а зовнішнє не має чесного\nспособу перевірити. Дізнатися, чи може хтось безкоштовно запустити вашу поштову\nфункцію, означало б її запустити, тож наше сканування лишає цю перевірку Base44\nі звітує про те, що може прочитати, нічого вашого не витрачаючи.",[25,276,278],{"id":277},"чого-не-перевіряє-жодне-з-двох","Чого не перевіряє жодне з двох",[10,280,281],{},"Три речі, і остання з них лишається єдиною на цій сторінці, яку неможливо\nполагодити після того, як сталося.",[10,283,284,287,288,291,292,256],{},[17,285,286],{},"Ваш сертифікат і ваш домен, якщо застосунок стоїть на вашій власній адресі.","\nЗастосунок Base44 на адресі ",[131,289,290],{},"base44.app"," успадковує їх від Base44. Перенесіть\nйого на домен, який ви купили, і дати продовження стають вашими, а це\n",[188,293,295],{"href":294},"\u002Fblog\u002Fdomain-and-certificate-expiry","найтихіший спосіб, у який робочий застосунок гасне",[10,297,298,301],{},[17,299,300],{},"Файли у бакеті Supabase Storage, який ви під'єднали."," З 1 466 застосунків\nBase44, що називають проєкт Supabase, наша перевірка бакетів змогла відповісти\nна 5. Та сама стіна, що ховає базу даних, ховає й бакет, а перевірка доступів\nBase44 охоплює таблиці, якими керує вона сама, а не бакет у проєкті, який ви\nпід'єднали самі.",[10,303,304,307,308,312],{},[17,305,306],{},"Чи існує копія ваших даних."," Цього не перевіряє жодне сканування з жодного\nбоку стіни, бо це не властивість вашого застосунку. Це властивість того, що ви\nналаштували деінде, і вона вирішує, чи закінчиться невдала міграція або агент\nіз доступом до бази відновленням, чи листом вашим користувачам.\n",[188,309,311],{"href":310},"\u002Fblog\u002Fai-agent-deleted-my-database","День, коли ШІ-агент видалив продакшн-базу",",\nпоказує, як читається друге.",[25,314,316],{"id":315},"як-тримати-обидві-половини-прикритими-після-публікації","Як тримати обидві половини прикритими після публікації",[10,318,319],{},"Запускайте обидва знову після будь-якої зміни. Результат минулого тижня описує\nзастосунок минулого тижня, а на Base44 публікація робиться однією кнопкою, тож\nтаблиця, додана сьогодні вранці, або ключ, вставлений опівночі, стають живими в\nту мить, коли ви її натискаєте.",[10,321,322],{},[17,323,324,328],{},[188,325,327],{"href":326},"\u002Fpricing","Reeve Monitor"," проганяє дев'ять зовнішніх перевірок за вас:",[140,330,331,334,337,344],{},[143,332,333],{},"усі дев'ять перевірок щогодини, для трьох застосунків",[143,335,336],{},"чи відповідає застосунок, кожні 60 секунд",[143,338,339,340,343],{},"повідомлення, коли результат ",[17,341,342],{},"змінюється",", щоб нова знахідка не чекала, доки ви подивитеся",[143,345,346],{},"щомісячний звіт про побачене",[10,348,349],{},[17,350,351,352,356],{},"Якщо ваш застосунок Base44 тримає дані у вашому власному проєкті Supabase,\n",[188,353,355],{"href":354},"\u002Fsupabase-backups","Reeve Care"," зберігає їхню копію:",[140,358,359,362,365,368,371],{},[143,360,361],{},"зашифрована копія вашої бази Supabase щоночі, покладена туди, куди ваш проєкт не дістане",[143,363,364],{},"кожна копія перевірена, перш ніж її зарахувати, підрахунком рядків у кожній таблиці",[143,366,367],{},"відновлення в один клік, коли воно знадобиться",[143,369,370],{},"ваші завантажені файли теж, щойно ви під'єднаєте доступ до Storage",[143,372,373],{},"усе, що робить Monitor",[10,375,376],{},"Обидва є на сторінці цін, яка іноді нижча за вказану тут цифру списку і ніколи\nне вища.",[25,378,380],{"id":379},"що-зробити-сьогодні","Що зробити сьогодні",[382,383,384],"key-takeaways",{},[140,385,386,389,392,395,398],{},[143,387,388],{},"Запустіть сканування через Dashboard → Security перед наступною публікацією й прочитайте знахідки, перш ніж тиснути Fix all issues. Виправлення неавтентифікованої функції може замкнути сторінку, яку ви хотіли лишити відкритою.",[143,390,391],{},"Загляньте в розділ Ignored унизу списку. Знахідка, яку хтось проігнорував місяці тому, лишається проігнорованою й сьогодні.",[143,393,394],{},"Якщо ваш застосунок витрачає кредити інтеграцій на ШІ, зображення чи пошту, прочитайте спершу знахідку credit protection. Це та зі списку, яка коштує грошей сама по собі.",[143,396,397],{},"Проскануйте після цього опубліковану адресу ззовні, бо живий застосунок може бути попередньою версією щодо тієї, яку прочитало сканування.",[143,399,400],{},"Тримайте копію своїх даних там, куди ваш застосунок не дістане, якщо ви під'єднали власний проєкт Supabase. Жодне з двох сканувань не скаже вам, чи вона існує.",[10,402,403,404,256],{},"Почніть із розділу Ignored, це справа секунд і єдине місце, де чистий звіт може\nховати справжню знахідку. Якщо хочете версію простою мовою про все, що на\nзастосунку Base44 можна перевірити ззовні, у нас є\n",[188,405,407],{"href":406},"\u002Fis-your-base44-app-safe","покроковий огляд для застосунків Base44",{"title":409,"searchDepth":410,"depth":410,"links":411},"",3,[412,414,415,416,417,418,419],{"id":27,"depth":413,"text":28},2,{"id":163,"depth":413,"text":164},{"id":195,"depth":413,"text":196},{"id":259,"depth":413,"text":260},{"id":277,"depth":413,"text":278},{"id":315,"depth":413,"text":316},{"id":379,"depth":413,"text":380},"Основи безпеки","\u002Fblog\u002Fbase44-security-scan\u002Fcover-1200x630.png","Запечатана панель платформи з базою даних і лупою всередині, а перед нею сторінка застосунку передає копію відвідувачам на краю кадру.","Сканування безпеки Base44 перевіряє сім видів проблем зсередини. Ось половина, яку читає тільки воно, і половина, на яку воно ніколи не дивиться.",false,"md",[427,430,433,436,439],{"q":428,"a":429},"Чи перевіряє Base44 мій застосунок на проблеми з безпекою?","Так. Відкрийте редактор застосунку, натисніть Dashboard, далі Security, далі Run Security Scan. Перевіряються сім видів проблем: правила доступу до ваших даних, відкриті облікові дані, бекенд-функції, які відповідають без перевірки того, хто питає, функції, що витрачають ваші кредити інтеграцій, сторонні бібліотеки з відомими вразливостями, патерни у вашому власному коді та два заголовки безпеки браузера. До кожної знахідки додається запропоноване виправлення, яке ви можете застосувати, і саме сканування не застосовує жодного самостійно. Воно є в кожному тарифі, зокрема безкоштовному, але половина, що читає код, працює лише від Builder. Прочитано 10 жовтня 2026 року.",{"q":431,"a":432},"Чи достатньо сканування безпеки від Base44?","Це єдине сканування, здатне перевірити найважливішу частину застосунку на Base44, бо ваші дані лежать за Base44, а не на публічній адресі. Чого воно не має причин робити, то це забрати вашу опубліковану сторінку й прочитати, що в ній вийшло назовні. Ми оцінили 5 442 живих застосунки Base44: питання про базу даних мало відповідь у 2 з них, а 95 віддавали ключ Google API у сторінці. Запускайте внутрішнє сканування перед публікацією, а зовнішнє після неї.",{"q":434,"a":435},"Чому зовнішній сканер не може перевірити мою базу даних на Base44?","Бо на вулиці немає в що стукати. У більшості білдерів ваш застосунок говорить із базою даних просто з браузера відвідувача, тож база має публічну адресу, ваша сторінка несе її з собою, і будь-хто може її звідти дістати й поставити запитання. Застосунок на Base44 надсилає свої запити через Base44. З 1 466 оцінених застосунків Base44, які десь у сторінці називають проєкт Supabase, наша перевірка Row Level Security отримала придатну відповідь від 2. На Lovable, де база відповідає прямо на вулицю, відповіли 3 553 з 6 535.",{"q":437,"a":438},"Що знаходить зовнішнє сканування, чого не знаходить Base44?","Те, що ваші відвідувачі отримують просто зараз. Base44 читає проєкт у вашому редакторі, і чотири речі з їхньої ж документації відділяють це від живого застосунку: опублікована версія може бути старшою за ту, яку прочитало сканування, сканування попереджає під час публікації, не блокуючи її, одного разу проігнорована знахідка не повертається, а аналіз коду потребує тарифу Builder. Серед 5 442 оцінених застосунків Base44 у 95 був ключ Google API у сторінці, в 11 щось у формі пароля або токена, в одному обмежений ключ Stripe і ще в одному секретний ключ Stripe.",{"q":440,"a":441},"Чи варто запускати обидва?","Вони відповідають на різні половини, тож одне не заміняє інше. Запустіть сканування Base44 зі сторінки Security перед публікацією, прочитайте знахідки перед тим, як натиснути Fix all issues, а потім перевірте опубліковану адресу ззовні. Зовнішнє сканування триває близько 20 секунд і не потребує облікового запису.","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",[444,445,446,447,448,449,450],"сканування безпеки base44","base44 security scan","чи перевіряє base44 безпеку","перевірка безпеки застосунку base44","панель безпеки base44","base44 перевірка rls","аудит безпеки base44",{},true,"Сканування безпеки Base44: що бачить лише воно","\u002Fblog\u002Fbase44-security-scan","2026-10-10",{"title":5,"description":423},"blog\u002Fbase44-security-scan",[459,460,461],"Сканування безпеки Base44 працює зсередини вашого проєкту й перевіряє сім видів проблем, від правил доступу до ваших даних до бібліотек, від яких залежить застосунок. Воно є в кожному тарифі, а одна з семи перевірок запускається лише від Builder і вище.","Для застосунку на Base44 це єдине сканування, яке може відповісти на те, що люди насправді мають на увазі під \"чи безпечний мій застосунок\": чи може незнайомець прочитати ваші дані. Ми оцінили 5 442 живих застосунки Base44 і змогли запитати 2 з них.","Чого воно не має причин читати, то це сторінку, яку завантажують ваші відвідувачі. У 95 із тих 5 442 застосунків там лежав ключ Google API.","h5tUXAK2pFKwWCbDl5F-NX3yCQQ9WCybP11Jt7fSDyM",[464,470,471,477,483,489,494,500,506,512,518,524,530,536,543,549,555,560,566,572,578,583,589,595,601,607,613,619,625,631,637,643,649,655,661,667,673,679,685,691,697,703,709,715,721,727,733,739,745,751,757,763,768,773,779,784,790,796,802,807,813],{"path":465,"title":466,"description":467,"published":468,"category":420,"image":469,"draft":424},"\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":454,"title":5,"description":423,"published":455,"category":420,"image":442,"draft":424},{"path":472,"title":473,"description":474,"published":475,"category":420,"image":476,"draft":424},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Ваш API-ключ витік. Порядок дій","API-ключ витік, і ви не знаєте, що робити першим. Не кожен ключ у вашому фронтенді є витоком, а порядок важить більше за швидкість.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":478,"title":479,"description":480,"published":481,"category":420,"image":482,"draft":424},"\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":484,"title":485,"description":486,"published":487,"category":420,"image":488,"draft":424},"\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":190,"title":490,"description":491,"published":492,"category":420,"image":493,"draft":424},"Чи безпечний Base44? Дані 5 442 застосунків","Чи безпечний Base44? Ми прогнали дев’ять перевірок на 5 442 робочих застосунках Base44. Майже всі отримали B з причин, яких власник ніколи не обирав.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":495,"title":496,"description":497,"published":498,"category":420,"image":499,"draft":424},"\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":501,"title":502,"description":503,"published":504,"category":420,"image":505,"draft":424},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Чи відкритий ваш файл .env? Дванадцять шляхів для перевірки","Чи відкритий ваш файл .env на вашому власному вебсервері? Дванадцять адрес скажуть це за хвилину, а влучання означає, що все в ньому вже публічне.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":507,"title":508,"description":509,"published":510,"category":420,"image":511,"draft":424},"\u002Fblog\u002Fis-v0-safe","Безпека v0: усі 1 790 просканованих застосунків v0 отримали A","Безпека v0 на 1 790 живих застосунках v0: усі отримали A. Лише 17 згадували базу даних, і саме це здебільшого вимірює оцінка A.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":513,"title":514,"description":515,"published":516,"category":420,"image":517,"draft":424},"\u002Fblog\u002Fis-bolt-safe","Чи безпечний Bolt? Що показали 1 123 застосунки Bolt","Чи безпечний Bolt? Ми прогнали 1 123 живі застосунки Bolt через дев’ять перевірок. Хостинг був чистим. Знахідки: ключі й відкриті таблиці в самих застосунках.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":519,"title":520,"description":521,"published":522,"category":420,"image":523,"draft":424},"\u002Fblog\u002Fis-supabase-down-or-your-app","Supabase не працює чи проблема у вашому застосунку? Як розрізнити","Supabase не працює чи зламався ваш застосунок? Пауза, повна база й ваша власна помилка виглядають однаково. Чотири перевірки їх розрізняють.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":525,"title":526,"description":527,"published":528,"category":420,"image":529,"draft":424},"\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":531,"title":532,"description":533,"published":534,"category":420,"image":535,"draft":424},"\u002Fblog\u002Fsupabase-free-plan-limits","Ліміти безкоштовного тарифу Supabase і що стається на кожному","Ліміти безкоштовного тарифу Supabase: 500 МБ бази, 5 ГБ egress і жодних резервних копій. Що стається на кожній межі і що змінює Pro за $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":537,"title":538,"description":539,"published":540,"category":541,"image":542,"draft":424},"\u002Fblog\u002Ftest-your-supabase-backup","Перевірте резервну копію Supabase до того, як вона знадобиться","Як перевірити резервну копію Supabase: відновити в тестовий проєкт, порахувати рядки, увійти й знайти рядок, якого бракує обрізаному файлу.","2026-09-28","Backups","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":544,"title":545,"description":546,"published":547,"category":541,"image":548,"draft":424},"\u002Fblog\u002Fsupabase-backup-github-action","Безкоштовна резервна копія Supabase через GitHub Action і підступ","Резервна копія Supabase через GitHub Action безкоштовна й годиться багатьом застосункам. Робочий процес, потрібний рядок підключення та egress.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":550,"title":551,"description":552,"published":553,"category":541,"image":554,"draft":424},"\u002Fblog\u002Fdownload-your-supabase-backup","Чому ви не можете завантажити резервну копію Supabase","Завантажити резервну копію Supabase на сучасному проєкті не вийде: щоденна копія там фізична. Як це перевірити і як тримати власну копію.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":556,"title":557,"description":558,"published":553,"category":420,"image":559,"draft":424},"\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":561,"title":562,"description":563,"published":564,"category":420,"image":565,"draft":424},"\u002Fblog\u002Fopen-api-endpoint-exposed","Чи є відкритий API-ендпоінт проблемою безпеки? Читайте JSON","Ваше сканування позначило відкритий API-ендпоінт. Чи це важливо, залежить від того, що повернулося, і більшість знайдених належали платформі.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":567,"title":568,"description":569,"published":570,"category":420,"image":571,"draft":424},"\u002Fblog\u002Flovable-security-scan","Сканування безпеки Lovable: чого воно не доведе","Сканування безпеки Lovable: що перевіряють Quick scan і Deep scan, коли запускається кожне, і єдине, чого не доведе жодне сканування зсередини.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":573,"title":574,"description":575,"published":576,"category":541,"image":577,"draft":424},"\u002Fblog\u002Fsupabase-backup-auth-users","Чому у вашому дампі Supabase немає користувачів","Запустіть supabase db dump окремо і отримаєте форму вашої бази та жодного її рядка, без схеми auth, у якій живуть ваші користувачі.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":294,"title":579,"description":580,"published":581,"category":420,"image":582,"draft":424},"Домен закінчився, сайт лежить: що буде далі","Ваш домен закінчився і сайт лежить. Ось який годинник уже пішов, чому прострочений сертифікат це менша з двох бід, і як перевірити обидва.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":584,"title":585,"description":586,"published":587,"category":420,"image":588,"draft":424},"\u002Fblog\u002Fis-lovable-safe","Чи безпечний Lovable? Що показали 18 554 застосунки Lovable","Чи безпечний Lovable? Ми прогнали 18 554 живі застосунки Lovable через дев’ять перевірок. Платформа виявилася найчистішою з п’яти. Знахідки були в застосунках.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":590,"title":591,"description":592,"published":593,"category":420,"image":594,"draft":424},"\u002Fblog\u002Fvibe-coded-app-security-checklist","Чек-лист безпеки для vibe coding, у девʼяти перевірках","Чек-лист безпеки для vibe coding із девʼяти пунктів, кожен з яких будь-хто може перевірити у вашому живому застосунку ззовні, і кожен має тест на один рядок.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":596,"title":597,"description":598,"published":599,"category":420,"image":600,"draft":424},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Секретний ключ Stripe у фронтенді може рухати гроші","Секретний ключ Stripe, відкритий у вашому фронтенді, може повертати кошти, списувати й читати кожну картку клієнта. А ключ pk_live_ там і має бути.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":602,"title":603,"description":604,"published":605,"category":420,"image":606,"draft":424},"\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":608,"title":609,"description":610,"published":611,"category":420,"image":612,"draft":424},"\u002Fblog\u002Fbase44-source-maps","Безпека Base44: що позначає скан і що з цього виправляти вам","Безпека Base44 на 5 438 просканованих застосунках: три знахідки майже на кожному належать платформі, source map є бейджем Base44, а ваша частина коротка.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":614,"title":615,"description":616,"published":617,"category":420,"image":618,"draft":424},"\u002Fblog\u002Fis-cursor-ai-safe","Чи безпечний Cursor AI? Редактор, код і опублікований застосунок","Чи безпечний Cursor AI? Три запитання в одному пошуку: що Cursor зберігає, у чому помиляється його код і чи відкритий застосунок, який ви опублікували.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":620,"title":621,"description":622,"published":623,"category":420,"image":624,"draft":424},"\u002Fblog\u002Fis-replit-safe","Чи безпечний Replit? Що ми знайшли в 3 042 живих застосунках Replit","Чи безпечний Replit? Ми прогнали 3 042 живі застосунки Replit через дев’ять зовнішніх перевірок. Знахідки були в опублікованому застосунку, а не в хостингу.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":626,"title":627,"description":628,"published":629,"category":541,"image":630,"draft":424},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: у копії бази даних немає жодного файлу","Supabase storage backup це окрема робота. Копії бази даних зберігають список ваших файлів і жодного з них, тож після відновлення кожне завантаження зламане.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":632,"title":633,"description":634,"published":635,"category":541,"image":636,"draft":424},"\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":638,"title":639,"description":640,"published":641,"category":541,"image":642,"draft":424},"\u002Fblog\u002Fsupabase-project-paused-recover","Проєкт Supabase на паузі? Ваші дані нікуди не зникли","Supabase поставив ваш проєкт на паузу після тижня без активності. Нічого не видалено, кнопка Restore стоїть поруч із назвою, і у вас є рік, щоб натиснути.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":644,"title":645,"description":646,"published":647,"category":420,"image":648,"draft":424},"\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":650,"title":651,"description":652,"published":653,"category":420,"image":654,"draft":424},"\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":656,"title":657,"description":658,"published":659,"category":420,"image":660,"draft":424},"\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":662,"title":663,"description":664,"published":665,"category":420,"image":666,"draft":424},"\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":668,"title":669,"description":670,"published":671,"category":420,"image":672,"draft":424},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Сканери безпеки для vibe coding у порівнянні, наш теж","Найкращий сканер безпеки для vibe coding залежить від трьох питань, на які не відповідає жоден перелік функцій. Десять інструментів і ціни.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":674,"title":675,"description":676,"published":677,"category":420,"image":678,"draft":424},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: п’ять перевірок, які зробите самі","Supabase security checker читає ваш опублікований застосунок, а не налаштування проєкту. Ось п’ять перевірок і як виконати кожну самостійно.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":680,"title":681,"description":682,"published":683,"category":420,"image":684,"draft":424},"\u002Fblog\u002Fvibe-coding-security-scanner","Сканер безпеки для vibe coding: чого не бачить скан URL","Сканер безпеки для vibe coding читає ваш робочий застосунок ззовні. Що це охоплює, чотири речі, яких він не бачить, і як читати результат.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":686,"title":687,"description":688,"published":689,"category":420,"image":690,"draft":424},"\u002Fblog\u002Fmissing-security-headers","Відсутні заголовки безпеки: коли це справді важливо","Відсутні заголовки безпеки трапляються в наших звітах найчастіше. Від чого вони захищають і коли це найменш терміновий рядок вашого звіту.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":692,"title":693,"description":694,"published":695,"category":420,"image":696,"draft":424},"\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":698,"title":699,"description":700,"published":701,"category":420,"image":702,"draft":424},"\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":704,"title":705,"description":706,"published":707,"category":541,"image":708,"draft":424},"\u002Fblog\u002Fsupabase-backup-tools-compared","Інструменти резервного копіювання Supabase, і наш серед них","Чотири види інструментів резервного копіювання Supabase, що копіює кожен і коли безкоштовна GitHub Action виграє в будь-якої оплати, нашої теж.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":710,"title":711,"description":712,"published":713,"category":420,"image":714,"draft":424},"\u002Fblog\u002Freplit-secrets-explained","Як користуватися секретами в Replit і що все одно публікується","Як користуватися секретами в Replit: додати, прочитати і усунути дві причини undefined. А ще ключі, які цей інструмент не здатен зберегти в таємниці.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":716,"title":717,"description":718,"published":719,"category":541,"image":720,"draft":424},"\u002Fblog\u002Fback-up-supabase-free-tier","Резервні копії на безкоштовному тарифі Supabase без терміналу","На безкоштовному тарифі Supabase резервних копій немає: копію робите ви. Як зробити її з панелі та що втрачає шлях через CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":722,"title":723,"description":724,"published":725,"category":420,"image":726,"draft":424},"\u002Fblog\u002Fis-supabase-secure","Чи безпечний Supabase? Так. Ваш проєкт це інше питання","Чи безпечний Supabase? Платформа проходить аудити, шифрує дані й тримає пентести. Їхня документація каже, де це закінчується і починаються ваші налаштування.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":728,"title":729,"description":730,"published":731,"category":420,"image":732,"draft":424},"\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":734,"title":735,"description":736,"published":737,"category":420,"image":738,"draft":424},"\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":740,"title":741,"description":742,"published":743,"category":420,"image":744,"draft":424},"\u002Fblog\u002Fcors-wildcard-security-risk","Чи є вайлдкард CORS ризиком для безпеки? Майже ніколи.","Чи є вайлдкард CORS ризиком для безпеки? Зазвичай це типове налаштування вашого білдера, і воно не видає нічого, що ваш сервер і так віддавав кожному.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":746,"title":747,"description":748,"published":749,"category":541,"image":750,"draft":424},"\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":752,"title":753,"description":754,"published":755,"category":541,"image":756,"draft":424},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Як відновити резервну копію Supabase, і що ламається потім","Як відновити резервну копію Supabase з панелі або з файлу дампа, що саме замінює відновлення і чому ваш застосунок може лишитися зламаним після нього.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":758,"title":759,"description":760,"published":761,"category":420,"image":762,"draft":424},"\u002Fblog\u002Fsupabase-storage-bucket-public","Ваш бакет Supabase Storage публічний. Чи це проблема?","Публічний бакет Supabase Storage означає, що той, хто має URL файлу, може його відкрити. Він не означає, що хтось може переглянути список вмісту.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":246,"title":764,"description":765,"published":766,"category":420,"image":767,"draft":424},"Чи є проблемою ключ API Google у вашому браузері?","Ключ API Google у відкритому коді сторінки наш сканер знаходить найчастіше, і зазвичай усе гаразд. Вирішує це одне безкоштовне налаштування.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":310,"title":769,"description":770,"published":771,"category":541,"image":772,"draft":424},"ШІ-агент видалив мої дані в Supabase. Що можна відновити?","ШІ-агент видалив дані з вашої бази. Те, що ви зможете відновити, вирішилося раніше, а наступні хвилини вирішують, скільки з цього вціліє.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":774,"title":775,"description":776,"published":777,"category":420,"image":778,"draft":424},"\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":780,"title":781,"description":782,"published":777,"category":420,"image":783,"draft":424},"\u002Fblog\u002Fsource-maps-exposed-in-production","Відкриті source maps: ваш застосунок публікує свій вихідний код","Відкрита source map дає будь-кому прочитати оригінальний код вашого застосунку, разом із коментарями. Перевірка за 30 секунд, і що важить насправді.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":785,"title":786,"description":787,"published":788,"category":420,"image":789,"draft":424},"\u002Fblog\u002Fsupabase-new-api-keys","Нові API-ключі Supabase: який із них безпечний у застосунку?","Supabase замінив anon і service_role публічними та секретними ключами. Який із них має бути у вашому застосунку, а який не має бути ніколи?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":791,"title":792,"description":793,"published":794,"category":541,"image":795,"draft":424},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Чи робить Supabase резервні копії моєї бази? Залежить від тарифу.","Чи робить Supabase резервні копії вашої бази даних? На платних тарифах щодня, на безкоштовному жодної. Як дізнатися, що у вас насправді є.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":797,"title":798,"description":799,"published":800,"category":420,"image":801,"draft":424},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security увімкнено. Таблиця досі публічна.","Увімкнути Supabase Row Level Security не означає захистити таблицю. Захищають політики, а та, що полагодила застосунок, часто впускає всіх.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":803,"title":804,"description":805,"published":800,"category":541,"image":806,"draft":424},"\u002Fblog\u002Fversion-history-is-not-a-backup","Історія версій не є резервною копією. Вона не поверне таблицю.","Lovable і Bolt ведуть історію версій вашого коду. Ваша база даних працює як окремий сервіс, тож відкат назад не поверне ваші дані.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":808,"title":809,"description":810,"published":811,"category":541,"image":812,"draft":424},"\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":814,"title":815,"description":816,"published":811,"category":420,"image":817,"draft":424},"\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",1791705965378]