Приветствую. Есть некий веб-сервис, в котором определённые действия пользователя должны быть подтверждены его ЭЦП (используя плагин к браузеру chrome/firefox/opera). Задача стоит в автоматизации части этих действий - в частности нажимания на кнопку "сделать определённое дейтствие" на странице сервиса и последующей кнопки "да" в появившемся окне "подписать данное действие эцп?". Впервые сталкиваюсь с такой задачей, поэтому даже не знаю с какой стороны подходить к решению проблемы. XSS - не вариант. Если писать приложение - то проблема дойти вообще до того момента, когда понадобится автоматизация. Автоматизация браузера через Selenium - тоже проблематично. Разве что через консоль фаербага в фаерфоксе? Что скажете?
Лучше эмулировать не действия нажатия в браузере, а запросы к серверу, однако. Если это бинарный плагин, достать исходный код будет достаточно сложно, т.к. запросы могут отправляться в зашифрованном виде. Попробуйте посмотреть, какие запросы передаются через WireShark и Chares(Настройте перехват SSL), почитайте о механизмах ЭЦП. Если подпись запрашивается только один раз, то не проблема написать небольшой JS скрипт. Адрес сайта в студию.
http://www.cryptopro.ru/products/cades/plugin Эмулировать запросы к серверу - да, проще, но какими средствами? О механизмах ЭЦП много читал, но как оно работает в данном конкретном случае - вопрос. Да, посмотрю при возможности. Пока что вооружался только fiddler'ом. Нет, не один раз, а каждый раз при нужном мне действии. И что с ним потом делать? Попросить администраторов сайта выложить его у себя?
Есть много таких веб - сервисов, запрашивающие ЭЦП. Госсзакупками занимаешься??? Мой совет положи перед собой удостоверение личности и переходи к онлайн регистрации ЭЦП.
реклама с троллингом наполовину. первое - сам сайт не имеет сертификата SSL/TSL, и при подключении к https://www.cryptopro.ru Code: Secure Connection Failed An error occurred during a connection to www.cryptopro.ru. Unrecognized Object Identifier. (Error code: sec_error_unrecognized_oid) The page you are trying to view cannot be shown because the authenticity of the received data could not be verified. второе - Создание и проверка подписи происходят на стороне пользователя. кретинизм. подпись пользователя подписывается сайтом, с аутентификацией и авторизацией crypto base authorities.
Что за параноидальный бред? "подпись пользователя подписывается сайтом"? Пользователь зашифровывает данные при помощи яваскриптовой функции, после чего эти данные вместе с остальными отсылаются в виде пост-запроса на сервер. Вся эта схема видна, достаточно открыть исходный код интересующей страницы. К слову, удалось поковыряться внутри. Даже написал и протестировал небольшой скрипт. Упёрся примерно вот в такой код: selectCert(function(){ var signMessage = "блаблабла, вы уверены и всё такое?"; if (!confirm(signMessage)) exit; // эта строка убирается нафиг var sign = Sign(signMessage, false); // отправка запроса на сервер ); Объясню: selectCert вызывает окошко (фактически — div c нарисованным текстом и кнопками "ok"/"cancel"), в котором надо выбрать нужный сертификат, после чего, если нажато "ок", вызывается коллбек с отправкой данных на сервер. а вот как обойти эту хрень, чтобы отправка данных на сервер не требовала каждый раз нажатия руками на "ok"? Я так понимаю, эта функция — из плагина к браузеру, потому как среди подключённых к странице js–скриптов я её не нашёл.