2012-02-25 136 views
1

,如果我想的選項添加到我的網站像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"; 
} 
?> 

我知道有一些其他的想法就像我每次生成新的密鑰將其存儲在文本文件或數據庫表...等,到時候是很好的想法,但我會生成它在觀看的頁面,以便有人能使得數十億美元刷新制作網站下來:(

我想到的數學方程的!這個想法任何幫助〜非常感謝

回答

1

您可以使用hasing /加密方法生成這個關鍵你說話關於。 (例如md5)。

請注意,爲了在大多數Web服務中使用API​​,您需要擁有一個帳戶, 這些服務將密鑰與帳戶匹配。

所以基本上你有一個關鍵每個帳戶(不是每個動作或刷新), 添加另一個字段到您的api成員的表名爲「api_key」,你準備好去。

關於你的問題,你也可以添加一個字段,比如「SITE_URL」, 你api.php文件將檢查的request的「源」。 如果請求的鍵和SOURCE存在一個帳戶它會做什麼需要做的,否則die()或類似這樣的東西。

+0

感謝,是的,我知道,如果用戶註冊後獲取密鑰並將其每個成員一個關鍵,但我的想法是基於免費的API無需註冊,並與隨機密鑰每次反正瀏覽網頁非常感謝,這將是更好如果我沒有找到辦法做到這一點,我可能會在註冊時回到關鍵位置。 – 2012-02-25 16:39:31

1

如果密鑰不是唯一的用戶,則產生由任何圖案的鍵是簡單地通過隱藏的安全性。如果某人已經在濫用您的API,邏輯會指示他們已經觀察到您的應用程序使用的URL,並且他們已經盲目地(或故意)調用它們。如果將非唯一模式生成的密鑰,那麼觀察者會簡單地窺探該URL和垃圾郵件它,除非關鍵是通過服務器端在這種情況下,任意鍵就可以了。

底線是要阻止你需要使用真實身份驗證方法的垃圾郵件。