如果我想在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";
}
?>
我知道还有其他一些想法,比如每次我生成新密钥以将其存储在文本文件或数据库表...等等,这是好主意但我会在查看页面时生成它,这样有人可以赚取数十亿刷新网站:(
我正在考虑数学方程!关于这个想法的任何帮助〜非常感谢
答案 0 :(得分:1)
您可以使用hasing / encrypting方法生成您正在讨论的密钥。 (例如md5)。
请注意,为了在大多数网络服务中使用API,您需要拥有一个帐户, 这些服务与帐户的密钥相匹配。
所以基本上你有一个每个帐户的密钥(不是每个操作或刷新), 将另一个字段添加到名为“api_key”的api成员表中,您就可以开始了。
关于您的问题,您还可以添加其他字段,例如“site_url”,
你的api.php文件将检查request
的“来源”。
如果一个帐户存在请求的KEY和SOURCE,它将执行它需要做的事情,否则die()
或类似的事情。
答案 1 :(得分:1)
如果密钥不是用户唯一的,那么按任何模式生成密钥只是通过默默无闻的安全性。如果有人已经在向您的API发送垃圾邮件,那么逻辑将要求他们观察到您的应用程序使用的URL,并且他们已经盲目(或有意)地调用它们。如果您附加了一个非唯一模式生成的密钥,那么观察者将只是窥探该URL并将其垃圾邮件,除非密钥通过服务器端,在这种情况下任何密钥都可以执行。
底线是您想要阻止使用真实身份验证方法的垃圾邮件。