2013-05-26 17 views
0

我只是想知道如何在提交數據庫結果之前阻止用戶更改Chrome中的檢查元素上的ID。在我的網站上,我創建了一個像按鈕一樣的按鈕,這個按鈕有自己的ID,例如下面(id ='1')。點擊此按鈕後,我使用ajax在我的數據庫上發送數據,並使用從ajax傳遞的相同ID更新列。但是,如果用戶在提交數據之前在Chrome中的檢查元素上更改此ID,他們可以操縱我的數據庫,而不喜歡id = 1的評論,他們可以喜歡其他評論,這不應該討論。無論如何要防止這種情況發生。如何防止用戶更改Chrome中的檢查元素上的ID

<input type="button" value="Like" id="1"/> 

$('#button').click(function() { 
    var id = $(this).attr('id'); 

    $('like_ajax.php', {id: id}, function(data) { 
     alert('Success'); 
    }); 

}); 
+1

你不能這樣,這就是爲什麼你永遠不會相信服務器端語言 – 2013-05-26 10:25:20

+0

那麼有什麼不同的方式來處理呢? – user2310422

回答

5

唯一的解決方案是檢查服務器端,如果當前的ID是可愛的或不保存在數據庫之前。在保存到數據庫之前,您應該始終進行這些檢查。

0

防止用戶在其瀏覽器上更改任何內容是不太可能的。此外,這是確保數據完整性的錯誤方法。即使用戶無法更改inspect-element功能的值,也有幾種方法可以將不正確的數據發送到您的服務器(例如,使用javascript進行POST請求)。所以,你需要的是在持久化數據之前在服務器上執行驗證。

當您收到數據時,請使用用戶的id和提交的註釋的id查詢數據庫,以確保它們實際上被允許執行此操作。

+0

你能舉一個這方面的服務器端驗證的例子嗎? – user2310422

+0

使用相同的查詢,它使用use來設置'client-side'上按鈕的'id'。該查詢可能會返回一個允許用戶評論的「id」數組。當數據在服務器上提交時,執行相同的查詢並從數據庫中獲取同一組'id's。檢查返回的數組以確保提交的'id'確實是用戶可以評論的id。 –

0

服務器端驗證是處理這種情況的正確方法。權限檢查應該在服務器端爲每個請求完成,以便只有授權用戶才能訪問

+0

你能舉一個這方面的服務器端驗證的例子嗎? – user2310422

1

不要(我重複不要)信任來自客戶端的任何東西。

在將數據(業務資產)推入數據庫之前驗證並驗證。

爲什麼不驗證和驗證數據,甚至獲得您的獎品和榮耀之前?

+0

但我真的不知道像這樣的東西的任何形式的驗證。我的意思是,你還能用這些代碼來驗證什麼? – user2310422

相關問題