有一种更聪明的方法可以通过ajax请求删除行吗?
我在这里使用的代码,也许有更好更安全的方式。
按钮
<a href="#" msg_id="<? echo $msg_id; ?>" class="delete-btn"> DELETE </a>
AJAX
$('.delete-btn').click(function(){
// Confirm
///if ( ! confirm('Are you sure want to delete this row?')){
// return false;
// }
// id need to delete
var msg_id = $(this).attr('msg_id');
// Current button
var obj = this;
// Delete by ajax request
$.ajax({
type : "post",
dataType : "text",
url : 'messages_sql.inc.php?a=message_delete',
data : {
msg_id : msg_id
},
success : function(result){
$(obj).parent().parent().remove();
window.location.assign('messages.php?msg=deleted');
}
});
});
答案 0 :(得分:0)
基于此评论
messages_sql.inc.php只有SQL QUERY $ msg_id = $ _POST [&#39; msg_id&#39;]; $ sql =&#34; DELETE FROM db_messages WHERE msg_id = $ msg_id&#34 ;;
存在一些安全问题:
如果没有验证AJAX请求来自您信任的人,互联网上的任何人都可以从您的表中删除记录。如果您的应用程序要求用户登录,请跟踪其会话并在处理AJAX请求时进行检查。否则,使用AJAX请求传递CSRF令牌,至少从实际浏览您页面的人那里确认。
接下来,您可能需要db_messages
confirm the user making the request is allowed to delete the row。例如,是否允许用户从此表中删除自己的行?如果是这样,您将需要针对活动会话检查其用户ID。
还使用带参数化查询的预准备语句来避免SQL注入攻击。