2015-11-06 21 views
5

さて、今日はビルドされたシステムで非常に良い経験をしていました。一部の人はすべてをハッキングし、それがアヤックスの問題だと言った。私は、ユーザーのブラウザ へのアクセスを持って、私は はそう、私はあなたのJavaScriptで書かれた何かを行うことができます、あなたが彼のために書いたすべてのAJAX機能へのアクセスを持っている場合あなたはAJAX
に依存しているAJAXでハッキングすることは可能ですか?

:これは、彼が私に言ったことです は、そのユーザ

のふりをし、これは絶対にhillariousです - どのようにAJAXを経由して、誰かのユーザスクリプトへのアクセスをもらえますか?また、私は.. AJAXの例を、サーバー上のノードを使用していますが、問題がどこにあるかを実現することはできません。

var transfer_data = { 
       id: jQuery(this).data('spin-id') 
      }; 

jQuery.ajax({ 
      url: init_s.forms.provably.callback, 
      type: 'POST', 
      dataType: 'JSON', 
      data: transfer_data, 
      success: function (data) { 
       console.log(data); 
       if (data.type == 'failed') { 
        jQuery('#check_modal').modal('toggle'); 
       } else { 
        // add data 
       } 
      }, error: function (e) { 
       console.log(e.message); 
      } 
     }); 

とノードスクリプトを実行する例:

socket.on('new_spin_entry', function (data) { ... }); 
socket.emit('new_spin_entry', { 
          entry_id: data.user_spin_data.id 
         }); 

ので、一体何これは?どのようにこれも可能ですか?

P.S.私は彼がページに読み込まれたスクリプトに警告を挿入したということを忘れていました。サーバーではなく、ユーザー

PPSにロードされたスクリプトが、スクリプト:これは私はコンソールATMシステムで見ることができるよ何がダウンします。クライアント側に送信されるenter image description here

+0

とノードサーバへの要求を認証するためのあなたのアーキテクチャは何ですか? – codebased

+0

ユーザにアラートを追加できる場合は、XSSの脆弱性が悪いことを意味します。 – epascarello

+0

DOMでロードされたjavascriptファイルにalertを挿入しました。 –

答えて

3

すべての変数を変更することができますハッカーがこれらのメッセージをサーバーに送信してから、その要求を処理します。これを防ぐには、受信するデータを処理するサーバーサイドのコードで検証を使用する必要があります。 を操作できる、クライアントから直接受け取ったユーザー入力または変数の形式を信用しないでください。たとえば、この場合、セッション変数を使用して、転送詳細が実際にログインしているユーザーを参照していることを検証したり、コード内にセキュリティ上の欠陥を悪用するように設計されたSQLクエリなどの悪意のあるコードが含まれていないことを確認できます。

希望すると便利です。

+0

ハッカーがユーザーのブラウザのコントロールを持っているなら、彼はユーザーのセッションクッキーを持っている。 – Barmar

+0

しかし、セッション状態変数はサーバー側に保持されていてもよく、その場合、クライアントを介して変更することはできません。例:http://stackoverflow.com/questions/13451543/how-safe-is-it-to-use-session-variables -asp-net-c-sharp – numX

+0

フィルタリングについて - 私はlaravelも使用しているので、受信時にコードでフィルタリングされています。セッション変数について - あなたは "クロスサイトリクエスト偽造"について話していますか? –

6

誰かがブラウザに完全にアクセスできる場合、ページにJavaScriptを追加したり追加したりするなど、好きなコードを実行できます。それはAjaxを使っているサイトとはまったく関係がありません。クライアントがサーバとやりとりするポイントは脆弱です。

自分が使っているブラウザのページを変更できるのであれば、これは通常の動作であり、心配することはありません。

他のサイトからのリンクやフォームの提出によってデータを送信できる場合は、にXSS攻撃が反映されている可能性があります。

サーバー上のどこかに保存されたデータを注入して他のユーザーのスクリプトを実行させると、にXSS攻撃の脆弱性があります。

許可されたユーザーである場合にのみこれを行うことができれば、承認されたユーザーは信頼できないため、送信されたデータを制限/適切にエンコードする必要があります。

許可されたユーザーに別の場所でホストされているページを訪問させると、CSRFの攻撃が脆弱になり、それらに対する保護を実装する必要があります(ノンスは通常の解決策です)。

も参照してください:

関連する問題