代码点火器 Ajax 删除
Codeigniter Ajax Delete
我正在尝试使用 codeigniter3 开发一个项目。我正在尝试删除 table 中的数据。 table如下;
<tbody>
<tr id="1">
<td>text</td>
<td>text</td>
<td>text</td>
<td>text</td>
<td><button type="button" id="1"></button></td>
</tr>
</tbody>
我删除数据的ajax函数如下;
$.ajax({
type: "POST",
url: base_url+"controller/delete",
cache:false,
data:{[csrfName]:csrfHash,id:id},
success:
function(data){
$('#tableid tbody tr#'+id).remove();
}
});
但如果在页面上手动更改table id,则会删除数据库中的匹配数据。例如,如果我打开页面源,更改按钮 id,然后按下按钮,它会删除我刚刚提供的 id 值。我应该怎么做才能避免外界干扰?
提前感谢您的帮助!
For example, if I open the page source, change the button id, and press the button, it deletes the id value I just gave.
这是预期的正确行为。在这种情况下,用户正在手动修改客户端值,并正在制作他们想要向服务器发送的任何请求。用户完全可以在自己的计算机上执行此操作。
从技术上讲,用户甚至根本不需要使用浏览器。他们可以只检查 DOM、网络请求等,然后开始在类似 Postman 的东西中制作他们自己的请求。服务器无法区分,也不需要区分。请求就是请求,不管客户端程序发送的是什么。
What should I do to avoid outside interference?
你不知道。因为这不是“外来干涉”。用户可能会以一种意想不到的方式使用系统,但仍然是系统的正常使用。
站在服务器的角度想一想。这两个动作有什么区别?:
- 用户打开DOM源,手动设置记录B的ID与记录A的ID匹配。用户点击UI中的记录B。系统删除记录 A,因为这是发送的 ID;或者...
- 用户点击记录 A。系统删除记录 A,因为这是发送的 ID。
在这两种情况下,从服务器的角度来看,差异为零。用户选择删除该记录,并被允许这样做,用户成功删除了该记录。在第一种情况下,他们只是以一种奇怪且低效的方式进行处理。但那又怎样?最终结果是一样的。在服务器上执行了完全相同的操作,没有造成任何伤害。
无需付出大量努力来尝试阻止用户手动向服务器发送他们自己的请求。充其量你最终会得到一个极其复杂的系统,它只在可能方面取得成功,使它对用户来说稍微困难,但不会实际上并没有阻止任何事情。
用户计算机上 运行 的任何代码均由用户支配。但只要服务器端代码是安全的,那么用户就可以做他们在 UI 中无法做的任何事情。
我正在尝试使用 codeigniter3 开发一个项目。我正在尝试删除 table 中的数据。 table如下;
<tbody>
<tr id="1">
<td>text</td>
<td>text</td>
<td>text</td>
<td>text</td>
<td><button type="button" id="1"></button></td>
</tr>
</tbody>
我删除数据的ajax函数如下;
$.ajax({
type: "POST",
url: base_url+"controller/delete",
cache:false,
data:{[csrfName]:csrfHash,id:id},
success:
function(data){
$('#tableid tbody tr#'+id).remove();
}
});
但如果在页面上手动更改table id,则会删除数据库中的匹配数据。例如,如果我打开页面源,更改按钮 id,然后按下按钮,它会删除我刚刚提供的 id 值。我应该怎么做才能避免外界干扰?
提前感谢您的帮助!
For example, if I open the page source, change the button id, and press the button, it deletes the id value I just gave.
这是预期的正确行为。在这种情况下,用户正在手动修改客户端值,并正在制作他们想要向服务器发送的任何请求。用户完全可以在自己的计算机上执行此操作。
从技术上讲,用户甚至根本不需要使用浏览器。他们可以只检查 DOM、网络请求等,然后开始在类似 Postman 的东西中制作他们自己的请求。服务器无法区分,也不需要区分。请求就是请求,不管客户端程序发送的是什么。
What should I do to avoid outside interference?
你不知道。因为这不是“外来干涉”。用户可能会以一种意想不到的方式使用系统,但仍然是系统的正常使用。
站在服务器的角度想一想。这两个动作有什么区别?:
- 用户打开DOM源,手动设置记录B的ID与记录A的ID匹配。用户点击UI中的记录B。系统删除记录 A,因为这是发送的 ID;或者...
- 用户点击记录 A。系统删除记录 A,因为这是发送的 ID。
在这两种情况下,从服务器的角度来看,差异为零。用户选择删除该记录,并被允许这样做,用户成功删除了该记录。在第一种情况下,他们只是以一种奇怪且低效的方式进行处理。但那又怎样?最终结果是一样的。在服务器上执行了完全相同的操作,没有造成任何伤害。
无需付出大量努力来尝试阻止用户手动向服务器发送他们自己的请求。充其量你最终会得到一个极其复杂的系统,它只在可能方面取得成功,使它对用户来说稍微困难,但不会实际上并没有阻止任何事情。
用户计算机上 运行 的任何代码均由用户支配。但只要服务器端代码是安全的,那么用户就可以做他们在 UI 中无法做的任何事情。