我有一個非常大的表單,分爲5個子表單。當你從form1轉到form2時,form1中的信息存儲在DB中,並且創建了一個userId。然後在form2中,這個userId被添加爲一個隱藏的輸入。事情是這樣的:使用隱藏輸入檢索用戶數據安全嗎?
<form action="" method="post">
<input type="hidden" value="userIDnumber" id="userId" />
<input type="hidden" value="<?php echo base_url();?>" id="url" />
//form data
<input type="button" id="prevButton" value="Prev" />
<input type="submit" value="Next" />
</form>
如果用戶決定要回去到Form1編輯數據,當點擊「返回」按鈕,將出現以下情況:
var prev = document.querySelector('#prevButton');
if(!prev.addEventListener){
prev.attachEvent('onclick', prevPage);
}else{
prev.addEventListener('click', prevPage, false);
}
function prevPage(e){
var userId = document.getElementById('userId').value;
var url = document.getElementById('url').value;
var form = document.createElement('form');
form.setAttribute('method', 'post');
form.setAttribute('action', url + 'form/1');
form.style.display = 'hidden';
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", "userId");
input.setAttribute("value", userId);
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
我在做什麼是創造一個隱藏的形式,並以這種形式添加一個隱藏的字段與UserId,以便當form1我可以檢索用戶剛發佈的數據和更新數據庫,如果用戶更改任何東西。
我的問題是,這是一種安全的方式來檢索用戶數據?我對JavaScript非常陌生,所以我不確定如果做這樣的事情,攻擊者可以通過直接插入其ID來訪問其他用戶的數據。
如果是這樣,那麼做什麼是正確的安全方法?我想可能會使用會話,但我工作的客戶端不想讓用戶登錄。
我還沒有發現任何與此有關的問題,但如果有我道歉,請親切指給我它在哪裏。
謝謝你的時間。
一個id只是一個數字,所以除非攻擊者有權訪問你的數據庫,否則這個數字是毫無意義的。 – edhedges
然後,您可以生成一些每個用戶的密鑰,並在表單提交中使用它。 – Cthulhu
@edhedges你仍然可能不希望任何人能夠指定任何id並搞亂某些用戶的數據(即使攻擊者沒有獲得任何東西)。 – Cthulhu