![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Как привязать сайт к "железке"?
Я написал ActiveX компонет, который считывает ID номер смарткарты. Необходимо, чтобы юзер не мог зайти на сайт без этой смарткарты. Проверка ID номеры карты должна осуществляться на сервере (CGI-скрипт). Подскажите как лучше организовать такой алгоритм. Может как-то через Cookies? Как можно реализовать с помощью Cookies? Это сообщение отредактировал(а) Alca - 15.8.2008, 12:15 |
|||
|
||||
| Ghirik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 919 Регистрация: 26.3.2007 Репутация: 13 Всего: 20 |
Вот они и молчат... Умные... Потому, как подозревают, что вопрос глупый.
Замечательная фраза, умная.
Вот здесь лажа уже закончилась... -------------------- Отдадим всё клиенту, пускай его машина мучается... |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Умно..........
Это сообщение отредактировал(а) Alca - 3.9.2008, 11:01 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
У меня на сервере лежит CGI-скрипт. Если я набираю урл в адресной строке, как сервер сможет проверить этот идентификатор? Объясните пж. Это сообщение отредактировал(а) Alca - 3.9.2008, 12:51 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Постараюсь ответить серьезно, и буду пока считать, что вопрос не настолько глупый, как, может быть, выглядит
Предварительный ответ - никак. Если обходится схемой activeX->cookie->cgi, то никакой секретности не получится. Кука может быть перехвачена и подделана по дороге и на самом компютере. Для простоты можно предложить повесить сайт за https, тогда перехватить значение куки по дороге может быть проблематично. Однако узнать значение куки, сохраненной на компьтере пользователя, imho, никаких проблем не составляет. Более правильный вариант - сервер предлагает какое-то случайное число-ключ, по которому шифруется значение ID карты. Вот оно уже и сохраняется в куках-сессии. Сервер, зная ключ расшифровывает значение ID и идентифицирует карту. Так как используется ActiveX, то несложно навернуть сколь угодно сложный алгоритм шифрования. Ключ сохраняется на время жизни сесии. P.S. Alca, надеюсь ActiveX считывает номер смарткарты, которая вставлена в компютер пользователя? P.P.S cgi может узнать значения кук с помощью пременных окружения. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Да.
Я так и делаю, получаю из переменных окружения, если запрос на сервер передается на CGI-скрипт. Но если я ввожу ссылку (например, http://site/index2.htm) в адреснной строке - запрос не передается скрипту. Или я не прав? Как я могу проверить таким образом значения кук на сервере??? Это сообщение отредактировал(а) Alca - 3.9.2008, 15:31 |
||||
|
|||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Угу... А чем отличаются случай, когда
и
? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Я когда вбиваю ссылку в адреснной строке и жму "Enter" скрипт не выполняется.
Скрипт:
Табличка не выскакивает! Это сообщение отредактировал(а) Alca - 3.9.2008, 15:57 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
А запроc на сервер это что такое? При каких условиях скрипт выполняется?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Передаю форму через POST-запрос
Могу и GET-запросом передавать, если надо - все равно. P.S. Web-cервер Apache (Denwer, последняя сборка) Это сообщение отредактировал(а) Alca - 3.9.2008, 16:09 |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Alca, Тот текст на С, который приведен, выполниться, если вбить в адресную строку http://site/cgi-bin/Test/. Правда что будет делать админ сервера с всплывающим неожиданно сообщением я боюсь вслух произнести ;-)
Обычно, POST запросы отправляются с помощью ajax-технологии. Для этого используется какая-то Ajax javascript-библиотека. к примеру jQuery. Для jQuery страничка, которая отправит запрос при "вводе адреса в адресную строку" может выглядеть так
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
А на С реально сделать?
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Alca, Мне почему-то начинает казаться, что статья будет очень полезна.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Alca |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Это я понял.
Это не совсем. ksnk, объясни что значит:
Это сообщение отредактировал(а) Alca - 3.9.2008, 16:48 |
||||||||
|
|||||||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Это уже следующая ступень понимания, пока о ней можно не думать.
Вот,
Нужно понимать, что исполняется на сервере, а что на клиентской машине. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Пробую без кукисов. Мне надо чтоб при загрузке каждой страницы проверялся ID карты.
Я думал сделать так: 1) в событии onLoad страницы index.htm читаю ID; 2) прочитав, отправляю ID на CGI-скрипт POST-запросом (document.frmCardId.submit();) (frmCardId - форма с хидн полями); проверив данные на корректность, скрипт делает переадресацию на index.htm (document.location.href("http://127.0.0.1/index.htm")); 3) происходит событие onLoad страницы и все начинается с 1-ого пункта; 4) впадаем в бесконечный цикл (постоянная отправка, передача); Хелп плиз!!!! Толкните на правильное решение пж..... Это сообщение отредактировал(а) Alca - 3.10.2008, 17:19 |
|||
|
||||
| Nigel |
|
||||
|
познаю мир ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 20.11.2007 Репутация: нет Всего: 19 |
Тогда попробуйте без перезагрузки страницы. Копайте в сторону ajax. На onload вешаете, к примеру функцию отправки данных. Если все ок, то возвращаете статус "пройден". Что-то наподобии:
Ну, а в скрипте проверки, как наверно догадались
|
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Nigel, Спасибо за код, помог для IE!
А если в браузере (Opera 9.52) выполнение скриптов отключено, то скрипты просто игнорируются и содержимое страницы отображается полностью! А мне надо что б страница вообще не грузилась. AJAX курит в сторонке... Это сообщение отредактировал(а) Alca - 10.10.2008, 17:30 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Пробую с куками:
Каким образом сервер получает куки? И что подразумевается под словом "сервер"? Мой CGI-шный скрипт? |
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Может по протоколу http? ;-) Скрипт видит их в массиве $_COOKIE
Ну да... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| unicross |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 422 Регистрация: 15.6.2008 Репутация: 6 Всего: 53 |
Зачем? Думаю надо копать не в сторону AJAX и JavaScript (их можно отключить в браузере), а изучить механизм сессий в PHP или Perl. Например, скачав этот файл. Я не предлагаю перейти на эти языки с С. Просто технология сессий будет такой же: 1. Считываем значение смарткарты и отправляем методом POST (!!!) 2. На сервере пароль проверяется и если он в порядке, то: - генерируется уникальный идентификатор - создается файл на сервере с названием идентификатора - в этот файл записывается: - номер смарт карты - IP адрес клиента - браузер пользователя - дата создания и т.п. (Получить значения можно через переменные окружения) - на компьютер пользователя устанавливается куки с идентификатором (! не с номером смарткарты !) - если прием куки запрещен в браузере, то идентификатор следует прикрепить ко всем ссылкам 3. При повторном заходе: - считывается идентификатор из куки - сравниваются все значения записанные в файле на сервере - если значения совпадают, то предоставляем доступ - если время истекло или не совпадает хотя бы один параметр, то удаляем - файл на сервере - устанавливаем просроченный куки - считываем заново значение смарткарты Для надежности все через протокол https |
|||
|
||||
| Alca |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Спасибо за совет и за ссылку, буду читать
Каким образом CGI-шный скрипт увидит куки при посещении страниц (я же к ниму не обращаюсь)? Мне что к каждой ссылке добавлять запрос к скрипту, чтобы проверялись куки?
Ну там про сессии написано (Модуль CGI::Session). Как я их прикручу к Си-шному коду?
Можно какой-то примерчик привести? Мне не ясно как реализовать проверку идентификатора, каждый раз когда пользователь запрашивает страницу с сервера. Это сообщение отредактировал(а) Alca - 13.10.2008, 16:58 |
||||||
|
|||||||
| Nigel |
|
||||||
|
познаю мир ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 20.11.2007 Репутация: нет Всего: 19 |
Тогда пишем просто
Сама страница при загрузке сделает запрос на проверку, если прошел, то посылаешь запрос (или можешь сразу данные получить) на получение контента при помощи того же аякса, предварительно записав данные об успешной аутентификации в куку или сессию.
|
||||||
|
|||||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Каким образом (программно) я могу прикрепить идентификатор ко всем ссылкам? Это сообщение отредактировал(а) Alca - 3.11.2008, 14:08 |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |