Взаимодействие между типом ввода HTML = файл и Java-апплет - PullRequest
1 голос
/ 09 августа 2011

В настоящее время я занимаюсь разработкой веб-приложения, в котором я использую цифровую подпись форм с использованием карт гражданина Португалии и java-апплетов.

С обычными формами все шло гладко, пока я не столкнулся с проблемойвходные данные типа файла.Приложение поддерживает вложения, поэтому я создал отдельный менеджер вложений, в котором пользователь может отправлять или просматривать вложения.При отправке необходимо иметь два способа сделать это: обычная загрузка или подпись файла, а затем загрузка.

Моя первая идея состояла в том, чтобы позволить пользователю выбрать файл в поле ввода type = "file" иесли бы он / она нажал «подписать и загрузить», он запустил бы Java-апплет, чтобы сгенерировать подпись, которая будет помещена в скрытый ввод.Проблема заключается в ограничениях безопасности html, что делает выбранное значение файла недоступным из javascript (который также запрещает доступ к java-апплету) в некоторых браузерах.

Я также думал о вычислении хэша файла, который будетподписать на стороне сервера, а затем подписать его на стороне клиента, но это также не вариант.Определение хеша и его подписи должно быть на стороне клиента (юридические причины).

Другая идея состояла в том, чтобы использовать что-то вроде JUpload, но он не поддерживает некоторые случаи, когда соединение осуществляется по каналу SSL ссертификат клиента (который может произойти в зависимости от того, как был выполнен вход в веб-приложение).

Наконец, у меня даже появилась эта абсурдная идея открыть файл в апплете, подписать его и затем сохранить его на скрытом входев base64.Очевидно, это создает огромное ограничение на размер файла.

Итак, мой вопрос: каков наилучший подход к этой проблеме?Есть предложения?

Заранее спасибо;)

1 Ответ

0 голосов
/ 09 августа 2011

Очевидно, что невозможно получить доступ к файлу, выбранному в браузере из JS или Flash.Таким образом, единственный способ - использовать доверенный Java-апплет.Хотя это не элегантный способ.Кроме того, если у ваших пользователей есть клиентские сертификаты - зачем подписывать их, когда канал связи зашифрован ??

...