Чи безпечний ваш застосунок на Base44?
Base44 тримає вашу базу даних поза інтернетом, і це прибирає найбільший ризик швидко зроблених застосунків. Лишається короткий список, майже завжди той самий.

Логотипи належать їхнім власникам і показані, щоб позначити сумісність.
Коротко
- Base44 не виставляє вашу базу даних в інтернет. Помилка, через яку витікає більшість швидко зроблених застосунків, вам просто недоступна, і це справжня перевага.
- Ризик переходить на те, що бачить браузер: API, яке відповідає будь-якому сайту, і ваш вихідний код, опублікований поруч із застосунком. Ці двоє є майже в кожному застосунку на Base44, який ми перевіряємо.
- Базу даних Base44 ніхто не перевірить ззовні, і ми теж. Якщо ви під’єднали власний проєкт Supabase, ця частина перевіряється, і перевірити варто.
Base44 робить те, чого не роблять інші білдери, і це варто знати ще до того, як шукати проблеми: ваші дані ніколи не відповідають інтернету напряму.
Ваш застосунок щось просить у Base44, Base44 просить у бази даних, і відповідь повертається тим самим шляхом. Немає адреси, яку міг би набрати незнайомець. У більшості швидко зроблених застосунків найбільша причина витоку даних це таблиця, яку прочитає будь-хто з адресою проєкту, і на Base44 така помилка вам просто недоступна.
І ось та частина, яку посібник за посібником переказує неправильно: це не робить ваш застосунок безпечним, це робить його безпечним в одному конкретному сенсі. Ризик переміщується, і куди саме, передбачувано настільки, що ми можемо сказати вам це вже зараз, до будь-якої перевірки.
Що Base44 тримає поза інтернетом замість вас
Склад, якщо триматися очевидного порівняння.
Уявіть застосунок крамницею. Усе, що завантажує браузер відвідувача, становить вітрину, і її повністю віддають кожному, хто відкриє сторінку: браузер не покаже того, чого йому не надіслали. За нею стоїть склад, ваші дані. У більшості білдерів склад є окремою будівлею з власною адресою на тій самій вулиці, і чи зайдуть туди незнайомці, залежить від налаштування, якого ви, можливо, ніколи не бачили. У Base44 дверей на вулицю немає.
На практиці це означає, що нема чого вставити в браузер. У застосунку з Supabase позаду будь-хто витягне адресу проєкту з вашого пакунка, додасть назву таблиці й подивиться, що повернеться. Зробіть те саме із застосунком на Base44, і єдина адреса, яку ви знайдете, буде ваша власна, на вашому домені, і відповідатиме вона те, для чого застосунок писали.
Це видно з оцінок. Серед застосунків на Base44 у нашому дослідженні живих застосунків майже кожен отримує A або B, а збої, що тягнуть інші білдери до D, майже не трапляються.
Є в цього і чесний наслідок: ззовні цього не перевірить ніхто, і ми теж. Перевірка з інтернету може смикати лише ті двері, що існують. Тут їх немає, тож і повідомляти нема про що, а сканер, який на цій підставі надрукував би "база даних: безпечна", вигадував би результат.
Чи є ключ у вашому застосунку на Base44 проблемою?
Зазвичай ні, і два види ключів виглядають майже однаково.
Ключ, який можна публікувати, називає проєкт і більше нічого не робить. Він
створений, щоб його читали, і знайти його не означає нічого знайти. Секретний
ключ, той, що пишеться як sb_secret_…, service_role чи sk_live_…, обходить
кожне написане вами правило й може все читати й змінювати.
Base44 тримає власні облікові дані на сервері, тож ключ у вашому застосунку зазвичай узагалі не належить Base44. Він від чогось, що ви під’єднали самі: ключ від карт, аналітики чи платежів, вставлений, щоб запрацювала одна функція. Найчастіше в застосунках на Base44 ми знаходимо ключ Google API, і його варто зрозуміти, а не лякатися, бо необмежений ключ можуть витратити чужі люди. Прочитати, який саме ключ у вас, займає близько хвилини.
Якщо ви таки знайшли справжній секрет, порядок дій важить. Перевипустіть його там, де його видали, у Google Cloud, Stripe чи звідки він походить, і лише потім приберіть із коду. Спершу видалити рядок означає не закрити нічого: старе значення вже лежить у кожній кешованій копії вашого сайту й у тому, що краулер забрав минулого тижня.
Налаштування, яке неправильне майже в кожному застосунку на Base44
Не ключ і не база даних. Ідеться про те, з ким ваше API згодне говорити.
Браузер зазвичай не дає одному сайту читати дані іншого. Саме це правило не
дозволяє сторінці, яку ви відкрили, тихцем звернутися до вашого банку й показати
комусь ваш баланс. Заголовок відповіді під назвою CORS його скасовує, а
виставлений у * скасовує для всіх: сайт, про який ви ніколи не чули, може
викликати API вашого застосунку з браузера вашого відвідувача й прочитати те, що
повернеться.
На перевірених нами застосунках Base44 це найпоширеніша знахідка з великим відривом. Вона ж і найбільш дискусійна, і заперечення тут доречні, тож ось чесна версія. Зірочка перед адресою, яка вимагає входу, є слабкою знахідкою, бо чужому сайту однаково нема чого надіслати. Зірочка перед адресою, яка відповідає будь-кому, є справжньою справою, і приблизно половина перевірених нами застосунків на Base44 має щонайменше одну адресу, яка віддає дані на простий запит без жодного входу. Це дві різні проблеми під однією назвою, і шукати варто другу.
Жодна з них не є вашою помилкою. Зірочку віддає інструмент збірки, коли йому не сказали інакше, зазвичай щоб і домен попереднього перегляду, і живий домен працювали, поки ви будуєте. У короткому тексті є розв’язок, і полягає він у тому, щоб замість зірочки вписати власний домен.
Ваш вихідний код, опублікований поруч із застосунком
Друга за поширеністю знахідка, і та, яку ви перевірите взагалі без інструментів.
Source map це файл, який перетворює стиснений JavaScript, що виконує браузер, назад на написане вами, зі справжніми іменами файлів, коментарями й структурою тек. Інструменти збірки роблять їх, щоб помилка в продакшені вказувала на живий рядок, а не на колонку 4812 одного величезного файлу. Ця частина справді корисна. Публікувати їх поруч із застосунком це та частина, яка вам коштує.
Приблизно три з п’яти перевірених нами застосунків на Base44 віддають свої. Жодні дані через це не витікають, і застосунок ні в чому не поводиться інакше, через що це місяцями лишається непоміченим. Змінюється зусилля на все інше: виколупати адресу зі стисненого пакунка це повільна морока, а прочитати власний код це взагалі не робота. Кожна інша знахідка на цій сторінці стає дешевшою в пошуку, щойно ваш код читабельний.
Перевірка займає менше хвилини. Відкрийте живий застосунок, натисніть F12 і подивіться на панель Sources. Якщо дерево файлів там схоже на ваш проєкт, з іменами, які ви давали, значить maps поїхали разом із публікацією, а довгий текст розповідає, що змінити.
Якщо ви під’єднали власну базу даних
Тоді перевага з початку цієї сторінки на цю частину не поширюється, і звичні правила повертаються.
Приблизно чверть застосунків на Base44, які ми перевіряємо, називає власний проєкт Supabase. Цей проєкт відповідає інтернету напряму, точно як у будь-якого іншого білдера, тож Row Level Security тепер ваша: перемикач для кожної таблиці, який рядок за рядком вирішує, хто що може читати.
Дві речі визначають, чи є вона у вас. Supabase вмикає її за замовчуванням для таблиць, створених у Table Editor панелі, і не вмикає для таблиць, створених виконанням SQL, а саме так їх створює більшість згенерованих налаштувань. І перемикач це лише половина, бо політика, яка дозволяє всім, лишає таблицю відкритою, поки панель звітує, що вона захищена.
Зі сховищем так само, і про нього легко забути, бо воно живе в іншій частині панелі, ніж правила таблиць. Позначений публічним бакет може перелічити й завантажити будь-хто, хто знає про його існування, незалежно від того, чи посилається ваш застосунок на якийсь файл усередині, а налаштування, які це вирішують, варто одного разу спокійно прочитати.
Як перевірити свій застосунок на Base44 хвилин за десять
Запитайте, що ваше API каже іншим сайтам. Це найімовірніше налаштоване неправильно і на це ніхто не дивиться, бо в самому застосунку нічого не поводиться дивно, коли воно надто широке.
Відкрийте живий застосунок через F12 і прочитайте панель Sources. Якщо ваші власні файли перелічені там під власними іменами, будь-хто інший перелічить їх так само.
Прочитайте кожен ключ у застосунку. Про кожен спитайте себе, чи поклали б ви його на головну сторінку. Якщо ні, його місце на сервері, і перевипустити його треба в джерелі, перш ніж прибирати з коду.
Відкрийте Authentication → Policies, якщо ви під’єднали власний проєкт Supabase. Будь-яка таблиця, у якої Row Level Security вимкнена, відповідає кожному, хто має адресу проєкту, а ця адреса є у вашому застосунку.
А потім подивіться ззовні. Кроки вище кажуть, що налаштовано. Що насправді дістає незнайомець, це інше питання, і саме на нього відповідає наша безкоштовна перевірка. Вона читає ваш живий сайт як відвідувач і дає оцінку приблизно за 20 секунд, без акаунта: перевірити застосунок.
Що робити
- Base44 тримає вашу базу даних поза інтернетом. Найбільша причина витоку даних у швидко зроблених застосунках вам недоступна.
- Ззовні цього не перевірить ніхто, і ми теж. Немає дверей, немає результату, а відсутність результату не є зеленою галочкою.
- Ризик переходить у браузер: API, яке відповідає будь-якому сайту, і ваш вихідний код, опублікований поруч із застосунком.
- Зірочка перед адресою, яка не вимагає входу, і є тією версією, що важить, а має її приблизно половина цих застосунків.
- Ключ у вашому пакунку зазвичай від сервісу, який ви під’єднали самі. Перевипустіть його в джерелі, а тоді видаліть із коду.
- Під’єднайте власний проєкт Supabase, і звичні правила Row Level Security та сховища діють для нього в повному обсязі.
Почніть із двох, які майже завжди варті уваги: що ваше API каже іншим сайтам і чи не поїхав ваш вихідний код разом із застосунком. Далі решту покриє 10-хвилинний чекліст безпеки.
Що насправді може піти не так у застосунку на Base44
За порядком того, як часто ми це справді бачимо на Base44, а це не той порядок, який ви б припустили. Ніщо з переліченого не означає, що ви зробили щось не так.
Ваш API відповідає будь-якому сайту
Це найпоширеніший випадок на Base44, і з великим відривом. Зазвичай браузер не дає одному сайту читати дані іншого, а налаштування під назвою CORS саме це правило й скасовує. Виставлене в "*", воно скасовує його для всіх: сторінка, про яку ви ніколи не чули, може звертатися до API вашого застосунку з браузера вашого відвідувача. Reeve перевіряє, що ваш застосунок каже браузерам про це.
Ваш вихідний код виїхав разом із застосунком
Source map віддає читабельну копію написаного вами коду, опубліковану поруч із тією версією, яку виконує браузер. Зручно, поки ви будуєте, і подарунок незнайомцю, коли ви вже онлайн: замість «колупатися в стисненому пакунку» виходить «читати застосунок». Сам по собі він нічого не зливає. Він робить усе інше легшим для пошуку.
Бракує захисних заголовків
Кілька заголовків кажуть браузеру, як захищати ваших відвідувачів: не вгадувати типи файлів, не дозволяти іншому сайту вставляти цю сторінку в рамку, не віддавати повну адресу на виході. Поодинці вони дрібні. Разом вони вирішують, скільки хтось зможе зробити з усім іншим, що знайде.
Ключ від чогось, що ви під’єднали самі
Base44 тримає власні облікові дані на сервері, тож ключі, які трапляються, зазвичай від сервісу, який ви під’єднали самі: ключ від карт, аналітики чи платежів, вставлений, щоб запрацювала якась функція. Деякі ключі мають бути в браузері, і це нормально. Reeve читає завантажений код вашого застосунку, знаходить ключі й каже, який із них який, ніколи не зберігаючи справжніх значень.
База даних, яку ви під’єднали самі
Якщо ви причепили власний проєкт Supabase замість вбудованих даних Base44, ви взяли на себе і його правила. Row Level Security вирішує, хто може читати кожен рядок, і вона вимкнена за замовчуванням для таблиць, створених виконанням SQL. Це єдиний шлях, яким звична проблема відкритої бази все-таки дістається застосунку на Base44. Reeve перевіряє підрахунком рядків, ніколи їх не читаючи.
Файли, які будь-хто може переглянути списком
Завантажене потрапляє у сховища-«бакети», і публічний бакет дозволяє будь-кому переглянути список і скачати те, що всередині: рахунки, документи, приватні фото. Reeve перевіряє, чи можна отримати список ваших бакетів. Файлів він не завантажує ніколи.
Чим Reeve є і чим не є
Reeve є безкоштовною перевіркою ззовні в режимі читання, наче інспектор, що смикає двері, не заходячи всередину. Вона швидко знаходить поширені й дорогі помилки. Це не повний аудит безпеки, і хороша оцінка не є гарантією; вона означає, що очевидні двері зачинені.
Застосунки на Base44 мають кращі оцінки, ніж більшість, і це справжній результат, а не комплімент: платформа бере на себе ту частину, яка зазвичай ламається. Лишається короткий і доволі однаковий список, і це добра новина, бо короткий список можна закінчити. А якщо ви волієте, щоб стежити було не вашою роботою, зробимо її своєю.
Хочете, щоб цим займалися, а не просто перевірили?
Reeve Care стежить за вашим застосунком, робить копії ваших даних і допомагає лагодити те, що зламалося, щоб ви будували далі замість хвилюватися.
Дізнатися про Reeve CareПоширені запитання
Чи безпечніший застосунок на Base44 за зроблений деінде?
В одному конкретному аспекті так. Ваша база даних недосяжна з інтернету, тож ви не можете зробити помилку, яка викриває більшість швидко зроблених застосунків: таблицю, яку прочитає будь-хто з адресою. Це найбільша причина витоків даних у застосунках на кшталт вашого, і Base44 знімає її з вас. Усе, що бачить браузер, лишається на вас.
Чи може Reeve перевірити мою базу даних у Base44?
Ні, і ззовні цього не може ніхто. Ваші дані йдуть через власний бекенд Base44, а не відповідають інтернету напряму, тож немає дверей, які перевірка могла б смикнути. Ми пишемо про це й на нашій сторінці дослідження, і краще скажемо вам це, ніж надрукуємо зелену галочку, якої не заслужили. Якщо ви під’єднали власний проєкт Supabase, цю частину ми перевірити можемо.
У моєму застосунку є ключ API. Це проблема?
Залежить винятково від того, який. Одні створені бути публічними, і без них застосунок не працює; інші віддають цілий акаунт. Base44 тримає власні облікові дані на сервері, тож ключ у вашому пакунку зазвичай від сервісу, який ви під’єднали самі. Reeve читає тип ключа і словами каже, який саме у вас, не зберігаючи значення.
Чи змінить щось перевірка мого застосунку на Base44?
Ні. Reeve дивиться лише на те, що вже публічне ззовні. Він ніколи не входить в акаунт, нічого не змінює і не завантажує ваших файлів. Тільки читання, як перевірити, чи зачинені двері, не заходячи всередину.
Якщо моя база даних недосяжна, чи лишається взагалі про що хвилюватися?
Так, але список коротший, ніж у більшості. Ваш застосунок усе одно працює в браузері, а все, що браузер отримує, є публічним: код, будь-які вбудовані в нього ключі й адреси, які він викликає. Перевірити варто дві речі: чи відповідають ці адреси на запити з інших сайтів, і чи не поїхала разом із публікацією читабельна копія вашого вихідного коду.
Якщо ззовні цього ніхто не перевірить, звідки мені знати, що з даними все гаразд?
Зсередини, бо лише там ця відповідь існує. Оскільки запити йдуть через Base44, а не на публічну адресу, усе, що визначає, хто що може читати, живе у вашому застосунку й у платформі, куди незнайомець не дотягнеться. Тож корисні питання такі: хто може зареєструватися, що бачить зареєстрована людина і чи не робився якийсь екран із розрахунку, що ніхто не гляне. Перевірка ззовні не відповідає на жодне з них. Вона відповідає на іншу половину: що людина дістає взагалі без реєстрації.
Перевірка каже, що моє API відповідає будь-якому сайту. Це я так налаштував?
Майже напевно не навмисно. Зірочку віддає інструмент збірки, коли йому не сказали інакше, зазвичай щоб і адреса попереднього перегляду, і жива адреса працювали, поки ви будуєте. Вона доживає до продакшену, бо в застосунку нічого не ламається від того, що вона надто широка. Наскільки це важливо, вирішує адреса за нею: якщо та вимагає входу, знахідка слабка. Якщо вона відповідає будь-кому, це та версія, яку варто закрити цього тижня.
Я під’єднав власний проєкт Supabase до застосунку на Base44. Це щось змінює?
Змінює найважливіше. Ваш власний проєкт відповідає інтернету напряму, тож налаштування Row Level Security для кожної таблиці тепер ваше, і воно вимкнене за замовчуванням для будь-якої таблиці, створеної виконанням SQL. Це єдиний шлях, яким класична проблема відкритої бази дістається застосунку на Base44, і він вартий десяти хвилин вашого часу.