2013-04-29 142 views
0

我在我的網站上有一些簡單的腳本,允許用戶完成像 計算日期差異,做數學計算等任務。該網站大約95% 純html(不生成php),除一些jquery/ajax將用戶輸入 發佈到服務器端來執行計算。 Ajax代碼如下:php安全和ajax請求

$.ajax({ 
    type: "POST", 
    url: "script/calc.php", 
    data: { userval:val}, 
    success: function(response){ 
    //display response 
    } 
}); 

當用戶輸入值/應該是在PHP 文件「calc.php」的帖子變量之前的數字我想補充(INT),即使在安全方面我不認爲它可以帶來任何問題。

過濾HTTP_REFERER的

即時通訊思想,所以PHP文件只得到從我的網站 (以避免任何濫用)的要求,但我讀過,只在HTTP_REFERER計數不是最終 把戲,因爲它依賴於用戶的瀏覽器有時它可能是空的。在另一個 手中,我知道默認情況下ajax將不允許發佈到另一個域,但是也存在一個針對 的攻擊。

我不是一個硬派的安全人員,我知道一些基本知識,所以有什麼你們可以建議我嗎?在這種情況下可能會出現什麼問題。請注意,我不使用任何 數據庫,只有一個php文件,它只是進行一些計算,沒有其他任何東西(沒有任何 像訪問任何目錄,文件上傳或類似的東西)。

還有什麼我應該認真考慮的,防止服務器濫用,xss攻擊或者是類似的嗎?

編輯:所以基本上calc.php具有像這樣的結構(非常簡單)

//期待的整數 $ userval =(int)的$ _POST [ 'userval'];

$ total_sum =($ userval * 15)*(150 *($ userval-2));

echo $ total_sum; 未設置($ total_sum);

// //結束

+0

大部分安全問題歸結爲消毒用戶輸入數據。大多數馬褲是由於缺乏。 – 2013-04-29 20:57:05

+0

好,爲了告訴你腳本/ calc.php是否有問題,我們需要查看源代碼(或至少它的一大塊)。 – Blender 2013-04-29 20:58:07

回答

0
  1. AJAX使用JavaScript其中有SOP(SAME淵源考政策),瞭解它http://en.wikipedia.org/wiki/Same_origin_policy

  2. 檢查你有什麼樣的輸入。如果你期望的數字檢查他們在PHP和鑄(INT)或INTVAL()

  3. 輸入數據需要什麼?如果你不把任何東西放到數據庫中,你不會改變你的文件,你用什麼輸入?

  4. 如果您有字符串並驗證它們,您可以隨時使用正則表達式,並且您應該根據要存儲它們的位置將它們轉義出來。但數字使事情變得更容易。

  5. 您提供的腳本是保存。

  6. 好的做法是記錄所有可疑的嘗試,如果有太多的,你應該阻止用戶。

+0

你好,謝謝你的回答。所以正如我所提到的,大部分腳本都是計算器。 PHP預期一個或兩個值,進行一些計算,然後輸出結果並將其發佈回去:) – inrob 2013-04-29 21:02:56

+0

intval(),is_numeric(),casting - 所有你需要的:) – Robert 2013-04-29 21:04:26

+0

另外,如果我可能會問一個離題問題,這不是一個真正的PHP的核心任務,我會有任何服務器負載的問題,考慮到一個案例,6k用戶將同時使用我的網站,沒有數據庫,所以回聲做一些乘法/添加和呼應結果就是php必須做的一切。 – inrob 2013-04-29 21:08:43