Статус: Новичок
Группы: Участники
Зарегистрирован: 29.07.2019(UTC) Сообщений: 8 Откуда: Владивосток Сказал(а) «Спасибо»: 1 раз
|
Добрый день, задача подписать плагином форму, содержащую несколько полей и несколько файлов, какой "good practice" для этого посоветуете? Как отдельно подписать строку или файл, знаю, а вот как всю форму целиком, чтобы и проверять подпись было удобно. Думал сформировать в браузере xml содержащую данные полей формы и отделенные подписи файлов, но думаю есть решение лучше? Посоветуйте пожалуйста как лучше? Отредактировано пользователем 30 июля 2019 г. 16:46:34(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
Здравствуйте. Формализовать, подписать поля, т.е. в виде xml. Файлы отдельно. Но если требуется, можно и включить файлы, в base64. Зависит от размеров, требований к производительности.
Опять же, описать проверку, софт нужен для извлечения файлов...
Пример: эдо по приказам фнс, там есть внутри xml элемент, типа эцп полученного файла, внутри содержится файл. Итоговый xml подписан отсоединенной эп. |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
lunix2 оставлено 31.07.2019(UTC)
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
Еще вариант, подписывать дамп тела запроса http. Т.е. на post запрос выдает сервер в base64 дамп (все поля и значения, а также файлы) , его плагином подписать. Опять же, для чего... С ним сложнее будет работать, чем с xml |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.07.2019(UTC) Сообщений: 8 Откуда: Владивосток Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей Писарев Здравствуйте. Формализовать, подписать поля, т.е. в виде xml. Файлы отдельно. Но если требуется, можно и включить файлы, в base64. Зависит от размеров, требований к производительности. Спасибо! То есть из полей формирую XML, подписываю плагином его. Файлы отдельно. Функцию подписи вызову как минимум дважды (xml и файл), для пользователя это будет прозрачно или дважды запросит пин (если он не сохранен)? Встречал еще вариант, собирают json по форме и подписывают его, но тоже думаю процесс верификации это усложняет. P.S. Еще актуальный вопрос, подпись файлов пользователем, когда они на сервере и доступны пользователю по ссылке. Не просить же его перезагружать в форму!? Грузить в форму base64 файла и подписывать его? Отредактировано пользователем 31 июля 2019 г. 4:19:57(UTC)
| Причина: Не указана
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 393 раз в 366 постах
|
Автор: lunix2 P.S. Еще актуальный вопрос, подпись файлов пользователем, когда они на сервере и доступны пользователю по ссылке. Не просить же его перезагружать в форму!? Грузить в форму base64 файла и подписывать его? В этом случае можно грузить в форму хэш+адрес файла и подписывать их. На самом деле, не стоит изобретать велосипед, весь вопрос напрямую предусмотрен стандартом подписи xmldsig: обычно в качестве URI в Reference указывается ссылка на тот же самый документ, но можно указать произвольный адрес ресурса, далее от ресурса считается хэш и записывается в DigestValue, все референсы формируются в SignedInfo и SignedInfo подписывается. В итоге, Вы можете как посчитать хэш от файла по url в интернете, так и хэш от некого текста в xml документе (можете хоть каждое поле отдельно подписать или вложить значения полей в контейнер и подписать контейнер) в рамках одной подписи xmldsig (потребуется один вызов функции подписания, то есть пин-код запрашивать будет один раз, но подпись будет недействительна если хотя бы один файл/текст был изменен). Насчет подписи загружаемых файлов, в смэв видел терминологию MTOM XOP, но в подробности не вникал. По краткому прочтению вроде как ооочень совместимо с формами, то есть для файла из формы указывается дополнительный HTTP заголовок Сontent-ID а в подписанном xml документе "вкладывается" тег xop:Include атрибут href c "cid:"+Content-ID (для подписи конечно указывается и хэш файла), потом и xml документ и файл передаются в одном HTTP запросе разделенные "MIME_boundary" ("MIME_boundary" заменяется на конкретное значение). Насколько понимаю это как вариант позволяет не кодировать файлы в base64 и сократить размер пересылаемых данных. Пример из вики Код:MIME-Version: 1.0
Content-Type: Multipart/Related;boundary=MIME_boundary;
...
--MIME_boundary
Content-Type: application/xop+xml;
...
<soap:Envelope> ...
<soap:Body> ...
<m:photo xmlmime:contentType="image/png">
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include"
href="cid:http://example.org/me.png"/></m:photo>
...
--MIME_boundary
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-ID: <http://example.org/me.png>
// binary octets for png
Сервер соответственно должен принять заголовок Content-ID и сохранить что для такого-то файла из такого-то запроса был указан такой-то Content-ID. Для проверки надо будет проверить одну подпись SignedInfo и сверить все хэши со значениями в SignedInfo. Для уже загруженных файлов соответственно можно прямо указать в теге xop:Include атрибут href на постоянный адрес файла на сервере. Хотя конечно ничего не мешает подписать каждый файл отдельно или в форму грузить уже подписанные пары (файл+файл подписи). Отредактировано пользователем 31 июля 2019 г. 7:36:11(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close