[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка авторизации курлом
Страницы: 1, 2
DZHETIGAPA
Возникла задача интеграции внешних сервисов с сайтом. Пользователь должен иметь возможность проверить свои доступы к внешнему сервису на своем сайте. То есть он вводит свой логин и пароль и ему пишется, мол доступы подходят или нет.

Я все это реализую с помощью курла. Авторизация проходит успешно через курл(куки записываются в файл), но мне ведь по сути надо узнать авторизован пользователь или нет(подходят доступы или нет). Как это можно сделать?

У меня одна идея: сначала записываю куки с удаленного сайта без авторизации, а потом с авторизацией. Проверяю размеры куки файлов. Если есть разница, то авторизация успешная. Если нет разницы, то авторизация не удалась.

Может есть еще какие-либо варианты?

Игорь_Vasinsky
удачная попытка перехода в авторизированный раздел сайта

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
DZHETIGAPA
Ну если сервис конкретный, то вопросов нет, так как можно указать авторизованный раздел. Но решение универсальное, сервисов внешних может быть много. Нужно универсальное решение.
AllesKlar
DZHETIGAPA
Ты не сделаешь универсального решения, потому, как поля авторизации на разных сайтах могут иметь абсолютно разние имена.


_____________
[продано копирайтерам]
DZHETIGAPA
Я уже его сделал. Работающее.

Заходим на сайт. Ищем поля пароля и логина и заносим свои данные. Все просто.

Мне нужно теперь понять, как лучше оповестить пользователя подходят его доступы или нет.
AllesKlar
DZHETIGAPA
Цитата
Заходим на сайт. Ищем поля пароля и логина и заносим свои данные. Все просто.

Как?
Чем дальше, тем чаще формы логина на главной нет, она появляется во всплывающем окне.

Ну, а раз все равно твое "универсальное" шарится по сайту, то логинься минимум 2 раза. Первый раз отправляй заведомо ложные данные, гарантированно получишь от сервера ответ об неудачной авторизации.
Все последующие разы сравнивай с этим ответом.

Хотя, если установлен лимит авторизаций, то по истечению лимита, может прилететь другой ответ, но тоже об неудачной авторизации.

А с кукисами нет гарантии. Там может просто id сессии быть и все.

_____________
[продано копирайтерам]
DZHETIGAPA
Цитата
Как?
Чем дальше, тем чаще формы логина на главной нет, она появляется во всплывающем окне.


Ну давай не будем брать аджакс подгрузку формы и так далее) Как правило форма есть, либо скрыта стилями. Вот и все.

Цитата
Ну, а раз все равно твое "универсальное" шарится по сайту, то логинься минимум 2 раза. Первый раз отправляй заведомо ложные данные, гарантированно получишь от сервера ответ об неудачной авторизации.


Как ты предлагаешь мне сравнивать? Ответы ведь мне не в джейсоне идут, а просто html форматом. Если бы сайт был один, то можно было бы спарсить его ошибки или успехи, но сайты разные и нужен универсализм.

Еще варианты есть? Как я понимаю сравнивание куки файлов - самое реальное решение. Или я ошибаюсь?
DZHETIGAPA
А с кукисами нет гарантии. Там может просто id сессии быть и все. 


В куки заносится логин и пароль еще в зашифрованном виде.
AllesKlar
Цитата (DZHETIGAPA @ 18.02.2014 - 12:36)
А с кукисами нет гарантии. Там может просто id сессии быть и все. 


В куки заносится логин и пароль еще в зашифрованном виде.

Зачем?
Логин и пароль - это обычние поля, ни чем особо не отличающиеся от поля "Поиск"
И только скрипт сервера знает, что поле "Логин" содержит имя пользователя.

И вообще, в кукисах хранить логины и пароли - это как-то небезопасно.

Цитата
Как ты предлагаешь мне сравнивать

Вот так и сравнивать.
Первая заведомо ложная авторизация -> пришел ответ от сервера, его запомнили.
При всех дальнейших попытках логина на этом сервере, сравниваем с этим ответом. если иной, то (возможно) логин - Ок

_____________
[продано копирайтерам]
DZHETIGAPA
Цитата
Зачем?
Логин и пароль - это обычние поля, ни чем особо не отличающиеся от поля "Поиск"
И только скрипт сервера знает, что поле "Логин" содержит имя пользователя.


У поиска поле пароль тоже есть? Захожу на сайт, нахожу все формы, где есть пароль и пуляю в них запросы. Все просто.

Цитата
Вот так и сравнивать.
Первая заведомо ложная авторизация -> пришел ответ от сервера, его запомнили.
При всех дальнейших попытках логина на этом сервере, сравниваем с этим ответом. если иной, то (возможно) логин - Ок


Плохой явно вариант. Если ты предлагаешь сравнивать точь в точь тела ответов, а фактически html страницы, то при разных запросах могут быть баннеры разные, новости и так далее. Это точно не вариант.
AllesKlar
Цитата
Захожу на сайт, нахожу все формы, где есть пароль и пуляю в них запросы. Все просто

Форма регистрации?

Цитата
Плохой явно вариант. Если ты предлагаешь сравнивать точь в точь тела ответов, а фактически html страницы, то при разных запросах могут быть баннеры разные, новости и так далее. Это точно не вариант.


Ну, не знаю.
Лично я давно забыл про существование кук, работаю только с сессиями.
Несомненно, есть случаи, оправдывающие использование кук, но, это скорее исключение.

Поэтому, при авторизации на моем сайте ты получишь 2 вещи:
1. куку с SID, не меняющую свое содержание, пока сессия открыта.
2. то, что мне взбредет в голову, для выдачи результатов логина (не поддается систематизации)

Думаю, что решения твой вопрос не имеет. Только частные случаи.

_____________
[продано копирайтерам]
DZHETIGAPA
Сбрось мне, пожалуйста, свой сайт и какой-нибудь доступ. Вот и проверим.
DZHETIGAPA
Форма регистрации?


И читайте внимательно. Поиск идет всех форм, где есть пароль. И потом пуляется туда запрос. Он и регистрацию обработает, если надо. Главное, что он найдет форму авторизации.
AllesKlar
До чего же народ ленивый пошел, уже тесты за них писать надо.
Ну лови в личку тест, логинься, сравнивай куки.
Login: user
Pass: 123456


<input type='text' name='name1'>
<input
type='text' name='name2'>
<input
type='text' name='name3'>
........
<input type='text' name='nameN'>
<input
type='password' name='nameNplus1'>
<a
href='' onClick='login();'>Войти</a>

Это тебе на прощание.
Нет формы, нет субмита, есть яваскрипт, который берет значения из поля nameNplus1 и еще какого-то одного из текстовых и отправляет POST на ХЗ какой скрипт для авторизации

_____________
[продано копирайтерам]
DZHETIGAPA
[quote]До чего же народ ленивый пошел, уже тесты за них писать надо.[/quote]

Какие тесты? Ты утверждаешь, что у тебя сайт такой, что никто его не съест. Я же иного мнения.

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

[quote]В форме регистрации есть 2 поля пароль.[quote]

Да хоть двадцать полей. Парсеру без разницы. Он пульнет и ничего не получит. Перейдет к следующей форме, где есть пароль.

[quote]
Думаю, что решения твой вопрос не имеет. Только частные случаи.
[/quote]

Вот как раз ленивые и не имеют решений. Решения всегда есть! Главное стремиться!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.