2010-07-16 44 views
2

在我的網站上有這個PHP腳本,我不希望人們只需在瀏覽器中輸入其名稱即可運行。如何限制/授權訪問PHP腳本?

理想情況下,我希望這個腳本只能由註冊用戶運行,並且只能從Windows應用程序(我將不得不提供)運行。這可以做到嗎?

或者,我該如何保護此腳本,使其只能從特定頁面或腳本中調用?

另外我怎樣才能隱藏地址欄上出現的確切URI?

謝謝!

回答

4

如果您爲您的網絡服務器運行Apache,您可以使用用戶名/密碼組合使用.htaccess來保護它。如果您的服務器尚未配置爲允許.htaccess,則需要一些配置。 Here are the Apache docs

如果您需要根據應用特定因素身份驗證,你可以在你的腳本一樣

<?php 
    if(!$user->isLoggedIn()) { 
    // do 404 
    header('HTTP/1.0 404 Not Found'); 
    } 

上面放的東西你有一個關於你將如何實現isLoggedIn問題?

您也可以使用mod_rewrite來重寫URI,這些指令也可以在.htaccess之內。 mod_rewrite可以透明地重寫傳入請求(從瀏覽器的角度來看),因此可以將/foo/bar的請求翻譯爲secret_script.php/foo/barDocs for mod_rewrite

但是,如果您決定實施此操作,我會敦促您不要僅僅依靠您的腳本名稱難以確保您的應用程序的安全。至少,使用.htaccess以及一些每用戶身份驗證,並考慮讓應用程序對用戶進行身份驗證。

2

正如Jesse所說,可以將您的腳本限制爲登錄用戶。這方面已經有很多問題了。搜索PHP authentication

但是,它是而不是可能將其限制爲單個應用程序。使用像Wireshark這樣的程序來查看程序如何登錄併發出請求非常簡單。此時,他們可以手動或在自己的應用程序中重現其行爲。

+0

借調,thirded和fourthed一個文件夾上.htaccess訪問。 – 2010-07-16 05:25:00

+0

您可以在各個階段使用各種級別的加密和請求籤名,以確保只有擁有某個祕密的客戶端才能發出請求。從那裏取決於客戶端運行的環境。如果所有部分都得到妥善保護,欺騙請求可能被顛覆,或者至少變得非常不切實際。儘管如此,這還是很多的。 :) – deceze 2010-07-16 05:36:04

+1

在理論和相當荒謬的情況下:)我們已經開始在這裏,你仍然必須考慮到你的祕密將被存儲在一臺不受你控制的機器上(用戶的)。 – 2010-07-16 05:38:13

2

您可以通過各種不同的方法來保護腳本。所有人都有優點和缺點,並且很可能您的情況的正確答案將是幾個的組合。

像上面提到的那樣,您可以用Apache鎖定賬戶......這是一個好的開始。同樣,你也可以構建一個強大的'salt-ed'安全系統,例如:http://www.devarticles.com/c/a/JavaScript/Building-a-CHAP-Login-System-An-ObjectOriented-Approach/如果你也使用SSL,那麼你基本上會讓自己像銀行在他們的網站上使用安全一樣 - 並不完美,但肯定不容易打破成。

但也有其他的想法可以考慮。將您的腳本放在通過直接URI無法訪問的類文件中,然後通過中間視圖腳本調用各種功能。不完美,但它確實限制了某人可以直接訪問該文件的方式。考慮通過一個簡單的get來爲URL添加一個「限定符」 - 讓腳本檢查限定符或失敗....再次,這不是一個好的解決方案,而是一個額外的層來勸阻壞人。如果您可以控制誰正在訪問(確切知道哪些網絡),甚至可以限制IP或允許訪問文件的http引用程序。考慮設置和檢查cookie,並且明確到期。不要忘記設置你的機器人文件,這樣瀏覽器就不會偶然發現你想要保護的腳本。

一段時間,我的公司做了一個會員應用程序,在前端使用Delphi,在後端與php和MySql交談......由於我們都是Web應用程序開發人員,所以它有點笨重。如果你非常喜歡,也許Adobe Flex可能是一個選擇。但最終,你必須打開應用程序可以與之交談的一扇門,如果有人確定了,理論上他們可以挖掘你的應用程序以找到憑據並使用它們即時訪問該網站。如果你正在使用桌面應用程序路線,可能是應該考慮讓應用程序避免與中間腳本進行交談並在本地計算機上完成其工作,並溝通遠程數據庫。

0

可以使用否認與PHP認證將重定向到那些PHP文件