2013-03-23 2 views
2

У меня есть запуск веб-сайта, размещенного на внешнем сервере (linux platofmr), с установленными технологиями mysql, php. Мне нужно, чтобы мое приложение C# собирало данные с веб-сайта.Отправляйте конфиденциальные данные с моего сайта на мое приложение C#

У меня есть база данных MYSQL на моем сайте, и я хочу, чтобы отправить свое имя пользователя и пароль для доступа к некоторым конфиденциальным данным (с помощью PHP скрипта)

Моего текущего дизайн выглядит примерно так:

C# приложения POST для скрипта login.php на веб-сайте.

mywebsite.com/login.php?username=admin?password= например MD5HashedPassword

Скрипт создает пустую страницу с «OK», если имя пользователя и пароль совпадает, что в базе данных.

Теперь я думаю, что это, вероятно, безопасно только для входа в систему, но если я хочу, чтобы сценарий входа в систему создавал XML-данные, содержащие конфиденциальную информацию, я не считаю, что это безопасный способ сделать это. Правильно ли я об этом думаю?

В каком направлении я должен идти. Должен ли я иметь какую-то сессию PHP между моим приложением и веб-сайтом. Это простая вещь? Должен ли я отказаться от использования PHP вместе и использовать другую технологию?

Любые мнения и предложения приветствуются.

Большое спасибо

+1

Имя пользователя/пароль охватывает проблему аутентификации. Что-то вроде SSL будет охватывать проблему «данные в ясности» во время передачи (используя HTTPS вместо HTTP). – Joe

+0

Возможно, http://stackoverflow.com/q/549/1741542 и [OWASP] (http://www.owasp.org). –

+0

рассмотрите вопрос о добавлении сертификата SSL на ваш сайт и вызовите https. который будет шифровать данные на проводе. Это одно из возможных простых решений. – bUKaneer

ответ

3

Это должно быть очень хорошо, если выполнены следующие условия о вашей сделке истинны:

  1. запрос POST на страницу PHP происходит от C# сервера на PHP, и браузер пользователя делает не выполнить POST. Если браузер пользователя выполняет POST на сервер PHP, злоумышленник может просто перехватить запрос с прокси-сервером, например Burp Suite, и извлечь хешированный пароль, а затем сделать дополнительные запросы злонамеренного характера.

  2. Имя пользователя/пароль передается как параметры POST, а не параметры GET в строке запроса. Вы использовали этот пример: e.g mywebsite.com/login.php?username=admin?password=MD5HashedPassword, который выглядит как запрос GET с использованием строки запроса. Это не сейф.

  3. Запрос POST распространяется только по протоколу HTTPS/SSL, а не по протоколу HTTP. Это гарантирует, что связь зашифрована с TCP вниз.

+0

Спасибо, Бен. Могу ли я прояснить некоторые вещи. Я думал, что метод POST внутри обычных форм на веб-странице делает то же самое, что mywebsite.com/login.php?username=admin?password=MD5HashedPassword Я ошибаюсь? Итак, POST всегда использует https? Значит ли это, что страница, сгенерированная сервером, также будет связана с привязкой к соединению SSL-ссылки? – Prof

+0

@Prof POST не обязательно использует https, хотя может. запрос POST может проходить через http или https/SSL. Разница заключается в том, что запрос POST включает пары ключ/значение в теле запроса вместо [строки запроса] (https://en.wikipedia.org/wiki/Query_string). [На этой странице есть несколько хороших примеров того, как выглядят сырые POST-запросы и ответы] (http://www.opencalais.com/HTTPexamples). –

+0

Еще раз спасибо. Я ошибся с POST. Итак, я должен использовать что-то вроде классов HttpWebRequest или WebClient и POST для URL-адреса, содержащего https, а не http. Таким образом, данные ответа будут проходить через SSL-соединение и, таким образом, быть безопасными? Могу ли я спросить, это то, что делают большинство настольных приложений для аутентификации? Возьмем, к примеру, службу Steam Val, использует ли она что-то подобное или будет использовать собственный специальный компонент сокета для взаимодействия с серверами аутентификации – Prof

-1

SSL является стандартным способом защиты данных на проводе. Если у вас есть сертификат, просто загрузите его на свой веб-сервер (процесс зависит от сервера) и убедитесь, что ваша программа указывает https как протокол.

Система аутентификации выглядит нестандартной. Обычно вы не можете использовать аутентификацию форм вашей платформы, если собираетесь использовать программные HTTP-запросы. Но вместо того, чтобы сворачивать свои собственные, вы должны предпочесть базовую или переварить аутентификацию. В этом случае учетные данные будут передаваться в заголовке, а не явно как часть строки запроса. Поскольку вы используете SSL, базовая аутентификация безопасна.

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