2016-02-21 10 views
1

Итак, проект, над которым я работаю, требует от меня предоставления моим клиентам формы для размещения на своем сайте.Безопасно разрешить INSERT в моей базе данных MySQL с сторонних сайтов ТОЛЬКО через форму?

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

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

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

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

ответ

-2

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

+0

Должен быть комментарий, что ответ-ответ, а не фактический ответ – sagi

+0

Кроме того, пользователь будет напрямую подключаться к моему серверу MySQL, и afaik Я не могу выполнять проверки подлинности в MySQL, если данные о подключении верны, могу ли я ? –

0

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

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

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

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

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


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

 Смежные вопросы

  • Нет связанных вопросов^_^