JQuery AJAX добавить / редактировать / удалить действия могут быть взломаны? - PullRequest
1 голос
/ 19 декабря 2010

Просто интересно о проблеме безопасности. Сейчас я использую следующую функцию для удаления фильмов из моей базы данных:

    function deleteVideo(video_id){
        function mycallbackform(v,m,f){
            if(v=="yes"){
                $.ajax({
                    type: "POST",
                    url: "delete.php?action=video",
                    data:   "video_id=" + video_id,
                    success: function(html){
                        if(html == "1"){
                            //$("#result").html(html);
                            $("#row_"+video_id).fadeOut("slow");
                            $("#result").show();
                            $("#result").html("<div class='notification success png_bg'> <div><?php echo $LANG_video_succesfull_delete; ?> </div></div>");
                            setTimeout(function(){ $('#result').fadeOut('slow'); }, 5000); 
                        }else{
                            $("#result").show();
                            $("#result").html(html);

                        }
                    }
                });
            }
        }
            $.prompt('Are you sure?',{ buttons: { Ok: 'yes', Cancel: 'no'}, callback: mycallbackform});
            }

На заднем конце исполняется следующий код:

/*** DELETE data ***/
    /*** prepare the SQL statement ***/
    $stmt = $dbh->prepare("DELETE FROM videos WHERE username=:username AND videos_id=:video_id");
    $stmt->bindParam(':username', $currUser);
    $stmt->bindParam(':video_id', $video_id);



    /*** execute the prepared statement ***/
    $stmt->execute();

В этом случае имя пользователя сохраняется в сеансе.

Может ли пользователь A удалить данные пользователя B с помощью этого кода?

Я подумал добавить запрос, чтобы проверить, является ли текущий пользователь тем же пользователем, который добавил видео в базу данных. Если нет, он не может удалить данные. Но необходимо ли это или этот код достаточно безопасен?

Заранее спасибо.

1 Ответ

3 голосов
/ 19 декабря 2010

Вам лучше сохранить уникальный идентификатор пользователя в сеансе.Что если два человека с одинаковым именем пользователя?


Редактировать : Если имя пользователя уникально, это вполне безопасно.Невозможно изменить значение переменной сеанса, работающей на стороне клиента, если вы не допустили ужасную ошибку в своем PHP-коде.Но если вы уверены, что переменная сеанса всегда установлена ​​правильно, вам не о чем беспокоиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...