JS: сохранение логина и пароля пользователя
Модератор: Модераторы разделов
-
IMB
- Сообщения: 2567
- ОС: Debian
JS: сохранение логина и пароля пользователя
Доброго дня!
Возможно ли в JavaScript сохранить логин и пароль пользователя в переменные после авторизации, нечто наподобии $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'] из PHP?
Поиск не даёт вразумительного ответа.
Спасибо.
Возможно ли в JavaScript сохранить логин и пароль пользователя в переменные после авторизации, нечто наподобии $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'] из PHP?
Поиск не даёт вразумительного ответа.
Спасибо.
-
nickm
- Сообщения: 203
- ОС: RFRemix
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Спасибо, совсем забыл про cookie. Теперь осталось только решить проблему с шифрованием пароля.
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: JS: сохранение логина и пароля пользователя
Посмотрите библиотеку crypt (функция crypt).
Например, вот так можно получить sha-шифрование:
Код: Выделить всё
char *sha(char *str, char *salt){
char *tmp = crypt(str, salt);
return strdup(tmp);
}
...
snprintf(salt, 128, "$5$%s$", IP);
id = sha(URL, salt);
id = strrchr(id, '$') + 1;Посмотрите один из вариантов реализации аутентификации/авторизации. Может, чем-нибудь да поможет (правда, это немного устаревший вариант, в новом добавлено сохранение нескольких кук в случае, если веб-страница делает запросы нескольким CGI).
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Спасибо, буду изучать. Только реализовать это шифрование, скорее всего, придётся на JS. Но сам алгоритм всё равно будет полезно посмотреть.
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: JS: сохранение логина и пароля пользователя
Можно и так. Но мне показалось, что проще передавать на сервер имя пользователя и пароль в SSL-обертке. В javascript с вариантами шифрования похуже, чем в том же C.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
neol
- Сообщения: 600
- ОС: Debian Stable
Re: JS: сохранение логина и пароля пользователя
А нафига это вам надо?
-
nickm
- Сообщения: 203
- ОС: RFRemix
Re: JS: сохранение логина и пароля пользователя
Кстати, присоединюсь к вопросу. Обычно после авторизации выдается кука с ID сессии (там может быть что угодно, типа sha1 от строки "${login}--${ip}"), она же храниться на сервере (в кеше, базе итд, зависит от реализации) и по этой куке происходит определение свой/чужой, а пароли гонять по сети постоянно как-то не тема.
Или просто какая-то хитрая логика?
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Есть железка, конкретно IP-камера, которая поддерживает стандарт ONVIF (http://www.onvif.org/).
Дамп обмена по этому стандарту показал, что каждый запрос от клиента содержит секцию SOAP-ENV:Header, которая сожержит авторизационные данные, логин и пароль закодировнный в PasswordDigest, и дату создания запроса.
К данной камере предполагается приделать web-интерфейс для управления. Ну а так как не хочется выполнять лишней работы, то пока одним из вариантов рассматривается использование ONVIF для управления. Вариант с внешними скриптами не отменяется, но это двойная работа.
Дамп обмена по этому стандарту показал, что каждый запрос от клиента содержит секцию SOAP-ENV:Header, которая сожержит авторизационные данные, логин и пароль закодировнный в PasswordDigest, и дату создания запроса.
К данной камере предполагается приделать web-интерфейс для управления. Ну а так как не хочется выполнять лишней работы, то пока одним из вариантов рассматривается использование ONVIF для управления. Вариант с внешними скриптами не отменяется, но это двойная работа.
-
nickm
- Сообщения: 203
- ОС: RFRemix
Re: JS: сохранение логина и пароля пользователя
тогда понятно. Особенно, если webморда в инет смотреть не будет 
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Формально может, но на этот случай есть работа по https.
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Что то погода, и наверное близость отпуска, действуют отупляюще.
Понятно, что нужные данные можно сохранить в cookie, весь вопрос в том откуда эти данные получить. Для PHP я привёл переменные содержащие интересующие меня данные, а откуда я их могу получить в JavaScript?
Понятно, что нужные данные можно сохранить в cookie, весь вопрос в том откуда эти данные получить. Для PHP я привёл переменные содержащие интересующие меня данные, а откуда я их могу получить в JavaScript?
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: JS: сохранение логина и пароля пользователя
Из формы, вестимо
Код: Выделить всё
function subm(id){
var str, str1, i;
var login = $('login').value;
var pass = $('passwd').value;
if(login == "" || pass == ""){
if(id) $(id).focus();
return;
}
var str = "login=" + login + " passwd=" + pass;
...
}Ну, а если данные надо получать от сервера, делайте xmlhttprequest и получайте их из него.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Из формы это хорошо. А чт оесли у меня Basic авторизация? 
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: JS: сохранение логина и пароля пользователя
Тогда из запроса, вестимо.
IMB, вы бы "на пальцах" объяснили поподробнее, что именно хотите получить. Тогда бы и советы были поточнее.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
eddy, Вы правы, что-то я плаваю.
Как я говорил, есть IP-камера с поддержкой стандарта ONVIF, но у камеры нет web-интерфейса и нашим менеджера это не очень нравится, да и думаю клиенты не будут в восторге.
И сейчас я решаю как с наименьшими затратами и наибольшими перспесктивами решить эту задачу. Камера построена на базе ARM-процессора, в качестве web-сервера mini-httpd, так как он поддерживает SSL. Использование дополнительго софта не очень желательно по причине необходимости кросс-компиляции, лениво мне это делать, и ограниченности ресурсов. Поэтому использование PHP, Ruby, Perl и т.д. не приветствуется и планируется реализовать весь web-интерфейс на html, JS и bash, в случае использования CGI.
Пока вырисовываются два решения:
- использование ONVIF, из минусов видится сильная завязка на JS для отправки/получения запросов и отрисовки интерфейса
- использование CGI, минус - дублирование существующего фукционала
Пока склоняюсь к использовании ONVIF, но для его использования необходимо решить вопрос с хранением и повторным использованием логина/пароля пользователя.
Ну вот, как то так...
eddy, ссылочкой на разбор запроса не поделитесь?
А то я что-то ничего подобного у Флэнагана (http://www.books.ru/shop/books/614058) не нашёл, потому и спросил.
Как я говорил, есть IP-камера с поддержкой стандарта ONVIF, но у камеры нет web-интерфейса и нашим менеджера это не очень нравится, да и думаю клиенты не будут в восторге.
И сейчас я решаю как с наименьшими затратами и наибольшими перспесктивами решить эту задачу. Камера построена на базе ARM-процессора, в качестве web-сервера mini-httpd, так как он поддерживает SSL. Использование дополнительго софта не очень желательно по причине необходимости кросс-компиляции, лениво мне это делать, и ограниченности ресурсов. Поэтому использование PHP, Ruby, Perl и т.д. не приветствуется и планируется реализовать весь web-интерфейс на html, JS и bash, в случае использования CGI.
Пока вырисовываются два решения:
- использование ONVIF, из минусов видится сильная завязка на JS для отправки/получения запросов и отрисовки интерфейса
- использование CGI, минус - дублирование существующего фукционала
Пока склоняюсь к использовании ONVIF, но для его использования необходимо решить вопрос с хранением и повторным использованием логина/пароля пользователя.
Ну вот, как то так...
eddy, ссылочкой на разбор запроса не поделитесь?
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: JS: сохранение логина и пароля пользователя
Я же вам дал ссылку на свою реализацию, там в файле pass.html есть строки
Код: Выделить всё
var QS = window.location.search.substring(1);
var pars = QS.split("&");
var i=0, s;
while((s=pars[i++])){
if(s.indexOf('URL') == 0){
s = s.split('=');
URL[URL.length] = s[1];
}
else if(s.indexOf('RTN') == 0){
s = s.split('=');
RTN = s[1];
}
}Вот аналогично, через substring и split и делайте.
Для реализации аутентификации из своего интерфейса попробуйте XSS (межсайтовый скриптинг), только не забудьте добавить в CGI на стороне камеры строку
Код: Выделить всё
echo -e "Access-Control-Allow-Origin: http://адрес_сервера_с_вебмордой\nAcess-Control-Allow-Methods: POST\nContent-type:multipart/form-data\n\n"RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Всё, точно пора в отпуск. Жара в достала, мозги плавятся.
Извиняюсь за тупизм, беру неделю на разбор полётов. Если возникнут вопрос постараюсь более полно формулировать вопросы, а как известно в правильном вопросе содержится до половины ответа.
Извиняюсь за тупизм, беру неделю на разбор полётов. Если возникнут вопрос постараюсь более полно формулировать вопросы, а как известно в правильном вопросе содержится до половины ответа.
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: JS: сохранение логина и пароля пользователя
Я сам сегодня первый день в отпуске (взял на 2 недели, уже 2 года в отпуске не был). Уже надоело мокнуть и мерзнуть, поеду на недельку погреться в +35
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Welcom to Moscow my friend! Прошу простить мой французкий. У меня всё наоборот, мокнуть и мёрзнуть не хочется, но каждый вечер душ из холодной воды.
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: JS: сохранение логина и пароля пользователя
Если все равно всё будет завязано на JS, то сделать AJAX-style, не перезагружать страницу (только менять ее части жабаскриптом) и хранить login/pass просто в переменных жабаскрипта.
Хранить в cookie логин/пароль в reversible виде в куках -- ужасно. Лучше уж тогда создать авторизационный CGI рядышком, который будет авторизовать, выдавать куку, а при наличии куки будет сообщать логин/пароль, которые скрипт сможет использовать не сохраняя нигде, кроме переменных. В очередной раз пользователю не понадобится вводить логин/пароль, т.к. имеется кука.
Хранить в cookie логин/пароль в reversible виде в куках -- ужасно. Лучше уж тогда создать авторизационный CGI рядышком, который будет авторизовать, выдавать куку, а при наличии куки будет сообщать логин/пароль, которые скрипт сможет использовать не сохраняя нигде, кроме переменных. В очередной раз пользователю не понадобится вводить логин/пароль, т.к. имеется кука.
Мои розовые очки
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
А не затруднит более подробно расписать алгоритм?
Скажем, после Basic авторизации пользователь попадает на некую страницу. Эта страница должна сразу отобразить информацию, информацию можно получить только с сервера с использованием логин/пароль.
Следущим шагом пользователь переходит на другую страницу которая также берёт данные с сервера с использованием предыдущего алгоритма.
Откуда JS узнает логин/пароль пользователя?
Или предлагается при авторизации выставлять одну куку и переходе на каждую страницу запрашивать сервер на корректность этой куки и приположительном ответе сервер отвечает парой логин/пароль?
Скажем, после Basic авторизации пользователь попадает на некую страницу. Эта страница должна сразу отобразить информацию, информацию можно получить только с сервера с использованием логин/пароль.
Следущим шагом пользователь переходит на другую страницу которая также берёт данные с сервера с использованием предыдущего алгоритма.
Откуда JS узнает логин/пароль пользователя?
Или предлагается при авторизации выставлять одну куку и переходе на каждую страницу запрашивать сервер на корректность этой куки и приположительном ответе сервер отвечает парой логин/пароль?
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: JS: сохранение логина и пароля пользователя
Заведите на сервере веб-морды простенький сервис авторизации. Если пользователь прошел аутентификацию, сохраняйте у него куку с идентификатором сессии. Затем, как только пользователь пытается поработать с веб-камерой, вы просто джаваскриптом проверяете, есть ли сохраненная кука с идентификатором. Если она есть, передаете своему серверу этот идентификатор (в запросе), а в ответе на запрос отдаете пароль и логин (если уж это так нужно).
Но лучше вообще не передавайте эти данные - используйте XSS - пусть сервер сам "стыкуется" с веб-камерой и передает ей нужные данные.
Но лучше вообще не передавайте эти данные - используйте XSS - пусть сервер сам "стыкуется" с веб-камерой и передает ей нужные данные.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: JS: сохранение логина и пароля пользователя
Ну так веб-камера и является сервером, именно с ней и предстоит общаться.
Ладно, в любом случае надо время на обдумывание.
Ладно, в любом случае надо время на обдумывание.
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: JS: сохранение логина и пароля пользователя
1. Пользователь вводит адрес.
2. Подгружается JS.
3. JS запрашивает (через XHR, без перезагрузки страницы) "страницу аутентификации".
4. Если у пользователя уже стоит "сессионная кука", goto 6.
5. Пользователю показывается форма аутентификации или предлагается basic authentication.
6. После прохождения аутентификации выдаётся простая страничка, на которой написаны логин/пароль, чтобы JS мог отпарсить (например, JSON). Вместе с этой страничкой сервер присылает "сессионную куку" (тогда при следующем входе, шаг 5 будет пропущен и пользователю не нужно будет заново вводит пароль).
7. JS парсит логин/пароль, сохраняет в переменных (но не в куках, localStorage или ещё в каком подобном месте) и может использовать для формирования дальнейших запросов к камере.
Всё это делается жабаскриптом на одной странице, без её перезагрузки.
Можно модифицировать алгоритм для не-AJAX, тогда на страницу аутентификации делается редирект с параметром "куда возвращаться". Страница аутентификации после успешного опознавания пользователя устанавливает куку и редиректит, а JS также запрашивает логин/пароль, а опознавание происходит уже по куке.
Мои розовые очки