删除行AJAX

时间:2017-06-20 00:25:32

标签: php ajax security

有一种更聪明的方法可以通过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');
                }
            });
        }); 

1 个答案:

答案 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注入攻击。