从客户端捕获用户签名-如何克服安全性问题?

问题描述 投票:0回答:1

我有一个表单(由reactJS制造),我需要询问用户签名。据我所知,所有解决方案都在浏览器上中继,以产生本质上是base64中的文件。这对我来说是一个安全问题,因为任何人都可以在客户端提供自己的文件,而不是生成可能导致病毒等上传的文件。我没有选择通过防病毒或类似的其他解决方案来传递它。有没有办法在服务器端对其进行验证?或一些完全不同的方法吗?

谢谢

javascript security html5-canvas
1个回答
0
投票

[您要在不上传文件本身的情况下要求文件验证服务器端,这从字面上看实际上是不可能的,但是可以想到一些创造性的方法,例如使用一些相关的js库通过SHA 256验证base64编码的文件客户端像js-sha256

  1. 客户端:名为signature.sig的用户签名文件,内容如下:SignatureFile1234567890
  2. 客户端:该文件的base64编码:U2lnbmF0dXJlRmlsZTEyMzQ1Njc4OTA=
  3. 客户端:base64以上字符串的sha256(使用js-sha256生成):2bdb56a39b4ea7f5831740e0d0b6d2b13a462e4ed5c9145594a6635e76562010
  4. 服务器端:将存储在服务器上的签名文件的sha256哈希值发送给客户端
  5. 客户端:验证两个哈希

Ofc,这是暴露给库的特定漏洞和选择的哈希算法冲突的完整性验证,您将在可用的客户端进行签名的哈希。

© www.soinside.com 2019 - 2024. All rights reserved.