哪里是在客户端上放置数据库ID的最佳位置

Where is the best place to put database ids on the client-side?

本文关键字:数据库 置数据 ID 最佳位置 客户端      更新时间:2023-09-26

我正在使用ASP.Net提供一个页面。我在页面上使用jQuery动态添加的控件具有添加/编辑/删除功能,其中一些控件在数据库中有相关记录。将这些属性的id(主键)、data-*、jQuery.data()放在哪里是最好的位置?如果Id在客户端可见,我应该担心吗?

最好在客户端加密记录的ID,以确保数据库的安全。通常一个隐藏的字段就可以了。

这样,用户只会在查看源时看到加密的id。然后,被调用的脚本使用用于加密的密钥来检索记录标识符服务器端,并根据需要操作数据。

首先不要使用直接数据库ID。您将直接绑定到一个表主键的一个版本。相反,创建第二列,使用UUID作为主键的占位符

例如

tbl_person
 person_id INT PRIMARY KEY
 person_uuid VARCHAR(64)
 name VARCHAR(128)

但为了回答实际问题,我建议您使用适当元素的一个属性,即主动id

<tr><td id="1234-5678">Paul </td></tr>

(编辑以获得正确的代码格式)

最佳实践是使用jQuery.data(),因为这遵循了此类信息的HTML5标准。

您可以将自己的属性添加到元素中(例如my-attr="92"),也可以使用值设置为id的隐藏输入字段(<input type="hidden" value="92" />),或者只使用id属性(例如id="db-92")。

我认为你用哪种方法并不重要,无论哪种方法最合适。

您应该永远不要将其放在您的客户端上。由于您最多只能通过服务器返回数据,因此您应该放置某种形式的密钥(如dsource='db3'作为属性或隐藏字段..),然后在服务器过程中进行某种查找。

我总是使用jQuery元数据库,它本质上是包含在对象的class(或任何其他)属性中的$().data()功能。

在这里找到jQuery元数据插件:"这个插件能够从类、随机属性、子元素和HTML5数据-*属性中提取元数据。"

所以你可以做这样的事情:

<tr><td>Dave Jones</td><td><input class="delete_person {person_id: 90}" type="button" value="Delete this guy" /></tr>

然后使用jQuery:

$('.delete_person.').click(function() { 
    // delete person 
    $.post('/controller/delete_person', {person_id: $(this).metadata().person_id},  
    function() {
     // the person was deleted
    }
});

希望能有所帮助!