2012-12-27 127 views
0

我的應用程序調用外部PHP文件來檢索信息並將其提交給SQL數據庫。每個請求都可以在我認爲是任何瀏覽器的開發人員面板中看到,並且可以輕鬆地手動重新執行。這是我的理解that trying to detect the "source" of the request is not the right way to go about restricting manual invocation of scripts防止多次手動執行外部PHP腳本

我想要阻止這些腳本重新執行的主要原因是,它們可能會導致用戶給自己比他們賺得更多(UPDATE user_scores SET score = score + x)或將自己返回到以前的狀態多次,因爲他們想要(UPDATE user_scores SET score = x)。

什麼是確保只在一次執行的腳本中進行查詢的經過驗證的真正方法是在第一次執行而不再執行?

+0

第一次後沒有查詢可用?通常這是一組標誌。一旦你檢測到這個標誌爲活動狀態,你想在之後不做任何事情:) – Xnoise

+0

也許是隨機數? http://stackoverflow.com/questions/4145531/how-to-create-and-use-nonces – mtrbean

回答

1

你應該從來沒有依賴於這樣的客戶端控件。你的PHP腳本應該檢查用戶是誰,並在做之前驗證他們應該「得到」他們得到的任何東西。

你正在運行的那個代碼,首先計算得分應該是你的UPDATE代碼是......它永遠不會離開服務器。