嗨我有一個文件更新數據庫。我使用它作爲一個cron作業,但它也可以工作,如果有人像這樣訪問它:http://myweb.com/files/file.php如何限制用戶訪問Web服務器上的文件?
而且我擔心用戶可以訪問它並混淆數據庫。有沒有辦法將它從用戶隱藏,但保持它,所以我可以編輯它並且cron作業可以執行它?
嗨我有一個文件更新數據庫。我使用它作爲一個cron作業,但它也可以工作,如果有人像這樣訪問它:http://myweb.com/files/file.php如何限制用戶訪問Web服務器上的文件?
而且我擔心用戶可以訪問它並混淆數據庫。有沒有辦法將它從用戶隱藏,但保持它,所以我可以編輯它並且cron作業可以執行它?
您應該將其保存在無法訪問的目錄中。如果您想將它保留在當前位置,那麼在代碼中,您可以添加一個支票以查看它是從瀏覽器還是爬網程序(使用用戶代理,引用等)調用的,並且是從瀏覽器調用的還是由抓取工具顯示錯誤消息,否則讓它執行。
有幾個技巧可以幫助你。
您可以檢查REMOTE_IP。如果它不是localhost,就死。
您可以驗證是否傳遞了特殊的「祕密」參數。像http://myweb.com/files/file.php?access_key=6rNPY6PhXPDf一樣。如果它不存在或無效,則死亡。
將這個腳本的文件夾中無法通過網絡訪問(即您的www根外)
你如何解決這取決於你的託管環境,但如果你需要http訪問並使用Apache Web服務器,則可以在.htaccess文件中配置訪問權限。如果您使用IIS,請在IIS管理器中配置文件權限並配置訪問權限。順便說一下,他最好的解決方案和最安全的方法是讓文件遠離公共區域,並直接從cron作業調用文件。
所以說我的所有網站文件都位於/ root /目錄下,所以我應該把這個文件放在它的外面嗎? – Ilja
是的。如果您的Web可訪問目錄是/ root /,然後在同一級別創建一個目錄(例如/ cron /)並將您的cron文件放入其中。所以它不能通過網絡訪問。 – Virendra
@SergeiTulentsev不,我的意思是如果它被瀏覽器或爬蟲調用,顯示錯誤消息。更新解決方案以反映這一點。 – Virendra