我有一个名为' delete'像这样:
<div onclick="delete($post_id, $_SESSION['id']">somelink</div>
function delete(post_id, session_id) {
var p_id = post_id;
var s_id = session_d;
$.ajax({
url:"delete.php",
type:"POST",
data: {
p_id: p_id,
s_id: s_id
},
});
})
delete.php是一个删除从用户id = s_id添加的post = p_id的页面。
我的问题是,任何用户在输入功能时都可以删除任何帖子,只需输入控制台&#39; delete();&#39;用参数调用并删除帖子!
请提出任何想法。
答案 0 :(得分:2)
您应始终假设来自客户端的数据已损坏,应予以相应处理。这包括表单数据,或者在这种情况下,包括AJAX请求。
这意味着你必须在服务器端应用验证,让PHP为你做。例如:限制每X时间可以删除的帖子数量。并仔细检查帖子实际上属于删除帖子的人。
你不能这样做的原因是因为你创建的是客户端的javascript。如果您创建一个函数来阻止更改代码,客户端可以更改其计算机上的代码 以忽略它。您可以创建一个函数来检查要检查的功能是否已更改,但是再次;客户可以改变它。
答案 1 :(得分:-1)
不幸的是,你不能。你需要确保的是在服务器上使功能安全,简单来说,归结为
答案 2 :(得分:-2)
首先,这是不好的。你应该有身份验证。
但是,你可以这样做:
(function() {
$('#BUTTON_ID').on('click', function(post_id, session_id) {
var p_id = post_id;
var s_id = session_d;
$.ajax({
url:"delete.php",
type:"POST",
data: {
p_id: p_id,
s_id: s_id
},
});
})
})();
并添加“BUTTON_ID”作为按钮的ID。
即便如此,它仍然不安全。
通过这种方式,您无法从控制台调用删除。但是有人可以查看源代码并复制你的ajax调用并将其粘贴到他的控制台中它会起作用。这不是阻止人们删除帖子的好方法。
您应该阅读有关Web应用程序安全性的信息。您应该拥有一个在x时间后过期的令牌的身份验证过程。令牌将对用户进行身份验证,您可以在此处检查用户是否有权删除帖子。如果用户没有权限,则不显示该按钮。然后,如果用户从控制台调用它,他将从后端服务器收到错误。