2009-11-02 1 views
0

Я делаю проект с личным номером, и я хотел бы запускать несколько программ на нескольких компьютерах (возможно, даже на серверах Amazon когда-нибудь) и иметь их все хранения и совместного использования данных в общей базе данных SQL, расположенной на моей учетной записи веб-хостинга.Как запросить базу данных MySQL от клиента безопасным образом

Хостинг-провайдер не разрешает внешние подключения непосредственно к серверу SQL, но я думал о написании тонкого PHP-скрипта, который будет находиться на сервере и получать команды SQL из удаленных программ с помощью команд HTML POST и передавать назад результаты как html. Затем я мог просто использовать библиотеку HTTP для передачи команд SQL прямо на удаленный сервер и получения результатов.

Очевидно, что это проблема безопасности для отправки голых команд SQL на сервер. Я думал о том, чтобы использовать какое-то шифрование с разделяемым ключом для отправки пост-команд, и результаты были бы прекрасными, если бы они были незашифрованными.

Итак, мой вопрос в том, о чем я не думаю? Я не специалист по безопасности в Интернете, и я, очевидно, что-то пропустил. Здесь есть какая-то главная дыра в безопасности, которую невозможно заполнить? Или есть какой-то другой метод или библиотека, чтобы сделать это, которого я не нашел?

ответ

1

Возможно, лучше хранить SQL в качестве хранимых процедур в базе данных и вызывать эти SP из вашего сценария. Таким образом, вам не нужно отправлять простой SQL (только параметры), и его будет проще поддерживать.

Что вы имеете в виду с клиентом? Как клиент из веб-приложения (JavaScript), вы можете выполнить его, сделав вызов Ajax и вернете данные как Json. Если вы имеете в виду клиента Windows, более интересно создать WebService вместо просто php-страницы и использовать ее в своем приложении.

Что касается шифрования, я думаю, что переход через SSL является более или менее лучшим способом обеспечения полной безопасности.

0

Если ваша хостинговая компания разрешает SSH, туннель через сеанс SSH на ваш сервер MySQL с вашим клиентом mysql.

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

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