У меня есть форма (сделанная в reactJS), и мне нужно запросить подпись пользователя. насколько я могу судить, все существующие решения зависят от браузера для создания того, что по сути является файлом в base64. Для меня это создает проблему безопасности, поскольку любой может на стороне клиента предоставить свой собственный файл вместо сгенерированного, что может привести к загрузке вирусов и тому подобного. У меня нет возможности передать его через антивирус или другие подобные решения. Есть ли способ проверить это на стороне сервера? или какой-то совсем другой подход к этому?
Благодарность
1 ответ
Вы запрашиваете серверную часть проверки файла без загрузки самого файла, это на самом деле невозможно буквально, но можно подумать о некоторых творческих подходах к этому, например SHA 256
проверка файла, закодированного в base64, на стороне клиента с использованием некоторой связанной библиотеки js например js-sha256:
- На стороне клиента: файл подписи пользователя с именем signal.sig со следующим содержимым:
SignatureFile1234567890
- На стороне клиента: кодировка base64 этого файла:
U2lnbmF0dXJlRmlsZTEyMzQ1Njc4OTA=
- Клиентская сторона: sha256 приведенной выше строки base64 (сгенерирована с использованием js-sha256):
2bdb56a39b4ea7f5831740e0d0b6d2b13a462e4ed5c9145594a6635e76562010
- На стороне сервера: отправить клиенту хэш sha256 файла подписи, хранящегося на сервере
- Клиентская сторона: проверить оба хэша
Конечно, это проверка целостности, подверженная конкретным уязвимостям библиотеки и выбранным коллизиям алгоритма хеширования, и вы сделаете хэш подписи доступным на стороне клиента.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.