我有一个 API 可以将 url 吐出到我网络上的重定向页面。网址看起来像这样:
http://mydomain.com/offers.php?country=US&offerID=5555
还有一些其他参数,但这就是它的要点。问题是用户滥用它并使用机器人创建自己的点击。我想创建一个密码系统,强制用户使用 API 中的链接,以免被滥用。
像这样的东西:
api.php
<?php
$random_number=mt_rand(1,100);
$url="http://mydomain.com/offers.php?country=US&offerID=5555&key=".$random_number;
echo $url;
?>
报价.php
<?php
$key=$_GET['key'];
if($key<1 || $key>100)
die("Invalid key!");
?>
这显然是一个非常愚蠢的解决方案,因为它只使用一个随机数......但希望你能看到我想要完成的事情。
我的想法是按小时加密日期字符串并使用静态隐藏密钥对其进行加密。这将使密钥每小时更改一次,并且对于欺诈者来说将更加困难。唯一的问题是如果有人在 9:59 从 API 获取 url,它将在 10:00 过期,这太短了。
做这个的最好方式是什么?(理想的)关键应该是......
- 动态的 - 它应该经常变化。
- 轻量级 - 不能仅仅检查密钥就花费大量资源。
- 很难破解/模拟。
你有什么建议?