Как разрешить доступ только к моей базе данных MySQL из приложения iOS? (Использование webapp в качестве шлюза для db)

Моему iOS-приложению необходимо подключиться к серверу mysql. Для этого я хотел бы создать webapp, который выступает посредником между клиентскими приложениями и базой данных на стороне сервера.

Меня беспокоит то, что кто-то может просто вычислить URL-адрес, который использует мое приложение, и передать свои собственные параметры URL-адреса, – и поскольку webapp не имеет представления о том, отправляются ли законные данные из моего приложения iOS, а кто-то просто вводит правильный URL-адрес из любой веб-браузер, система будет уязвима.

Предположим, у меня есть функция PHP для маркировки пользователя как «проверенного» (после отправки кода проверки электронной почты). Это довольно стандартный материал, но что мешает кому-то сделать тот же запрос из веб-браузера?

Конечно, пользователь, который приложение использует для создания запросов к базе данных, будет иметь ограниченные привилегии, поэтому остальная часть базы данных не будет подвержена риску. Тем не менее, даже если пользователи, активирующие свои учетные записи извне приложения, будут катастрофическими.

Опция, о которой я думал, использует https, так что, даже если пользователь выяснит URL-адрес, они не будут знать пароль и не смогут нюхать его, поскольку он зашифрован от начала до конца. К сожалению, https может быть дорогим для плохого студента колледжа, поэтому я бы хотел альтернативу, если он существует.

Как указывалось ранее, 100% безопасности не существует. Но есть несколько решений, которые вместе создают отличную безопасность.

Https

Как вы отмечаете, это важная часть, поскольку она препятствует обнюхиванию.

сессии

Используйте сеансы и не разрешайте запрос без действительного сеанса (кроме первого, который должен аутентифицировать приложение).

отпечаток пальца

Проверьте агент пользователя и установите дополнительные заголовки HTTP, чтобы получить отпечаток пальца, уникальный для вашего приложения. (Тем не менее кто-то мог нюхать, но ему нужно было использовать завиток или подобное.)

Запросы обфускации

Создайте строку запроса и примените хэш-функцию. Серверу необходимо реализовать обратную функцию. ? 43adbf764Fz вместо? A = 1 & b = 2

шифровать

Это еще один шаг. Используйте общий секрет для вычисления хэша. На сервере повторите то же самое. Это уже сильная безопасность. Чтобы сломаться, нужно перепроектировать ваше приложение.

Использовать уникальный общий секрет

Вы говорите, что это приложение для iOS. При установке уникального токена генерируется iOS. Попросите приложение зарегистрировать этот токен с вашим сервером. Таким образом, у вас есть сильная общая тайна, уникальная для каждой установки, и не было бы способа взломать ваше веб-приложение.