客户端工具,用于从客户端加载的 pfx 文件中提取常用名称序列号和公钥等值,然后对公钥进行签名并发送到服务器。
我已经完成了后端 python 代码,它将从 OpenSSL.Crypto 库中导入模块。
如何在客户端执行相同的操作?...即签名操作应该在客户端完成,
在谷歌中,我发现像 Brython、skulpt、pyjams 这样的帮助.. 但我开始困惑.. 有什么建议吗?
客户端工具,用于从客户端加载的 pfx 文件中提取常用名称序列号和公钥等值,然后对公钥进行签名并发送到服务器。
我已经完成了后端 python 代码,它将从 OpenSSL.Crypto 库中导入模块。
如何在客户端执行相同的操作?...即签名操作应该在客户端完成,
在谷歌中,我发现像 Brython、skulpt、pyjams 这样的帮助.. 但我开始困惑.. 有什么建议吗?
所以,首先要做的事情是:在服务器端和客户端运行相同的代码是不常见的。
第二件事:请注意,在客户端进行的任何身份验证(或“签名”)都不能被视为安全的。客户端最多可以负责将签名与 UI 紧密耦合,以向用户提供动态反馈 - 但由于客户端发送到服务器的任何请求都可以很容易地被脚本模拟,因此必须在服务器端执行身份验证对于每个请求 - 例如,表示当前用户已正确验证的变量可以发送为“True”,而不管实际已知的用户名和密码如何。
第三件事:尽管如此,由于有这些框架用于使用 Python 或类似 Python 的语言客户端,因此确实可以在代码库中包含一些模块,这些模块同时用于客户端和服务器端。其中,我最熟悉的 Brython 已经实现了很好的 Python 3.x 兼容性,而且我确实有一个项目共享代码客户端和服务器端。
当然,重用的代码必须重构以抽象任何 I/O(例如获取用户输入或从数据库中获取值),因为这些在服务器端和客户端是根本不同的东西。尽管如此,一些核心逻辑仍然可以被双方重用。
然而第三方 python 模块,比如 Pycrypto 不能在客户端工作(你可能会编写一个 xmlrpc/jsonrpc 之类的调用来使用它服务器端)——尽管 Python 的 hashlib 现在没有在 Brython 中实现,但该项目有一个动力可以在几天内完成对至少存在于 javascript 中的相同编解码器的功能请求。(错误/功能请求可以在 github.com/brython-dev/brython 打开)
(PS。我刚刚发现,令我沮丧的是,目前没有标准的方法来计算任何哈希值,甚至不是 md5,在没有第三方模块的 Javascript 中 - 这只是强调可以带来 Brython 或 coffescript 等框架的实用程序以干净的方式捆绑的功能)