2011-02-11 125 views
0

當用戶點擊我的綠色按鈕時,我需要使用Javascript來檢測這一點,並將$ UserID和$ ActivityID傳遞給服務器以存儲在數據庫中。Javascript如何安全地訪問用戶信息?

但是,什麼是最好的方式讓JS安全地獲取這些信息並將其發送到服務器? 我一直隱藏變量在HTML:

HTML:

<div class="green-button">Add it</div> 
<input type="hidden" class="u" value = " <?php $UserID ?> "/> 
<input type="hidden" class="a" value = " <?php $ActivityID ?> "/> 

的jQuery:

jQuery('.green-button').click(function(event){ 
var $UserID = jQuery(this).siblings('input').hasClass('u').attr('value'); 
var $ActivityID = jQuery(this).siblings('input').hasClass('a').attr('value'); 
// rest of the code... 

然而,這似乎並不安全。 如果有人使用Firebug更改HTML然後點擊按鈕會怎麼樣? 不會將垃圾寫入數據庫嗎?

感謝您的提示。

+0

爲了澄清,$用戶名和$ ActivityID只是兩個數字。因此,如果有人在HTML中將隱藏的$ UserID從「1」更改爲「2」,服務器驗證將無法捕捉到這一點。我怎樣才能防止這種情況? – JMan 2011-02-11 05:49:52

回答

1

那麼,你需要解釋你正在尋找哪種安全性。您是否希望保護通過網絡發送的數據?如果是這樣,那麼你必須選擇SSL證書併發送AS後的數據。但是,如果你希望用戶看不到數據,那麼就沒有這種方法去做,因爲如果有人正在讀取從他的機器發送的數據包,他可以很容易地找出發送的數據過度。

+0

是的,我同意拉爾夫的觀點,您需要驗證服務器上的數據,而不是信任用戶發送的任何內容。 – Ankit 2011-02-11 05:38:50

1

使用您的服務器端腳本語言來驗證從瀏覽器傳遞給它的任何內容。服務器不應該信任Web瀏覽器中發生的任何事情。因此,如果user =「johnSmith」被傳遞並且activity =「save」,那麼檢查頁面是否來自JohnSmith(大概你已經將用戶存儲在會話對象中)。另外檢查「保存」是一個有效的操作。

0

也許除了服務器檢查之外,您可以在文檔加載後獲取輸入值,將它們保存在某個javascript對象中,從DOM中刪除輸入,然後在按鈕上單擊從對象發送值。

$(document).ready() { 
    var store = []; 
    $('input').each(function() { 
     store.push({ this.className : this.value }); 
     $(this).remove(); 
    }); 

    // now all you data save in store hash array with pairs: { class : value } 

    $('.green-button').click(function(event){ 
     ...send values from "store" variable... 
    }); 
} 

正如上面提到的,它不是真正的安全,只是有點萬無一失..

相關問題