簡體   English   中英

Javascript如何安全地訪問用戶信息?

[英]How can Javascript securely access user info?

當用戶單擊我的綠色按鈕時,我需要Javascript才能檢測到這一點,並將$ UserID和$ ActivityID傳遞給服務器以存儲在數據庫中。

但是,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然后點擊按鈕怎么辦? 不會將垃圾寫入dbase嗎?

謝謝你的提示。

使用服務器端腳本語言來驗證從瀏覽器傳遞給它的任何內容。 服務器不應信任Web瀏覽器中發生的任何事情。 因此,如果傳遞了user =“ johnSmith”並進行了活動=“ save”,則檢查該頁面是從JohnSmith發送的(假定您已將用戶存儲在會話對象中)。 另外,選中“保存”是一個有效的操作。

那么,你需要解釋一下你在尋找哪種安全性。 您是否希望保護通過網絡發送的數據? 如果是這樣,那么您將不得不選擇SSL證書並通過它發送數據。

但是,如果您希望數據對用戶不可見,那么就沒有這種方法可以做到,因為如果有人正在讀取從他的機器發送的數據包,他可以很容易地找出正在發送的數據。

您可以隱藏值(將值存儲為HEX,Base64等),也可以使用HMAC http://us.php.net/manual/en/function.hash-hmac.php對數據進行哈希處理。

也許除了服務器檢查之外,您還可以在文檔加載后獲取輸入值,將它們保存在某個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...
    });
}

如上所述,這不是真正的安全,只是有點萬無一失..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM