2011-01-31 78 views
0

我正在使用Ajax進行JQUERY處理。 Data_string被髮送到我的process.php頁面,保存它。如何防止篡改AJAX進程頁面?

問題:現在任何人都可以直接鍵入example.com/process.php來訪問我的進程頁面,或者鍵入example.com/process.php/var1=foo1 & var2 = foo2來模擬表單提交。我如何防止這種情況發生?

另外,在我指定的POST的Ajax代碼中。 POST和GET有什麼區別?

回答

1

雖然Jason LeBrun表示幾乎不可能阻止人們模擬表單提交,但您至少可以停止偶然的嘗試。除了實現Nazariy的建議(如果你真的想要這些建議都容易得到),你也可以在服務器端產生一些獨特的價值(我稱之爲令牌),它將被插入到你的同一頁面中阿賈克斯。然後,Ajax會將此令牌與其他參數一起傳遞給process.php頁面,因此您可以檢查該令牌是否有效。

UPDATE

看到在這個問題上的令牌

anti-CSRF token and Javascript

2

首先通過POST提交您的AJAX表單,並在服務器端確保請求進入同一個域並通過AJAX調用。

我有幾個功能在我的圖書館這個任務

function valid_referer() 
{ 
    if(isset($_SERVER['HTTP_REFERER'])) 
     return parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) == $_SERVER['SERVER_NAME']; 
    else 
     return false; 
} 

function is_ajax() 
{ 
    $key = 'HTTP_X_REQUESTED_WITH'; 

    return isset($_SERVER[$key]) && strtolower($_SERVER[$key]) == 'xmlhttprequest'; 
} 

你可能會讀this post有關職位之間的差異,並得到

0

你不能阻止人們對人工模擬提交表單數據你的網頁。你可以使它變得更加困難,但是你將無法完全防止它。