Как мне получить доступ к базе данных SQL Server? - PullRequest
0 голосов
/ 12 июня 2010

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

Ответы [ 5 ]

2 голосов
/ 12 июня 2010

Используйте API - интерфейс прикладного программирования .Это входная дверь к данным, которые вы хотите раскрыть.Это означает, что вам нужно определить, что вы выставляете и как.

Например, переполнение стека не позволяет напрямую получить доступ к своей базе данных через кого-либо.НО, они позволили людям получить доступ к определенным частям их базы данных через API стековых приложений .Какие части? они раскрыли определенные части со своим собственным API -> веб-URL, которые высыпают данные, основываясь на том, что вы запрашиваете.Результаты представлены только в формате JSON (на момент публикации этого ответа).

Ниже приведен пример метода API , который предоставляет часть своей базы данных.(РЕДАКТИРОВАТЬ: хм, ни одна из ссылок API не работает ... ссылка, которую я пытался показать, была ...

http://api.stackoverflow.com/0.8/help/method?method=answers/{id}/

)

Теперь ... если вы не хотите думать о том, какие данные (например, таблицы БД, если вы используете реляционную базу данных, такую ​​как Microsoft SQL Server или Oracle Sql Server), но хотите предоставить ENTIRE база данных ... только через Интернет ... тогда, может быть, вы могли бы посмотреть, как использовать OData , чтобы прикрепить ее к вашей БД, чтобы выставить ее?

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

2 голосов
/ 12 июня 2010

Для прямого доступа вам придется использовать SSL для ваших подключений, но в целом я бы не выставлял сервер базы данных в Интернет.Я бы разработал свой способ, например, создав веб-сервисы перед сервером БД.

1 голос
/ 12 июня 2010

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

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

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

Правильно настройте брандмауэры и разрешения на сервере . Это должно быть сделано в любом случае. Вы можете разместить сервер за брандмауэром, разрешив доступ только на 1433 и только с определенного диапазона IP-адресов (что, я полагаю, будет возможно). Таким образом, вы можете по крайней мере уменьшить количество мест, откуда возможна атака.

Это может быть использовано в дополнение к API и сервисам, упомянутым выше.

0 голосов
/ 12 июня 2010

У вас может быть просто страница на языке вашего веб-сайта (например, PHP, JSP, ASP и т. Д.), Которая запрашивает БД и возвращает нужные вам данные в любом формате, который вам нужен.Например:

Если вы используете jQuery:

со стороны клиента:

$.ajax({
  url: 'ajax/test.php',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});

Здесь test.php подключится к БД и запросит ееи результат test.php будет возвращен в переменной 'data'.

0 голосов
/ 12 июня 2010

Вы можете использовать с config.php. Вы должны написать имя БД, пользователя БД, пароль БД и хост в config.php Тогда вы можете использовать [? Php require ("config.php"); ?] на вашей странице. Пожалуйста, измените [и] на {и}.

...