【发布时间】:2014-01-14 14:32:27
【问题描述】:
我想在 Chrome 扩展程序中提供一些高级功能。我们的想法是,只要用户通过 PayPal 捐赠了一定金额,就可以使用后面的附加功能。
目前,我的策略如下:
1/.用户填写 PayPal 表单。
2/.提交表单时,会生成一个返回 URL,其中包含一些关键参数,例如用户 ID、请求时间、捐赠金额。一切都是通过base64编码的。例如:
var returnURL = 'https://subdomain.main.com/?params=';
// On Form Submission
function SubmitForm(type) {
var paramURL = '?user=' + userID + '&time=' + now + '&type=' + ptype;
// base64 encoding via btoa
$('#donate [name=return]').val( returnURL + btoa(paramURL) );
// Reday to submit form
$('#PayPalForm').submit();
}
3/. Paypal 捐赠完成,用户被重定向到启用 https 的扩展网站的子域。
4/.在我的网站上,一些 PHP 代码会检查引荐来源网址(即用户是否来自 PayPal?),如果引荐来源网址看起来不错,它会解码 base64 字符串并获取参数(id、时间、类型...)。例如:
// Retrieve URL parameters
$paramURL = parse_url(base64_decode($_GET['a']));
parse_str($paramURL['query'], $query);
$id_user = $query['user']; // ID of the user
$time_req = $query['time']; // Time of request/donation
$type_req = $query['type']; // Type of Premium license w.r.t amount donated
5/.在这个阶段,我们的想法是创建一个新的 URL,指向我的 Chrome 扩展的选项页面,其中包含一些现有的和新的参数,其中的密钥用于解密用户安装时默认加密的部分代码扩展。我遇到的第一个问题是我希望找到一种方法来加密 PHP 中的这些参数,并能够在我的扩展程序中用 Javascript 解密它们。
我应该使用 PHP 和 JS 中可用的哪种对称加密/加密方法? AES256?在 JS 方面,我查看了 Crypto-JS 和 SJCL 库。 PHP端,AES加密好像有点tricky...
6/.一旦用户返回扩展程序的选项页面并且 URL 参数被解码+解密,您将采取什么策略来解锁 Javascript 编写的扩展程序中的特定功能,以限制来自用户的作弊和搭便车,知道混淆是一个非常糟糕的选择。
【问题讨论】:
-
@Arian,扩展的主要功能是免费的。只是一些额外的功能需要大量的时间参与,而当前的货币化模型,即捐赠,在激励(imo)方面并不是最优的。我认为奖励系统让我最慷慨的用户能够使用更强大的扩展版本可能是一种有趣的方法。我可能错了:)
-
啊,很好的回应,有道理!
-
你最后做了什么?
标签: javascript php encryption google-chrome-extension