隐藏html表列中的敏感数据

时间:2013-05-04 13:48:34

标签: jquery html

我有一个html表,第一列有id。此列已隐藏。我现在读到这是一个糟糕的方法。

但是当用户选择一行并点击删除按钮来执行带有此ID的ajax帖子时,我需要这个隐藏的ID。

我还应该在哪个位置以不同方式将此ID设置为不同,为什么这种方法不好?

5 个答案:

答案 0 :(得分:5)

无论您将它放在何处,如果将HTML中的特定数据传输到浏览器,用户将能够看到它。

您可以通过隐藏它来使其成为间接等,但这样做不会以任何方式安全

我的建议是在服务器端实现某种严格的访问控制机制,以确保尝试删除操作的人有权这样做 - 而不是试图隐藏客户端的东西。

您也可以考虑在将ID发送到客户端之前对其应用某种加密方式,以使其无法使用。

答案 1 :(得分:0)

您可以为每个行元素添加数据属性,并在单击行时读取它。这里的优点是,数据属性值不会显示在屏幕上。

答案 2 :(得分:0)

在表行中添加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`
});

答案 3 :(得分:0)

作为凭证的敏感数据不应该是客户端可访问的。但由于我不知道您所谓的敏感数据,我建议您使用jquery数据对象。这有利于保持DOM尽可能干净:

//head or any DOM element
$('head').data('key','myValue'); //set
var value = $('head').data('key'); //get

答案 4 :(得分:0)

如果你每行都有一个“删除按钮”,那么通常的惯例是将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>使用一个单独的表单,那么Sampath的回答将是我的首选(为每个data-id添加<tr>属性。)