我们已经构建了一个可以嵌入第三方网页的javascript模块。初始化此客户端模块时,它会通过跨站点请求在我们的Web应用程序中执行事务。
该交易包括外部uuid,电子邮件和一些其他元属性。此消息使用我们合作伙伴的私有API密钥与HMAC sha256摘要签名。
Ruby示例:
data = {
uuid: "ABCAFAFDS",
email: "email@gmail.com",
meta: {}
}
private_key = "Qd9fe0y2ezqfae4Qj6At"
signature = OpenSSL::HMAC.hexdigest(
OpenSSL::Digest.new("sha256"),
private_key,
data.to_json
)
在第三方网页中,然后使用签名和数据初始化javascript客户端:
new Client(signature, data).execute()
;
最初,我们的计划是允许客户在我们的系统中创建部分/不完整的事务,然后通过我们的REST API请求后续的后端请求来确认/完成事务。但是,假设我们可以保护前端,那么删除后端确认要求将是优先的。
我们能否以这种方式使用签名邮件合理保护客户端代码?如果数据和签名消息在客户端可用,那么如果长度超过,那么糟糕的演员有多么难以强制使用API私钥长度?
答案 0 :(得分:2)
如今,大多数互联网流量都在客户端上签署了令牌。你所有的Gmail登录,facebook登录等都是这样做的,所以它是相当标准的。我建议使用现有标准(和第三方库),而不是使用自己的令牌。这将让您利用其他人在该领域的专业知识。
JWT(json web token)是常用的,有许多库可供JWT使用。有关详细信息,请参阅https://jwt.io。