2010-12-19 5 views
0

ちょっと、私はかなり重大なセキュリティエラーに直面しています。私のコードをまず説明しましょう。コメントを編集する - javascript、PHP共に協力する

<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のようなプラグインを使用すると、response-> shortを別のものに置き換えて、任意のコメントを編集することができます。もちろん、edit.phpの中で、私はレスポンステーブルとのショートをチェックして、ユーザがチェックアウトしているかどうかを見ることができますが、そのレスポンスがそのユーザによって確実でない限り、テキストエリアを表示しない方法を探したいのです。

これは可能ですか?事前に

おかげで、 ウィル

答えて

3

これは可能ですか?

確かに...ユーザーを止める/何もしないでください。セキュリティホールを修正してください。これを修正するにはサーバー側のチェック常にはサーバー側のセキュリティを保護する必要があります。ユーザーを悪意のある行為をしようとすると、JavaScriptの何かによって中断されません...サーバーにデータを送信してはいけません。正確には彼らはまず何をしますか。

+0

だけでなく、私はとにかく个人设定のことを行うことを計画します私はそれが有効だと確信していますが、とにかく私はjsも強化することができます/ – willium

+0

@タップ - それほどあなたがしていないことはありません、JavaScriptは**広い**オープン、それはちょうどどのように...私はこのページの任意のコメントの編集ウィンドウを開くこともできますが、*サーバー*はそれを許可しません。それは重要です。ここに戻り、あなたが何をしようとしているのか見てみましょう...あなたのサイトを操作しようとしている誰かの特定のケースでインターフェイスを少し上手くしようとしています。それのために働くだけで、それが重要な場所にサーバー側を確保し、他のユーザーの99.9%のためのインターフェイスを設計します(それでも問題のある場所では安全です)。 –

+0

OK!おかげでニック! – willium

0

ニックは言った。 JavaScriptテストを信頼することは決してありません!

「通常のユーザー」は機能しますが、ハッキングを回避するには、ハッカーに入力を有効にするためのボタンをクリックするように依頼することもできます。

あなたのバリデータのスクリプトは誰かの他のコンピュータ上で実行されているので、彼/彼女はそれを操作(あるいはNoScriptのなどを使用してのそれを回す)ことができるようになります

関連する問題