2012-07-16 38 views
2

我對服務器端編碼相當陌生,目前正在設置一個站點,它涉及從數據庫中提取對象,允許用戶編輯它們,然後將這些元素重新插入到數據庫。服務器端驗證防止數據庫錯誤

但是,我不知道如何防止用戶通過使用開發工具來破壞數據庫。

基本元素顯示在列表中,每個元素都是一個腳本。它有自己的唯一ID和名稱(不一定是唯一的)。所以,當它從數據庫中拉出時,名稱就是列表的文本,並且該ID包含在屬性字段中。在編輯時,我從html屬性中提取id並使用它來保存對數據庫的任何更改。

當然,我會檢查服務器端以確定是否允許用戶所做的所有編輯。

但是,我快到的問題是,用戶可以輕鬆地打開任何形式的開發工具,更改腳本的Id(切換他們或他們請任何方式改變他們),這肯定會傷害數據庫。

有人可以提供一些技巧來防止這個問題嗎?我真的很感激它。謝謝!

我不知道它會如何幫助,但我的大部分代碼是在JavaScript(使用jQuery和jQuery UI)和PHP(使用CodeIgniter作爲框架)。

編輯:

試想兩個元素

標識 - >標題 - >描述

5 - >你好 - >世界

6 - >再見 - >睡眠

在服務器端,這些顯示爲列表,並有一種替代方法來編輯值。

<li data-id=5>Hello</li> 
<li data-id=6>Bye</li> 

有人可以加載火災bug,並更改我用於查詢的數據ID,比如說做第一個7.或者兩者都調換。在這種情況下,這並不重要,但實際上更多的是因爲我的好奇心,有什麼辦法可以防止這種情況發生?

+1

你必須[** **驗證(http://en.wikipedia.org/wiki/Verification_and_validation)用戶輸入服務器(***不在客戶端上)。 – Matt 2012-07-16 15:01:56

+0

「當然,我會對服務器端進行檢查,以確定是否允許用戶所做的所有編輯。」但是,我不知道如何檢查腳本的id號是否發生了變化,因爲這些是我主要查詢的內容。其他的一切都非常適合用戶隨意編輯。 – user1464055 2012-07-16 15:03:20

+0

查看信息(重定向到調皮步驟)時檢查,並檢查時寫入(直接進入監獄,不通過註銷頁面,不收取200美元)。 – Waygood 2012-07-16 15:09:08

回答

0

使用mysql_real_escape_string發送安全數據庫查詢:

$user_input = mysql_real_escape_string($_POST['user_input']);