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