2014-04-10 88 views
0

我目前正在開發一組PHP腳本,充當專用API,僅供某些授權機器使用。 腳本直接與MySQL數據庫接口,所以我必須確保沒有公共的未經授權的訪問(如使腳本成功運行)是可能的。保護PHP腳本免受未經授權的訪問

我一直在考慮不同的選擇,但我決定來這裏的一些不同的意見。

我在用nginx運行。

API由C#程序(使用WebClient)和其他一些服務器(可能會更改IP)在外部使用,所以我避免了基於IP的方法。

我正在考慮通過「鑰匙」參數通過後,檢查是否有匹配

if($_POST['key'] == 'key') 

可能有更好的替代品,你做什麼覺得?

+2

HTTP Basic Auth在語義上比'key' POST參數更正確。還可以使用HTTPS來防止MITM攻擊。最後,如果惡意方可以訪問C#應用程序,則所有投注都將關閉,因爲祕密可以簡單地進行反向設計。 – univerio

回答

0

我通常使用你寫的關鍵方法,但我絕對相信深度防禦方法。所以我會添加一些服務器級保護,檢查nginx訪問控制方法。也許是這樣的:

否認:所有 允許IP:127.0.0.1

+0

http://www.cyberciti.biz/faq/linux-unix-nginx-access-control-howto/ – morissette

+0

'拒絕:所有允許IP:127.0.0.1' ---我會關閉整個服務器。 – zerkms

+0

毫無疑問,您會將任何IP訪問服務器的IP列入白名單。你甚至可以指定特定的文件w/nginx來應用這些規則。 – morissette

0

我會使用一個公共/私有密鑰認證或使用用戶名和密碼/ API密鑰爲每個客戶端。只有其他選項IMO會使用LDAP或其他目錄認證,這在大多數情況下可能不理想。

相關問題