Ajax请求、数据库和安全性


Ajax requests, database and security

这篇文章更像是一个question,而不是一个真正的issue。所以在很长一段时间里,当我需要显示database的项目列表时,我就直接在HTML中显示Id(表中的primary key),例如:

<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>

所以像这样,当我想做当前clicked项目的Ajax请求时,这很容易,因为我只需要从html中检索attribute,就像这样:

$.ajax({
    url: '/api/Item/'+$(this).attr('id'),
    type: 'GET',
})
.done(function() {
    console.log("success");
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});

那只是在浏览了很多网站之后,我注意到没有人直接在HTML中显示primary key (Id)。但不知何故,他们仍然可以使用点击的itemIdAPI执行ajax请求。所以我的问题是:我怎么能得到当前点击Id做我的ajax请求,而不显示任何地方。我是说这些网站是怎么做到的?也许他们从server中得到list,然后在client中使用?但这仍然不能解释他们是如何让current点击Id的。

感谢您的意见和建议。

网站示例:https://www.toneden.io/聊天在右下角连接时,见network和web浏览器console

要从服务器获得响应,您必须请求一些东西。在这种情况下,你说我不想在html端显示primary key,并从服务器获得结果。我的建议是,在php>中,您可以使用二进制数代替主键并转换回数字并使用acc。需求。示例:- decbin() and bindec()

显示id并没有错。在我只想在响应服务器推送更新时引用DOM的情况下,我附加了数据库id,如id="game_1281"。另一种选择是使用如下的数据属性:data-id="1281"。这允许您在将值发送到服务器之前无需进行任何混乱的解析即可获得值。

引用唯一id不是安全问题。只要确保您正在执行适当的服务器端检查,以确保根据各种约束和特权对该用户采取的操作是可能的。