2016-11-04 3 views
0

このようなテストコードです。私は2ページあります。最初のページには、...AJAX jqueryはブラウザ/クライアント側の操作に安全なデータをポストしています

<head> 
     $(document).ready(function(){ 
      $("#btn").click(function(){ 
       $.ajax({ 
            type: 'POST', 
            url: 'test2.php', 
            data: { name: 'doflamingo'}, 
            success: function(response) { 
            $('body').html(response); 
            } 
           }); 
      }); 
     }); 
</head> 
<body> 
     <input type="button" value="Click" id="btn"> 
</body> 

とtest2.php

<?php 
echo $_POST['name'] 
?> 

私は最初のページ上のボタンをクリックした場合には、「ドフラミンゴ」のテキストが表示されます。 ブラウザのFirebugに行き、 'doflamingo'を 'luffy'に編集してボタンをクリックすると、まだ 'doflamingo'が表示されます。だから、このAJAX jQueryの意味は、ハックの権利から安全ですか?私はより多くのセキュリティを追加する必要はありませんか?
また、urlをtest2.phpからrandom.phpに編集しますが、URLはまだ 'test2.php'になります。

+1

ネットワークタブにブレークポイントを追加し、そのインスタンスの関数/変数を実際に変更することができます。データを改ざんする方法はたくさんあります。また、Tamperの猿、Grease Monkeyのような利用可能な多くのツールがあります! –

+0

"検査する"要素は何ですか? DOMを変更してもコードは変更されません。あなたが話しているこの「セキュリティ」は何ですか?あなたは何を確保しようとしていますか?ユーザーがJavaScriptを変更したりサーバーにカスタム値を送信できるかどうかをテストする場合は、テストは無効です。ユーザーは自分のブラウザで何でもできます*。 – David

+0

あなたの質問はうまく答えられていないと思います。 InspectElementブラウザとは何ですか? –

答えて

1

javascriptがロードされるとブラウザのメモリにロードされるので、動作は正しいです。

したがって、html要素の値を取得する場合と同じように変更すると、変更されます。

セキュリティに考慮すべきいくつかのポイントがあります:あなただけの要求をrecibeすることができ、デフォルトでは意味 CORS

ので、本質的に:彼らはここに多くのリファレンスを参照してくださいHTTPアクセス制御(CORS)を実装し、デフォルトで

のブラウザでは、あなた自身のドメインから。

しかし、一度ページが読み込まれ、javascriptの悪質なコードをブラウザのf.exampleインスペクタに挿入しようとするとどうなりますか?この要求は有効な要求かどうかはわかりません。

これは、CSRF(クロスサイト要求偽造)またはXCSRF(ajax付き)と呼ばれます。

良い行動で行われた要求のためにチェックすることができ、それを処理しようとする簡単な方法...

F.exampleは、あなたがどこ最初にレンダリングされたページを持って、ユーザーが意志リクエストを実行します。

  • サーバーサイドスクリプトを実行し、ブラウザにHTMLを送って、私たちは私たちが私に今では「レンダリングされたページ」

    /** 
    * Preventing CSRF 
    */ 
    
    $time = time(); 
    $_SESSION['time'] = $time; 
    
    $salt = 'gxYrE9G5kxlPcPOC1DSTWOehgw9Rb6FQ9q2qr5vpCPhBV418Q9TUYUK91cvd'; 
    $_SESSION['token']= sha1($salt . $time); 
    ...attach this token in a hidden input on html 
    
  • ページのindentifierを添付することができます隠された入力またはメタタグまたは任意の内部トークンを使ってレンダリングの、あなたはAJAXリクエストを作るときに、あなたが戻ってサーバーにこのトークンを含めると照合してチェックしなければならないあなたが前に保存されてきたが、HTMLを送信します。

    $_POST['crsf'] !==$_SESSION['token'] 
    

ユーザーの要求を信頼し、すべてのデータをフィルタリングしないでください。できるだけmeanyチェックとして行うことができます。たとえば、リクエストの制限を最小化します(要求と要求の間にdiffを格納します。 )。

確かにあなたの答えはそうではありません.AJAXはブラウザ/クライアント操作のために安全ではありません。なぜなら、セキュリティの問題が100%無料の技術ではないからです。

関連する問題