Kor*_*ndi -1 html javascript php jquery
好吧,这是我一直处理的问题.
我的页面加载了一些li元素.它们都有自己的id,这是数据库中的primary_key id.可以从数据库中删除每个元素.删除的过程是通过JQuery的$.POST方法完成的,获取该元素的id并将其传递给获取id的php文件,并从数据库中删除相应的记录.
在Google或Firefox的检查器中,如果我更改元素的id值,然后按该元素的删除按钮,则删除具有该ID的其他元素.
示例:我们要从数据库中删除ID为45的"Mohsen".
<script>
$('li').click(function(){
var id = $(this).attr(id);
$.post('delete.php',
{r_id: id}
);
});
</script>
Run Code Online (Sandbox Code Playgroud)
HTML:
<li id="45">mohsen</li>
<li id="35">vahid</li>
<li id="25">neda</li>
Run Code Online (Sandbox Code Playgroud)
上面的代码是最初加载的.当我点击"mohsen"时,"mohsen"将从数据库中删除,因为他的id为45.但是,如果我使用检查器并将id值更改为:
<li id="25">mohsen</li>
<li id="35">vahid</li>
<li id="45">neda</li>
Run Code Online (Sandbox Code Playgroud)
现在,当点击"mohsen"时,数据库中的primary_key id值为25的 "neda"将被删除,我们不打算允许.
有没有办法阻止用户使用检查器操作标记数据?换句话说,如何正确地从数据库中删除"Mohsen",即使其id值被篡改? 注意: mohsen就是一个例子,每个li都可以删除.
减少操作尝试的一种方法是不按ID删除,而是删除一些独特的随机哈希.您可以将随机哈希作为主键,也可以在数据库中创建额外的列.
data_tbl(id (pk), hash, value)
如果您的哈希看起来像:a89x1uAp3例如,根据该哈希计算其他记录的哈希值将非常困难.
只是不要通过帖子传递您的ID,但您的哈希和问题几乎受到限制.
您无法阻止用户使用检查器查看页面,如果您希望阻止删除某些记录,则唯一可以执行自己的服务器端验证.
此外,如果可能的话,尽量不要暴露你的主键,只有一些派生的信息,比如@Thomas David Plat建议的散列.
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |