我有一個html表格,第一列有id。此列已隱藏。我現在讀了這是一個不好的方法。在html表格列中隱藏敏感數據
但我需要這個隱藏的ID,當用戶選擇一行並點擊刪除按鈕做這個ID的ajax職位。
我應該在哪裏另外放這個id,爲什麼這種方法不好?
我有一個html表格,第一列有id。此列已隱藏。我現在讀了這是一個不好的方法。在html表格列中隱藏敏感數據
但我需要這個隱藏的ID,當用戶選擇一行並點擊刪除按鈕做這個ID的ajax職位。
我應該在哪裏另外放這個id,爲什麼這種方法不好?
將ID添加爲表格行中的一個屬性。這樣的事情:
<tr data-id="1">
<td><span class="delete">Delete</span></td>
</tr>
<tr data-id="2">
<td><span class="delete">Delete</span></td>
</tr>
而當用戶點擊刪除或編輯,使用jquery。
$('.delete').bind('click', function (e) {
var $row = $(this).closest('tr');
var id = $row.attr('data-id');
// now you have `id`
});
無論你把它放在哪裏,如果一個特定的數據片段在HTML傳輸到瀏覽器中,用戶將能夠看到它。
你可以把它通過隱藏它等,但這樣做間接將不以任何方式安全它。
我的建議是在服務器端實現某種嚴格的訪問控制機制,以確保嘗試刪除操作的人員有權這麼做 - 而不是試圖在客戶端隱藏事情。
您也可以考慮在將ID發送給客戶端之前對其進行某種加密,以使其無法猜測。
我不知道這張海報實際上意味着「敏感」,但如果是這樣的話,這是最重要的答案。 – 2013-05-04 14:02:38
啊對不起,也許我在敏感詞上放了太多重量。我想隱藏每行的ID是一個SQL字段的ID。當用戶單擊行選擇它時,我只需要此ID,然後單擊按鈕欄中表格上方的刪除按鈕。 – Elisabeth 2013-05-04 14:33:38
@Elisa - 使用隱藏的輸入,可以直接*提交*在埃利奧特尼爾森的答案應該很好地工作(因爲它不會需要任何額外的JavaScript讀取ID並將其發佈到刪除處理程序)。 – techfoobar 2013-05-04 14:40:07
您可以爲每個行元素添加一個data-attribute,並在行上單擊時讀取它。這樣做的好處是,數據屬性值不會顯示在屏幕上。
隱藏的列不是... – Elisabeth 2013-05-04 14:00:21
作爲憑據的敏感數據不應該是可訪問的客戶端。但是因爲我不知道你稱之爲敏感數據,所以我建議你使用jQuery數據對象。這有優勢,保持DOM儘可能保持清潔:
//head or any DOM element
$('head').data('key','myValue'); //set
var value = $('head').data('key'); //get
如果您已經將有一個「刪除按鈕」每行,然後通常慣例是把ID直接進入一個隱藏的輸入如下所示:
<tr>
<td>John Smith</td>
<td>37</td>
<td>
<form action="/delete">
<input type="hidden" name="id" value="id_for_this_row">
<button type="submit">Delete</button>
</form>
</td>
</tr>
此代碼將在沒有任何Javascript的情況下運行。如果你想要增強行爲,通過使用AJAX等在後臺發佈表單,只需在頂部添加。
如果你的應用在很大程度上AJAX已經,或者你不能每<tr>
使用單獨的形式,然後薩姆帕斯的回答將是我去到(加入data-id
屬性各<tr>
)
我不使用按鈕每行,一個設計失敗和浪費空間;-) – Elisabeth 2013-05-04 14:49:03
我完全忘了$ .data()。一般來說,你的答案沒問題,我只是不能使用這個答案,因爲我的表是knockoutjs綁定的,我沒有看到我可以在哪裏添加此id到每一行。一個新的問題... – Elisabeth 2013-05-04 14:54:01