Основи безпеки
Безпека Base44: що позначає скан і що з цього виправляти вам
Безпека Base44 на 5 438 просканованих застосунках: три знахідки майже на кожному належать платформі, source map є бейджем Base44, а ваша частина коротка.

Коротко
- Безпеку Base44 здебільшого вирішує платформа. Скан застосунку на Base44 видає ті самі три знахідки майже на кожному: відсутні заголовки, заголовок CORS із символом підстановки та опублікований source map.
- 16 вересня 2026 року ми повернулися й прочитали, що міститься в тих source map. Кожен, що відповідав, належав скрипту бейджа Base44. Код власника пішов без map на кожному застосунку, який ми відкрили.
- Ваша частина коротка: будь-який ключ, вставлений у застосунок (знайдений на 2 % застосунків Base44), правила доступу до ваших таблиць і все, що ви підключили самі. Обидві оцінки D серед 5 438 застосунків прийшли саме з цього списку.
Ви просканували свій застосунок на Base44, і звіт повернувся з оцінкою B і трьома бурштиновими рядками під нею: бракує заголовків безпеки, API відкритий для будь-якого сайту, а ваш вихідний код опублікований. Або хтось технічний подивився за вас і сказав ті самі три речі більш стурбованим голосом. Для застосунку, код якого ви ніколи не читали, останній рядок б’є найсильніше.
Ось те, у чому посібник за посібником про безпеку Base44 помиляється: майже кожен рядок у цьому звіті стосується Base44. Три з чотирьох знахідок, що з’являються майже на кожному застосунку, задає платформа, для кожного застосунку, який вона розміщує. А одна з цих трьох є реченням, яке наш власний скан формулює неправильно. Ця стаття існує тому, що ми повернулися й прочитали, що саме він знайшов.
Уявіть свій застосунок як квартиру в будинку, що належить Base44. Скан читає будинок з вулиці. Замок на вхідних дверях, вивіска над ними, правило про те, кому можна зазирати у вікна: це вирішив власник будинку, і кожна квартира це поділяє. Те, що ви принесли з собою, є коротшим списком, і решта цієї статті проходить звіт рядок за рядком, щоб сказати, що кому належить.
Що скан безпеки Base44 знаходить майже на кожному застосунку
Три знахідки майже на кожному, четверта приблизно на половині, і всі чотири вирішує Base44.
У серпні 2026 року ми прогнали ті самі дев’ять перевірок на 30 998 живих вайб-кодених застосунках, 5 438 із яких опубліковано на Base44. Усім 5 438 бракувало заголовків безпеки. 5 417 відповіли на запит із вигаданого сайту заголовком CORS із символом підстановки. 3 229 із них, 59 %, віддавали source map. 2 705 мали адресу, названу у власному коді застосунку, яка відповідала на запит без входу й повертала дані.
| Конструктор | Застосунки | Source map опубліковано | Знахідка CORS | Ключ у бандлі | Оцінка D або F |
|---|---|---|---|---|---|
| Base44 | 5 438 | 3 229 (59 %) | 5 418 (99 %) | 103 (2 %) | 2 |
| Lovable | 18 554 | 225 (1 %) | 8 (менше 1 %) | 822 (4 %) | 407 |
| Replit | 3 042 | 168 (6 %) | 1 129 (37 %) | 219 (7 %) | 9 |
| Bolt | 1 123 | 13 (1 %) | 5 (менше 1 %) | 75 (7 %) | 15 |
| v0 | 1 790 | 0 | 0 | 0 | 0 |
Кожен відсоток рахується від застосунків, на яких ця перевірка отримала відповідь, тому бази трохи відрізняються від кількості застосунків. Перевірка, яка не змогла дістатися застосунку, залишає його осторонь. Він ніколи не рахується як чистий.
Прочитайте рядок Base44 проти рядка Lovable. На Lovable перші дві знахідки майже ніколи не з’являються, бо хостинг Lovable задає обидві навпаки. На Base44 вони з’являються майже щоразу. Настільки однорідний стовпець на тисячах застосунків, чиї власники ніколи не спілкувалися між собою, саме так виглядає налаштування платформи ззовні. Ніхто не обирав його у власному застосунку.
Останні два стовпці вирішуються всередині кожного застосунку, і вони розповідають другу половину. Ключ у стиснутому коді трапився на 2 % застосунків Base44 проти 4 % застосунків Lovable, а 2 застосунки Base44 з 5 438 отримали D проти 407 застосунків Lovable з 18 554. Обидва ці застосунки Base44 є в останньому розділі.
Знахідка source map на застосунку Base44 є бейджем
Кожен source map, що відповідав на застосунках Base44, які ми відкрили повторно, належав скрипту бейджа Base44. Жоден із них не містив коду власника.
Source map є файлом, який інструмент збірки записує поруч зі стиснутим JavaScript, що його віддає ваш сайт. Він містить оригінальні файли, їхні назви і кожен коментар, щоб помилка могла вказати на рядок, який ви написали, а не на символ 48 000 одного величезного рядка. Коли map опублікований, будь-хто, хто натисне F12, читає проєкт таким, яким він виглядав у редакторі, і наша попередня стаття пояснює, чого це коштує на застосунку, де map ваш.
На Base44 map належить комусь іншому. 16 вересня 2026 року ми повернулися до
30 застосунків, які наш серпневий скан позначив, і прочитали, що містив кожен
map. На 27 із них єдиним map, що відповідав, був /static/js/badge.js.map,
map маленького скрипта, який малює бейдж Base44 на сторінці, і розкриває він
код Base44 для цього бейджа. На решті 3 жоден map не відповів. На жодному з 30
map не покривав файли власника. Ці файли пішли стиснутими й без map на кожному
застосунку, який ми відкрили, як перший файл, що його завантажує сторінка, так
і кожен шматок, який вона завантажує після нього.
Отже, ці 59 % рахують щось інше, ніж опублікований код. Із 30 позначених застосунків 27 із 28, що відповідали, досі несуть скрипт бейджа на своїй сторінці, а з 30 застосунків, які ніколи не позначалися, 29 його не мають. Число, яке читається як «три з п’яти застосунків Base44 публікують свій код», ближче до «три з п’яти застосунків Base44 показують бейдж».
Залишається рядок у нашому власному звіті, за який треба відповісти. Він каже «Ваш вихідний код опублікований», і на застосунку Base44 це правда про один файл і неправда про ваш застосунок. Перевірка зробила те, для чого її збудували: перейти за адресою внизу скрипта й порахувати map, який відповідає. Тут скрипт належить власникові будинку. На Lovable, Replit і Bolt той самий рядок означає те, що каже. З 11 позначених застосунків цих конструкторів, які ми відкрили повторно, 9 віддавали map із власними сторінками й компонентами власника, а на інших 2 жоден map більше не відповідав.
Для вас це означає, що нічого вашого в цьому map немає. Перевірка, яка варта уваги, інша: чи лежить щось, що ви вставили в застосунок, у стиснутому файлі, який кожен відвідувач і так отримує. Про це нижче.
Наш безкоштовний скан читає ваш живий застосунок на Base44 ззовні, усі дев’ять перевірок, приблизно за 20 секунд і без облікового запису, і пише «Не вдалося перевірити» для всього, на що не зміг відповісти, замість галочки: проскануйте свій застосунок.
Символ підстановки CORS: його задає Base44, і нічого приватного за ним не відповідає
Ви не можете його змінити, і на застосунках Base44, які ми розглянули, за ним немає приватних даних.
Знахідка є одним рядком у відповідях вашого сервера,
Access-Control-Allow-Origin: *, який каже браузеру відвідувача, що сторінка
з будь-якого іншого сайту може прочитати саме цю відповідь. Документація
Base44 пояснює, звідки він береться (прочитано 16 вересня 2026 року): «Per-app
CORS configuration is not currently available. Base44 manages CORS at the
platform level.» Його надсилає кожен застосунок на платформі, і саме так 5 417
застосунків із 5 419 опинилися з однією й тією самою знахідкою.
Чи має символ підстановки значення, залежить від того, що відповідає за ним, і довша стаття пояснює чому. Коротко: заголовок приходить після того, як відповідь уже надіслано, і читає його лише браузер, тож звуження заголовка зупинило б сторінки інших сайтів від читання вашого застосунку, і більше нікого. За ним на застосунку Base44 стоїть сам застосунок: сторінка, стиснутий код, бейдж, і все це кожен відвідувач і так завантажує.
Четверта знахідка є тим місцем, де символ підстановки мав би значення. На
2 705 застосунках Base44, приблизно половині, адреса, названа в коді
застосунку, відповідала на запит без входу й повертала дані. 16 вересня ми
відкрили повторно 12 із них. На шести вже нічого не відповідало. На інших
шести адреса, що відповідала, щоразу була тією самою, /api/consent/config, і
повертає вона налаштування згоди на cookie цього застосунку: чи ввімкнений
банер згоди, які регіональні правила застосовуються, скільки місяців
запам’ятовується відповідь. Це конфігурація. Нічиїх рядків у ній немає.
Ваші дані на Base44 цим шляхом не ходять. Ваш застосунок звертається до бекенду Base44, бекенд застосовує правила доступу, які ви задали на кожній таблиці, і відповідь повертається через ті самі двері. Скан ззовні взагалі не може побачити ці правила, і саме тому посібник із Base44 витрачає час на те, до чого може дістатися сторонній, а ваші правила залишає вам.
Що на застосунку Base44 належить вам
Короткий список, і обидві оцінки D у вибірці прийшли з нього.
Ключ, який ви вставили. 103 із 5 438 застосунків Base44, 2 %, віддавали щось схоже на ключ у коді, який завантажує кожен відвідувач. 95 із них були API-ключами Google, яким зазвичай потрібне обмеження в Google Cloud, а не ротація. Один був секретним ключем Stripe, і той застосунок отримав D. Base44 тримає власні облікові дані на своєму сервері, тож ключ у вашому бандлі є тим, який ви або конструктор додали заради якоїсь функції: карти, тега аналітики, платіжної форми. Якого він типу, читається за хвилину, а секретний ротують там, де його видали, перш ніж прибрати з коду.
Правила доступу до ваших таблиць. Base44 називає їх data access rules, і вони вирішують, хто може читати й редагувати кожен тип запису. Ніхто ззовні не може їх перевірити, і ми теж, і це єдине місце, де скан ззовні мусить залишити порожнє поле. Власний скан безпеки Base44 їх читає, і його документація каже, що скан доступний на кожному тарифі, включно з безкоштовним.
Усе, що ви підключили самі. Інша оцінка D у вибірці належала застосунку Base44 із власним проєктом Supabase і таблицею в ньому з назвою на кшталт персональних даних, яка відповідала на запит без входу. Підключіть власну базу даних, і звичні правила для рядків діють у повному обсязі, бо цей проєкт відповідає інтернету напряму.
Що ви можете змінити зсередини Base44
Два заголовки, правила ваших таблиць і ваші ключі. Решту задано для кожного застосунку на платформі.
Документація Base44 перелічує, що ви можете перемкнути (прочитано 16 вересня
2026 року). На панелі вашого застосунку, у розділі Security, а далі значок
налаштувань, ви можете ввімкнути два заголовки безпеки. Prevent Embedding
задає X-Frame-Options, який не дає показувати ваш застосунок усередині
сторінки іншого сайту. Restrict Browser Features задає
Permissions-Policy, який обмежує, що ваш застосунок може просити в браузера,
зокрема камеру й геолокацію. Якщо люди входять у ваш застосунок і можуть
одним кліком зробити щось із наслідками, увімкніть перший. Та сама сторінка
каже, що Content-Security-Policy і Strict-Transport-Security «are not
configurable at the individual app level». Це більша частина знахідки про
заголовки, і вона поза вашими руками.
Власний скан Base44 покриває внутрішнє: проблеми з правами доступу до даних, розкриті секрети, бекенд-функції без перевірки входу, залежності і, від тарифу Builder і вище, вразливості в коді. Його документація не згадує ні source map, ні заголовок CORS, і це чесно, бо обидва належать платформі. Скан ззовні покриває те, що віддається браузеру відвідувача, і на застосунку Base44 саме там список найкоротший.
| Що каже звіт | Хто це задає | Що робити |
|---|---|---|
| Бракує заголовків безпеки | Base44, із двома перемикачами для вас | Увімкніть Prevent Embedding, якщо люди входять. Решту залиште. |
| API відкритий для будь-якого сайту | Base44 | Нічого. Натомість подивіться, що відповідає за ним. |
| Вихідний код опублікований | Скрипт бейджа Base44 | Нічого. Map містить код Base44 для бейджа. |
| Адреса відповідає без входу | Base44, за адресою /api/consent/config | Прочитайте, що вона повертає. Налаштування згоди публічні за задумом. |
| Ключ у бандлі | Ви | Ротуйте секретний ключ у його джерелі. Обмежте ключ Google. |
| Читабельна таблиця | Ви, якщо підключили власну базу даних | Row Level Security на кожній таблиці, що містить людей. |
Що робити просто зараз
Що робити
- Читайте три рядки платформи у своєму звіті як рядки Base44, а потім читайте решту.
- Натисніть F12 на своєму живому застосунку й відкрийте вкладку Sources. Немає теки з вашими власними файлами, отже, немає map вашого коду, хоч би що казав звіт.
- Знайдіть кожен ключ у застосунку й прочитайте його префікс. Секретний ротують там, де його видали, а потім прибирають із коду, саме в такому порядку.
- Увімкніть Prevent Embedding у розділі Security, якщо ваші користувачі входять.
- Відкрийте Data, оберіть таблицю, далі Permissions, і прочитайте правило на кожній таблиці, що містить людей.
- Якщо ви підключили власний проєкт Supabase, увімкніть Row Level Security на кожній його таблиці й перевірте, що воно справді фільтрує.
Публікація на Base44 є одним кліком у верхній панелі, і ніщо між цим кліком та інтернетом не перечитує застосунок у пошуках ключа, вставленого, щоб запрацювала якась функція. Скан, який ви запускали минулого місяця, описує застосунок минулого місяця.
Reeve Monitor створений саме для цього. Він щогодини повторює всі дев’ять перевірок на щонайбільше трьох застосунках, стежить за доступністю кожні 60 секунд, повідомляє вас, коли результат змінюється, замість чекати, поки ви подивитеся, і надсилає щомісячний звіт. Коштує $12 на місяць за прайсом, із сімома безкоштовними днями до першого списання; сторінка цін іноді нижча за цифру тут і ніколи не вища. Monitor стежить і більше нічого, і для застосунку на Base44 це та половина, яка підходить: Care, наш тариф резервного копіювання, робить копії лише проєктів Supabase, а застосунок на Base44 тримає свої дані всередині Base44, якщо ви не підключили власний проєкт.
Посібник простою мовою для цієї платформи є тут: Чи безпечний ваш застосунок на Base44?, а 10-хвилинний чекліст безпеки охоплює те, що варто перевірити на будь-якому щойно запущеному застосунку, хоч би що його збудувало.
Поширені запитання
Мій скан каже, що мій застосунок на Base44 публікує свій вихідний код. Це правда?
На застосунках Base44, які ми перевірили повторно у вересні 2026 року, ні. Єдиний source map, що відповідав, належав скрипту бейджа Base44 і містить код Base44 для цього бейджа. Ваші власні файли пішли стиснутими й без map на кожному застосунку, який ми відкрили. Той самий рядок на застосунку з іншого конструктора зазвичай означає саме те, що каже, і там його варто прочитати.
Чи можу я вимкнути символ підстановки CORS на застосунку Base44?
Ні. Документація Base44 каже, що налаштування CORS для окремого застосунку недоступне і що ним керує платформа. Ви вирішуєте лише те, що адреси вашого застосунку віддають на запит без входу, а саме там цей заголовок і мав би значення. На застосунках Base44, які ми відкрили повторно, єдина адреса, що відповідала без входу, повертала налаштування згоди на cookie.
Чи Base44 менш безпечний за Lovable?
Скан не може ранжувати конструктори, а ці два мають різну форму. Застосунок на Base44 видає більше знахідок, і майже всі вони є налаштуваннями платформи, які не розкривають нічого вашого. Застосунок на Lovable говорить зі своєю базою Supabase напряму, тож налаштування, через яке витікає найбільше даних, таблиця без правил для рядків, доступне тому, хто будує на Lovable, і недоступне тому, хто будує на Base44. Дві оцінки D серед 5 438 застосунків Base44 проти 407 серед 18 554 застосунків Lovable і є цією різницею в цифрах. Про ваш застосунок це не каже нічого, доки ви його не проскануєте.
Що я можу змінити зсередини Base44?
Два заголовки безпеки (Prevent Embedding і Restrict Browser Features, у розділі Security на панелі вашого застосунку), правила доступу до кожної таблиці, які бекенд-функції вимагають користувача з входом, і які ключі ви вставляєте в застосунок. CORS, Content-Security-Policy і Strict-Transport-Security платформа задає для кожного застосунку, і документація Base44 так і каже.
Чи розкриває публічний source map мої API-ключі?
Map розкриває код, а ключ, що лежить у коді, уже був у стиснутому файлі, який завантажує кожен відвідувач. На застосунку Base44 єдиний map, який ми знайшли, належить бейджу, тож справжнє питання в тому, чи є в вашому бандлі взагалі якийсь ключ. Наш скан читає бандл заради цього окремо. На застосунках Base44 ключі, які він знаходить, майже завжди є API-ключами Google, яким зазвичай потрібне обмеження в Google Cloud, а не ротація.