Надежно разрешить INSERT в мою таблицу базы данных MySQL со сторонних сайтов ТОЛЬКО через форму?

Итак, проект, над которым я работаю, требует от меня предоставления клиентам формы для размещения на их веб-сайте.

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

Теперь я могу создать php-файл, в котором клиент может использовать form action с database user только с INSERT привилегия для одной конкретной таблицы, но это все еще оставляет эту таблицу уязвимой для заполнения данных Database connection подробности.

Итак, как я могу убедиться, что данные вставляются в таблицу только через форму, а не вручную, чтобы предотвратить наполнение?

Постскриптум Открыты для других предложений о том, как добиться этого безопасно, спасибо.

1

Решение

Не существует такой вещи, как «Ручная вставка», поскольку существуют только HTTP-запросы. Пользователь, использующий браузер, и пользователь, использующий автоматизированный инструмент, не различимы.

Так что вы действительно хотите сделать?

  • Ограничить количество вставок
    Позвольте вашему клиенту публиковать на вашей странице PHP, что-то вроде http://example.org/insert.php где вы можете ограничить скорость вставки.
    Это позволяет кто-нибудь вставить в вашу базу данных.
    Никогда не предоставляйте необработанный доступ к вашей базе данных.

  • Ограничить пользователей, которые могут вставить
    Вы должны посмотреть в OAuth что очень просто и понятно, или вы можете использовать асимметричное шифрование для аутентификации (в основном, как это делает SSH).
    После регистрации вы предоставляете своим клиентам закрытый ключ API, который однозначно идентифицирует их и необходим для доступа к вашему API. При желании вы можете запросить у них список (конечных) доменов, с которых они будут обращаться к вашему API.

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


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

0

Другие решения

Вы хотите реализовать защиту от подделки межсайтовых запросов. Видеть это: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

-2

По вопросам рекламы [email protected]