2017-06-07 13 views
0

我在一個網站上有一個簡單的組件,它執行查詢頁面上產品集羣中的所有prod id,並將它們存儲到jquery中的數組中。然後,我通過AJAX將該數組發送到PHP,作爲POST,最終將對所有ID執行數據庫查詢。保護PHP和AJAX之間的POST請求 - 沒有用戶輸入

我的問題是,我怎麼能保護陣列從AJAX來/ JS文件輸出到在POST PHP文件,對用戶的操作...這意味着我能找到的ID在源代碼,並將其更改爲某個隨機值甚至惡意的東西。

通常在用戶輸入場景中,您可以在PHP中執行實際的轉義字符串或類似功能來覆蓋傳入數據。由於我通過一系列數字值發送數據,因此確保POST請求的最佳方式是什麼?

謝謝

-S

+0

https://stackoverflow.com/questions/37912937/how-to-send-secure-ajax-requests-with-php-and-jquery – clearshot66

+0

如果你認爲這是在的前提是什麼用戶機器可能被篡改,真的沒有太大的事要做。惡意用戶可能很討厭。 – FirstOne

+0

你不能阻止用戶操作,所以你寫你的代碼是有彈性的。如果你的數據存儲是SQL,那麼你通常使用預處理語句和綁定參數來完成這個工作。 –

回答

1

假設,你想從客戶端接收整數值的數組。

如果你寫在原PHP,那麼你的代碼可以是這樣的:用戶輸入的

if (isset($_POST['ids']) && is_array($_POST['ids'])) { 
    $ids = array_map('intval', $_POST['ids']); 
    $ids = array_unique($ids); // Optional. 
    print(implode(', ', $ids)); // Print values. 
} 

樣品:

​​

輸出:

1, 2, 3, 0 

intval需要參數並返回它的整數表示。 malicious_input變成0,在SQL查詢中使用它是安全的。

一些相關鏈接:

  1. PHP Prepared Statements
  2. I have an array of integers, how do I use each one in a mysql query (in php)?
+0

謝謝。這對我有效。 – Sergio