2014-10-11 162 views
1

我正在開發一個Web應用程序,其中已經開發了各種模塊和腳本。現在隨着各種PHP腳本和JavaScript的使用,應用程序按預期工作。PHP代碼執行並防止未經授權的外部訪問執行

我願意阻止未經授權執行PHP腳本。我的意思是應用程序有JavaScript,據此Post參數被張貼爲變量是用JavaScript編寫的,因此任何人都可以查看傳遞值到php腳本的細節。另外,我不能繞過這樣的行爲,因爲它會對數據庫的記錄進行一些必要的數據操作,添加,修改和刪除操作。

如果有不良意圖的人閱讀了javascript並通過POST參數向PHP腳本發送了類似的參數,Web應用程序將無法識別請求是來自授權用戶還是來自未授權用戶。

假設,如果在Web應用程序中的一些操作通過jQuery做客戶的缺失與AJAX,它會像

 var request = $.ajax({ 
      url: "phpscript.php", 
      type: "POST", 
      data: {DataInp: 'CustomerNo', Action: 'delete'} 
     }); 

     request.done(function(msg) { 
      SRes = msg; 
     }); 

     request.fail(function(jqXHR, textStatus) { 
      SRes = false; 
      alert("Request failed: " + textStatus); 
     }); 
     return SRes; 

我使用其中包含的信息和真實的驗證某些登錄會話變量JavaScript的地方寫,我擔心可能發生的這種危險。

此外,如果一些機構使用以下

<img src="http://www.dummy-application.com/delete_record.php?id=123" />

現在要求用戶打開該網頁。現在,由於用戶登錄到應用程序中,URL將被觸發,腳本將採取任何必要的操作。

所以基本上黑客已經提出了技術上有效但未經授權的請求。所以從技術上說,這裏的問題是服務器無法識別用戶是否願意調用url。因此需要有一個機制來解決這個問題。

我想要的是一個簡單的方法來驗證或確定是否真實或從做假如此重要的任務。所以我想要防止黑客誰可以發送欺詐請求以有效的方式到PHP腳本

如果任何人有解決方案,這樣的行動可以阻止,我尋求幫助和建議,如何實施它。

由於英語不是我們的主要語言,我很抱歉我的英語水平不高。但是我請所有人都請在這件事上引導我。

回答

0

我想你必須使用令牌。簡而言之,當一個授權用戶請求一個頁面時,您還會發送一個新生成的令牌(該頁面有一個到期時間)。收到請求時,檢查是否發佈了令牌並且是否仍然是有效令牌,如果是,則執行該腳本。

0

您可以將驗證和授權圖層添加到您的腳本或應用程序。

認證:用戶對系統是已知的。誰是用戶?

授權:允許用戶執行某個操作。用戶X是否有權執行操作Y?

您可以通過添加「令牌」或「時間窗口」來改善這一點。

例如,認證超時,15分鐘後。功能稱爲:自動註銷。

另一種策略是用「代幣」或「時間窗口」來調整你的表格。

例如,執行操作的權限僅在請求表單後2分鐘內有效。您可能會將時間簽名添加到會話和表單中。

或者,如果發送了正確的授權令牌,則執行操作的權限纔有效。 只有經過身份驗證的用戶請求表單時,纔會插入此身份驗證令牌。 如果用戶(a)已通過身份驗證並且(b)表單標記正確,則表單僅被處理。

令牌驗證相當普遍,但您有很多選擇來添加安全功能。

當談到AJAX請求時:通常通過標頭傳遞令牌。 贊,X-Requested-With: XMLHttpRequest + X-MyApplication-AuthToken: <token>

周圍有很多PHP庫。不要重新發明輪子。尤其不是,在安全性方面,邏輯錯誤可能會給應用程序帶來大的漏洞。使用擁有大量用戶或常用框架的庫,該庫提供可靠的身份驗證和授權助手。

此外,您也可以嘗試以保護隨機URL服務器通過檢查你的日誌和阻止壞機器人和爬蟲訪問。