2011-12-03 70 views
32

我有一個網站,允許用戶查看他們的統計數據(文件數載,他們有多少個文件,配額,訪問等類型...)API安全實現PHP

我創建一個部分我現場:api.domain.com

這可以通過捲曲或web瀏覽器,因爲我回一個JSON對象或XML訪問(取決於用戶首選項)

我的問題是:我應該限制使用用戶/通行證進行訪問還是應該創建用戶文件的散列?

例如:

場景1:

用戶創建一個PHP捲曲發送用戶,並通過郵寄或捲曲AUTH傳遞和獲取的結果,分析它,等...

對我來說這是安全的,但用戶如果他們改變他們的傳球,以保持他的劇本

方案2

用戶訪問像文件:api.domain.com/j355HGssgf3HESAjh45jusf4325GSj5hbsHhdh5HGHFS3732he4548475wbe3447nSNe5XfgjhGJ,然後訪問數據

這一個,沒有什麼保持

+0

+1很好的問題! –

回答

40

這裏是我的想法這一點。

如果您向頁面發出請求時返回未找到的頁面或錯誤消息(具有良好的200 OK狀態),則可能會向機器人或可信任的人員發送關於他們可以獲得的內容的線索一次又一次嘗試......

另一方面,如果您發送訪問被拒絕(如401)或更好的500錯誤代碼來模擬服務器錯誤,這些機器人或可信任的人可能會去爲好。

在這種情況下,我會說用戶/密碼方法更安全一些。

現在,當你檢查你的郵件時,你會信任簡單地輸入一個大字符串(如情況2)嗎?或您的銀行賬戶信息?

37

如果是我,我會給每個帳戶創建一個唯一的API密鑰的能力,

api.domain.com/?key=<API.KEY> 

更多的安全措施,你可以把它僅接受通過郵寄方式與API密鑰連接。如果通過get聯絡,然後顯示一個錯誤等

然後,如果他們改變通/用戶名也不會影響他們的API密鑰

+0

但是如果有人偷走了您的api密鑰呢?我正在搜索關於這個參數的一些信息,因爲我有2個服務器,並且我想通過POST交流一些合理的信息。但我不明白,我可以使用API​​來檢索信息,但如果有人嗅到呼叫,可以使用api密鑰檢索合理的信息。 – Kreker

+1

如果它是敏感信息,我將使用ssl並加密數據,解密另一端。如果你知道一個API密鑰已被盜,重新生成一個新的:) –