Редактировать комментарий - JavaScript, PHP работают вместе - PullRequest
0 голосов
/ 19 декабря 2010

Привет всем, я столкнулся с довольно серьезной ошибкой безопасности. Позвольте мне сначала набросать мой код.

<li class="comment">
    <form action="" method="POST" name="edit-form" class="edit-area">
        <textarea style="width: 100%; height: 150px;"><?php echo $response->comment; ?></textarea>
    </form>

    <div class="comment-area" style="padding-top: 2px"><?php echo (parseResponse($response->comment)); ?></div>

        <p class="ranking">
            <?php if ($response->user_id == $user_id) : ?>
                    <a href="" class="editting" data-user="<?php echo md5(convert($response->user_id)); ?>" data-edit="<?php echo $response->short; ?>">Edit</a> &bull; <a href="#d">Delete</a> 
            <?php else : ?>
                <a href="#">Like (<?php echo $response->likes; ?>)</a> &bull; <a href="#">Dislike (<?php echo $response->dislikes; ?>)</a>
            <?php endif; ?>
        </p>                                        
</li>

это то, что я получил в своем теле, и вот соответствующий JS

$('.editting').bind('click', function(event) {
            var num = $(this).data('edit');
            var user = $(this).data('user');

            if ($(this).hasClass('done')) {

                var newComment = $('#comment-' + num + ' .edit-area textarea').val();
                var dataString = 'newComment='+ newComment + '&num=' + num;

                if(newComment == '')
                {
                    alert('Comment Cannot Be Empty!');
                }
                else
                {
                    $.ajax({
                        type: "POST",
                        url: "edit.php",
                        data: dataString,
                        success: function(){}
                    });

                    $('#comment-' + num + ' .edit-area').slideDown('slow', function() {
                    $('#comment-' + num + ' .edit-area').addClass('invisible');
                    });     
                    $('#comment-' + num + ' .comment-area').slideUp('slow', function() {
                        $('#comment-' + num + ' .comment-area').removeClass('invisible');
                    });
                    $(this).removeClass('done');
                    $(this).html('Edit');
                }



            }

            else {                  
                $('#comment-' + num + ' .comment-area').slideDown('slow', function() {
                    $('#comment-' + num + ' .comment-area').addClass('invisible');
                });

                $('#comment-' + num + ' .edit-area').slideUp('slow', function() {
                    $('#comment-' + num + ' .edit-area').removeClass('invisible');
                });

                $(this).html('Done');
                $(this).addClass('done');


            }

            return false;


        });

, который работает нормально, но у меня проблема. Если пользователь находит комментарий (не по ним) и использует плагин, такой как firebug, он может заменить ответ-> короткий другим и отредактировать ЛЮБОЙ комментарий. Конечно, в файле edit.php я мог проверить короткое замыкание по таблице ответов и посмотреть, проверяет ли пользователь, но я бы хотел найти способ не отображать текстовую область, если этот ответ не будет точно подтвержден этим пользователем. .

Возможно ли это?

Спасибо заранее, Будет

Ответы [ 2 ]

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

Возможно ли это?

Конечно ... но это ничего не сделает, чтобы остановить пользователя / исправить вашу дыру в безопасности. Чтобы исправить это , проверьте на стороне сервера , всегда , дважды проверьте все, что должно быть защищено на стороне сервера, никогда не доверяйте своим данным. Пользователи , пытающиеся сделать что-то вредоносное, не будут остановлены ничем в JavaScript ... отправка данных на ваш сервер, чего они не должны делать, - это точно , что они будут делать первыми.

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

Как сказал Ник;никогда не доверяйте тесту JavaScript!

Он будет / может работать для "обычных пользователей", но когда дело доходит до избежания взломов, вы также можете попросить хакера нажать кнопку, чтобы "доказать" его вводдействительно!

Ваш скрипт валидатора работает на чужом компьютере, поэтому он / она сможет манипулировать им (или даже превратить его в использование NoScript и т. д.)

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