0

phpMyAdmin からすべてのデータベースを読み取り、php コードで表示するテーブルがあります。- テーブルの各セルを更新することもできます。たとえば、データベースの ID に等しいテーブルの行と (名、姓、パスワード) に等しい列を使用して正常に動作します。したがって、ユーザーがテーブル内のセルの 1 つをクリックすると、jquery はパラメーター ID とフィールドの列 1 (名、姓、パスワード) を ajax で送信します。私の問題は何ですか?私の問題は、jqueryコードを見ることができるヘイカーまたはスマートユーザーをどのように防ぐことができるかです。彼は、IDまたはパスワードパラメーターの値を変更でき、ajaxが正しいIDではなくデータベースを更新できることを理解しますか 11 ~ 20 の ID を持つ 10 行のユーザー テーブルに表示するとします。ユーザーは ID パラメータ 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');
                 }

        });       
    });

ここに画像の説明を入力

4

2 に答える 2

0

行 A はユーザーが表示/編集できますが、行 B は表示/編集できないように、MySQL で行ごとのアクセス許可を割り当てることはできません。

絶対に解決策が必要な場合に少し面倒な回避策が 1 つあります。それは、テーブルに対して直接クエリ (SELECT、INSERT など) を使用する代わりに、何らかの認証を行うストア プロシージャを記述して、 /または検証。このプロシージャーは、ユーザー ID のチェック、列の値のチェックなど、必要なあらゆる種類の複雑な検証を行うことができ、そのユーザーが表示および/または編集を許可されているものだけを返します。

于 2012-05-30T20:07:39.200 に答える
0

これはバックエンドに実装するものであるため、フロントエンド コードを示す意味はありません。

AJAX 経由で呼び出されるメソッドでは、ユーザーが要求されたアクションを実行する権限を持っているかどうかを確認するだけです。メソッドの先頭で別のチェックを行い、ユーザーが許可されていない場合に返すか、たとえば WHERE 句を追加して、それらの ID がそのユーザーのものであることを確認することにより、削除クエリ自体に組み込むことができます。削除を許可しました。

于 2012-05-30T20:07:11.883 に答える