Инструмент на стороне клиента Python (должен работать в браузере), чтобы извлечь значения из файла pfx и подписать его

Инструмент на стороне клиента для извлечения таких значений, как серийный номер общего имени и открытый ключ, из файла pfx, который загружается клиентом, а затем подписывает открытый ключ и отправляет его на сервер.

Я завершил код Python, который будет импортировать модули из библиотеки OpenSSL.Crypto.

Как выполнить то же самое на стороне клиента?.. т.е. операция подписания должна быть сделана на стороне клиента,

В Google я нашел, как Brython, Skulpt, Pyjams помочь в этом.. Но я запутался, чтобы начать.. Есть предложения?

1 ответ

Итак, обо всем по порядку: не обязательно иметь один и тот же код для запуска на стороне сервера и на стороне клиента.

Второе: помните, что никакая аутентификация (или "подписание"), выполняемая на стороне клиента, не может считаться безопасной. В лучшем случае клиентская сторона может позаботиться о тесном связывании подписи с пользовательским интерфейсом, чтобы дать пользователю динамическую обратную связь - но поскольку любые запросы, отправляемые клиентской стороной на сервер, могут быть очень легко исполнены скриптом, аутентификация должна выполняться на стороне сервера. для каждого запроса - например, переменная, говорящая о том, что текущий пользователь прошел аутентификацию, может быть просто отправлена ​​как "True", независимо от фактически известных имен пользователей и паролей.

Третье: несмотря на все это, поскольку существуют эти платформы для использования Python или Python-подобного языка клиентской стороны, действительно возможно иметь некоторые модули в базе кода, которые используются как на стороне клиента, так и на стороне сервера. Из них я больше всего знаком с Brython, который достиг хорошего уровня совместимости с Python 3.x, и у меня действительно есть код совместного использования проекта на стороне клиента и на стороне сервера.

Повторно используемый код должен быть реорганизован, чтобы абстрагировать любые операции ввода-вывода (например, получение пользовательского ввода или получение значений из базы данных), потому что это принципиально разные вещи на стороне сервера и на стороне клиента. Тем не менее, может существовать некоторая основная логика, которая используется обеими сторонами.

Однако сторонние модули Python, такие как Pycrypto, не будут работать на стороне клиента (вы, вероятно, могли бы кодировать вызов типа xmlrpc/jsonrpc, чтобы использовать его на стороне сервера) - и хотя хэш-скрипт Python сейчас не реализован в Brython, проект получил импульс, который Открытие запроса на добавление как минимум тех же кодеков, которые существуют в javascript, может быть выполнено за несколько дней. (запросы об ошибках / функциях могут быть открыты на github.com/brython-dev/brython)

(PS. Я только что, к своему ужасу, обнаружил, что в настоящее время не существует стандартного способа вычисления любого хэша, даже md5, в Javascript без сторонних модулей - который просто подчеркивает утилиты фреймворков, таких как Brython или coffescript, которые могут вызвать пачка функционала в чистом виде)

Другие вопросы по тегам