Как безопасно запросить MySQL DB с клиента - PullRequest
0 голосов
/ 02 ноября 2009

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

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

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

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

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

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

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

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

0 голосов
/ 02 ноября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...