Как программно проверить учетные данные для входа в веб-форму? - PullRequest
0 голосов
/ 28 мая 2011

Я создаю приложение, чтобы пользователи могли экспортировать данные из университетской системы.В настоящее время они могут войти в систему и просматривать данные в формате HTML, но я бы хотел, чтобы люди загружали их как CSV.

У меня есть приложение, в котором пользователи вводят свои имя пользователя и пароль.Я хотел бы войти в систему университета и HTML очистить полученную страницу.Как я могу это сделать?

Я создаю приложение GWT.Я мог бы сделать это в Java-транслитерированном JS на клиенте или в Java на сервере.

Обновление : Selenium может быть хорошим, но выглядит как излишнее.

Ответы [ 4 ]

1 голос
/ 28 мая 2011

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

Во-первых, это должно быть сделано на стороне сервера из-за ограничений на скрипты клиента из-за та же политика происхождения .

Типичный способ справиться с упомянутым вами "очисткой экрана" - это обрабатывать веб-страницу так, как если бы она была службой XML.Сначала изучите исходный код страницы, затем используйте стек Internet / HTTP, создайте POST по правильному URL-адресу и прочитайте ответ, используя стандартную библиотеку XML.Потребуется некоторая изобретательность, чтобы придумать хороший способ покопаться в XML, чтобы найти нужный вам фрагмент, который будет максимально изолирован от изменений на странице.Имейте в виду, что ваша система может сломаться в любое время, когда владельцы сайта изменят свою страницу.

Иногда вы не можете просто отправить сообщение POST, но должны сначала запросить пустую страницу, чтобы получить скрытую форму.значения, которые должны быть возвращены в POST.Вам придется поэкспериментировать, чтобы выяснить, для чего он нужен.

Кроме того, вам, вероятно, придется также обрабатывать файлы cookie, поскольку они обычно являются неотъемлемой частью аутентификации веб-сайта и управления сеансами (хотя вы можете получитьповезло, что сессия не имеет значения между начальным POST и первым ответом).

Наконец, вам может не повезти, что сайт использует javascript для выполнения части работы по аутентификации, которая может потребовать дополнительных копаний дляпонять, как учетные данные публикуются на сайте.

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

1 голос
/ 28 мая 2011

Вам придется делать это с сервера, если домены не совпадают. Вам нужно будет определить, как выглядит транзакция POST, используемая другим сервером для шага входа в систему - имена параметров и т. Д. Затем вы выполните эту операцию и сделаете все, что захотите, с тем, что вернется. Если вам нужно просмотреть несколько страниц, вам также необходимо сохранить соответствующий файл cookie сеанса, чтобы сервер знал, что вы все еще подключены к последующим HTTP-запросам.

0 голосов
/ 28 мая 2011

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

См. http://en.wikipedia.org/wiki/Same_origin_policy

0 голосов
/ 28 мая 2011

Я не слишком уверен насчет GWT, но в целом вы должны взять данные формы, предоставленные пользователем, сравнить их с базой данных имени пользователя и хэшированных паролей.Если база данных извлечена, установите cookie сеанса, который говорит, что пользователь вошел в систему.

На своих страницах проверьте, если cookie сеанса говорит, что пользователь вошел в систему. Если нет, перенаправьте на страницу входа, в противном случае разрешитеих просмотреть пагф.

...