随机密钥生成器,有效性检查

时间:2012-02-25 16:20:58

标签: php

如果我想在API等网站上添加一个选项,该怎么办?

当有人致电my.site.dot.com/api.php?id=name时,它会将name添加到我的数据库

但是我收到了很多垃圾邮件,所以我一直在考虑使用密钥!

所以就像my.site.dot.com/api.php?id=name&key=MMSDJJSHHHAG 如果密钥正确则为echo "passed";,如果错误则为echo "stopped";

现在我的问题 我想要任何能够生成字母或数字随机键的函数。

但最重要的是它必须也能够知道它的键为什么!当有人致电my.site.dot.com/api.php?id=name&key=MMSDJJSHHHAG时,它会知道MMSDJJSHHHAG是有效密钥。

my.site.dot.com/api.php?id=name&key=MMSDJJSHHHAG

<?PHP
echo $id; //name
echo $key; //MMSDJJSHHHAG

if ( key is valid ) {
echo "passed";
} else {
echo "stopped";
}
?>

我知道还有其他一些想法,比如每次我生成新密钥以将其存储在文本文件或数据库表...等等,这是好主意但我会在查看页面时生成它,这样有人可以赚取数十亿刷新网站:(

我正在考虑数学方程!关于这个想法的任何帮助〜非常感谢

2 个答案:

答案 0 :(得分:1)

您可以使用hasing / encrypting方法生成您正在讨论的密钥。 (例如md5)。

请注意,为了在大多数网络服务中使用API​​,您需要拥有一个帐户, 这些服务与帐户的密钥相匹配。

所以基本上你有一个每个帐户的密钥(不是每个操作或刷新), 将另一个字段添加到名为“api_key”的api成员表中,您就可以开始了。

关于您的问题,您还可以添加其他字段,例如“site_url”, 你的api.php文件将检查request的“来源”。 如果一个帐户存在请求的KEY和SOURCE,它将执行它需要做的事情,否则die()或类似的事情。

答案 1 :(得分:1)

如果密钥不是用户唯一的,那么按任何模式生成密钥只是通过默默无闻的安全性。如果有人已经在向您的API发送垃圾邮件,那么逻辑将要求他们观察到您的应用程序使用的URL,并且他们已经盲目(或有意)地调用它们。如果您附加了一个非唯一模式生成的密钥,那么观察者将只是窥探该URL并将其垃圾邮件,除非密钥通过服务器端,在这种情况下任何密钥都可以执行。

底线是您想要阻止使用真实身份验证方法的垃圾邮件。