Итак, вот в чем ситуация: у меня есть приложение iOS, в котором пользователи вводят информацию в определенные ярлыки, а затем я создаю URL-запрос на основе данных, предоставленных пользователям, и отправляю их на мой PHP-сервер. URL-адрес выглядит следующим образом:
http://www.somewebsite.com/send.php?title=hello&name=john&contact=email
Теперь проблема с вышеизложенным заключается в том, что любой, кто имеет доступ к URL-адресу, может легко бомбардировать базу данных спамом, слишком много сообщений и т. Д. Это кажется очень неуверенным. Каким должен быть мой подход к тому, чтобы сделать этот процесс максимально безопасным?
Мой текущий уровень знаний с PHP позволяет выполнять задачи, просто используя методы, которые «выполняют задание» (независимо от того, насколько они безопасны), но теперь я начинаю понимать, что мне нужно для обеспечения безопасности , безопасность и т. д. Полезный совет / понимание будут с благодарностью оценены. Спасибо!
Лучший способ защитить это – заблокировать ваши серверные компоненты (то есть часть PHP) за уровнем аутентификации OAuth2. Я лично рекомендую этот сервер OAuth2 для этой цели.
Общий рабочий процесс будет следующим:
1. Send an API key/username/password/etc to an API endpoint (ie a URL) 2. Get a token, store it in memory for future use 3. Send this token on subsequent requests
Это решение превосходит отправку хэша (например, MD5) данных, потому что это не аутентифицирует что-либо. Он также устраняет основную проблему, а не скрывает ее (например, POST, а не GET ничего не делает для обеспечения ваших коммуникаций). Однако OAuth2 не обеспечивает конфиденциальность . Человек в середине все еще может видеть / калечить ваши просьбы.
Чтобы лучше защитить своих пользователей, вы должны использовать HTTPS (TLSv1.2 с PFS ) в своем приложении. Исключительно. Даже не имеет HTTP-сервер порта 80, который делает что-то большее, чем перенаправление на ваш HTTPS-сервер. Также отправьте заголовки HSTS и HPKP , если iOS поддерживает их.
Если вам нужна более эффективная защита, чем предложения HTTPS + OAuth2, я предлагаю учиться безопасности приложений на полный рабочий день, потому что более подробные и сложные решения будут иметь смысл, если у вас будет большая широта знаний по этому вопросу. (В зависимости от вашей модели угрозы , конечно!)
Например, защита от злоумышленника, реконструирующего ваше приложение для восстановления жестко закодированных ключей API, просто не имеет их, что усложняет ваш рабочий процесс и, возможно, требует аутентификации каждого пользователя.
Добавьте имя пользователя / пароль и ключ в свой параметр. Сделайте свою собственную комбинацию (если нужно, зашифруйте), тогда всегда проверяйте ее, чтобы процесс был минимизирован.
Если учетные данные, где неверный, останавливают процесс.