我想创建一个安全的REST API
例如,如果我看到谷歌API,则基于域生成API KEY.
从这里我有两个问题:
首先,使用单向散列是真/右吗?如果是,如果有人知道散列方法和域,那么他可以生成api密钥并使用它.以及我可以使用的哈希方法/功能?
第二个是,如果客户端如何制作桌面应用程序,他如何生成从桌面访问的API KEY,现在是一个拥有域URL的网站.我的意思是,他们可以生成api密钥,因为没有网址.
有什么好方法吗?,如何创建安全的api以及如何创建api密钥?
顺便说一句,我正在使用PHP
好的,如果您有一个存储 API 密钥和使用它们的客户端的数据库表,您将为所有客户端构建唯一的密钥。您可以轻松地随机化字符,也可以选择对它们进行散列并将其存储为密钥。
例如。
$length = 16; // 16 Chars long
$key = "";
for ($i=1;$i<=$length;$i++) {
// Alphabetical range
$alph_from = 65;
$alph_to = 90;
// Numeric
$num_from = 48;
$num_to = 57;
// Add a random num/alpha character
$chr = rand(0,1)?(chr(rand($alph_from,$alph_to))):(chr(rand($num_from,$num_to)));
if (rand(0,1)) $chr = strtolower($chr);
$key.=$chr;
}
Run Code Online (Sandbox Code Playgroud)
如果你想对此进行散列,可以使用 MD5 或 SHA1,但你需要在数据库中进行反向比较,例如。
SELECT * FROM api_keys where MD5(key) = INPUT
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助
| 归档时间: |
|
| 查看次数: |
13205 次 |
| 最近记录: |