2012-05-30 3 views
0

У меня есть таблица, которая считывает всю базу данных из phpMyAdmin и переносит ее по php-коду. - Я также могу обновить каждую ячейку таблицы, например, используя строку таблицы, которая равна ID в моей базе данных и colume, которая равна (имя, фамилия, пароль), работающая нормально. , поэтому, если пользователь нажимает на ячейку внутри таблицы, jquery отправляет ajax идентификатор параметра и colume одно из полей (имя, фамилия, пароль). В чем моя проблема? моя проблема заключается в том, как я могу предотвратить использование хакером или умным пользователем, который может видеть код jquery, и он будет понимая, что он может изменить значение любых пармеров ID или пароля, и ajax может обновить базу данных, а не правильный идентификатор? supose Я показываю таблицу пользователя с 10 строками, у которых есть идентификатор от 11-20, пользователь изменит идентификатор ID идентификатора, равный 500, который он может использовать.Как предотвратить обновление другой записи базы данных?

$(document).ready(function() 
{ 
    var COLUME, VAL,ROW,STATUS,DATASTRING; 

    $('td').click(function() { 
     COLUME = $(this).attr('class'); 
     }); 
//**************** 
    $('tr').click(function() { 
     ROW = $(this).attr('id'); 
     $('#display_Colume_Raw').html(COLUME+ROW); 
     //$('#display').html(COLUME+ROW); 
     $('#span' + COLUME + ROW).hide(); 
     $('#input'+ COLUME + ROW).show(); 
     STATUS = $("#input" + COLUME + ROW).val(); 
    }); 
    //******************** 
    $(".edittd").mouseup(function() { 
     return false; 
    }); 
    //************* 
    $(document).mouseup(function() { 
     $('#span' + COLUME + ROW).show(); 
     $('#input'+ COLUME + ROW).hide(); 
     VAL = $("#input" + COLUME + ROW).val(); 
     $("#span" + COLUME + ROW).html(VAL); 
      if(STATUS != VAL){ 
      $('#statuS').removeClass('statuSnoChange') 
      .addClass('statuSChange'); 
      $('#statuS').html('THERE IS CHANGE'); 
      DATASTRING=$('#display_Colume_Raw').html()+','+VAL; 
      //******ajax code 
       //dataString = $.trim(this.value); 
         $.ajax({ 
         type: "POST", 
         dataType: 'html', 
         url: "./public/php/ajax.php", 
         data: 'DATASTRING=' + DATASTRING, //{"dataString": dataString} 
          cache: false, 
          success: function(data) 
          { 
           //alert(data); 
           $("#statuS").html(data); 
           } 
          }); 
         //******end ajax 
       } 
       else 
       { 
       //alert(DATASTRING+'status not true'); 
       } 

     });  
    }); 

enter image description here

+0

Покажите нам существующий код/​​схему пожалуйста. –

+0

Взгляните на [мой ответ на * Оставь поддельные сообщения формы *) (http://stackoverflow.com/questions/9202944/stop-spoofed-form-submissions/9209121#9209121). – Gumbo

ответ

0

Там нет смысла показывать передний конец кода, как это то, что вы реализуете на заднем конце.

В методе, который вызывается через AJAX, просто проверьте, есть ли у пользователя разрешения для выполнения запрошенного действия или нет. Вы можете либо провести отдельную проверку вверху метода, либо вернуть его, если пользователь этого не разрешил, или вы можете создать его для самого запроса на удаление, например, добавив предложение WHERE, удостоверяющее, что эти идентификаторы являются те, которые пользователь разрешено удалять.

0

Вы не можете назначать разрешения каждой строки в MySQL, так что строка A может быть просмотрена/отредактирована пользователем, но строка B не может.

Существует один обходной путь, который немного боли, если вы абсолютно имеют иметь решение, и это то, что вместо того, чтобы использовать прямые запросы к таблице (SELECT, INSERT, и т.д.), писать процедуры магазина, что выполнять некоторую аутентификацию и/или проверку. Процедура может выполнить любую сложную проверку, которую вы хотите - проверить идентификаторы пользователей, проверить значения столбцов и т. Д. - и вернуть только то, что разрешено этим пользователям видеть и/или редактировать.

Смежные вопросы