在 javascript 算法中使用 MD5 私钥的安全方法?
Secure way of using private MD5 key in javascript algorith?
我想将在线支付与我的网站集成 (html + jquery)。最简单的方法就是在特定 link 上发送表单。其中一个参数是签名。签名是来自字段和私钥的哈希值。问题是我不想在 javascript 代码中公开我的私钥。有什么安全的方法吗?
表单测试代码如下:
http://developers.payu.com/en/restapi.html#creating_new_order_form
和签名生成算法:
http://developers.payu.com/en/restapi.html#references_form_signature
简短的回答是......不。嗯,也许但不是真的。
您无法在 Javascript 中安全地执行整个过程,因为它需要您将密钥加载到用户浏览器中。安全游戏即刻结束。
您可以做的是在某个地方有一个服务器(密钥库)来保存您的私钥并按需加密消息。这将阻止最终用户看到您的私钥,但它只是将问题转移到线下 - 您如何知道发出请求的浏览器是真正的用户而不是恶意用户?如果您只是在展示的任何内容上签名,您也可以完全跳过安全性。如果您无论如何都要有一个服务器,为什么不使用它来为网页提供服务并验证表单数据呢?
所以真的,您需要一些服务器端来验证用户输入,检查它是 sane/untampered 然后签署消息并传递它。
您必须问问自己为什么需要在浏览器中执行此操作...签署消息的全部意义在于证明它来自谁。如果它来自其他人的浏览器,而您对消息一无所知,为什么要将其签名为真实的并且来自您?
我想将在线支付与我的网站集成 (html + jquery)。最简单的方法就是在特定 link 上发送表单。其中一个参数是签名。签名是来自字段和私钥的哈希值。问题是我不想在 javascript 代码中公开我的私钥。有什么安全的方法吗?
表单测试代码如下: http://developers.payu.com/en/restapi.html#creating_new_order_form 和签名生成算法: http://developers.payu.com/en/restapi.html#references_form_signature
简短的回答是......不。嗯,也许但不是真的。
您无法在 Javascript 中安全地执行整个过程,因为它需要您将密钥加载到用户浏览器中。安全游戏即刻结束。
您可以做的是在某个地方有一个服务器(密钥库)来保存您的私钥并按需加密消息。这将阻止最终用户看到您的私钥,但它只是将问题转移到线下 - 您如何知道发出请求的浏览器是真正的用户而不是恶意用户?如果您只是在展示的任何内容上签名,您也可以完全跳过安全性。如果您无论如何都要有一个服务器,为什么不使用它来为网页提供服务并验证表单数据呢?
所以真的,您需要一些服务器端来验证用户输入,检查它是 sane/untampered 然后签署消息并传递它。
您必须问问自己为什么需要在浏览器中执行此操作...签署消息的全部意义在于证明它来自谁。如果它来自其他人的浏览器,而您对消息一无所知,为什么要将其签名为真实的并且来自您?