2017-04-10 1 views
0

現在、両方のサーバーが正常に動作しており、Ajaxを使用してGETおよびPOSTリクエスト(Json)を使用してバックエンドに同期しています。問題は、これが私の目標を達成するための安全な方法であるかどうかわかりません。いくつかの質問を聞きたいんです。それのフロントエンドとバックエンドを確実に正しく接続する方法はありますか?

  1. 私の理解では、クライアントが直接、Webページ/ AJAXを通じてないフロントエンドをバックエンドにアクセスしていることです。これは正しい考え方ですか?

  2. 解決策は、ユーザーからのデータを取得し、フロントエンドを実行しているノードサーバーを介して送信し、それをバックエンドに送信することですか?

  3. どこにsslが入りますか?

  4. 現在の方法では、バックエンドアドレス(http://backend.com/data)は公開されていますが、これは問題ですか?

  5. 基本的なウェブページのセキュリティに関するチェックリストはありますか?私は見つけられないようです。

これは、私はあなたが「クライアント・サーバ」対クライアントが何を意味するかを理解少し問題を抱えているので、私はするつもりだ私のWebページ

$.ajax({ 
     type: 'GET', 
     url: 'http://backend.com/data', 
     success: function(data) { 
     extresults = data; 
     console.log(extresults); 
     } 
    }); 

    $.ajax({ 
     type: 'POST', 
     url: 'http://backend.com/data', 
     data: {"la" : "lala"}, 
      success: function(data) { 
     alert("post is good"); 
     } 
    }); 
+0

答えがありません。 あなたは抽象的な抽象的なものについて話しています。おそらくcleint/server関係の誤解は間違いでしょう。 AJAXはそれがクライアント/サーバ要求であることを要求します。あなたのブラウザからのリクエストとしての単純なHTTPリクエスト。 –

答えて

0

のHTMLでの私のjavascriptのコードですやや高い抽象レベルでこれに答えてください。

最も基本的なレベルから、セキュリティで保護された呼び出しを開始する前に接続に3つのプロパティが必要です。機密性、検証、および検証が含まれます。

安全な接続は機密である必要があります。つまり、第三者が通信中のデータを読み取ったり変更したりすることはできません。このプロパティは、通常、HTTPS(Webアプリケーション用)を介して暗号化によって提供されます。転送中にデータが暗号化されている場合、必要なキーが不足しているため、第三者はそのデータを読み取ることができません。さらに、うまく設計された暗号システムでは、攻撃者は有用な方法でデータを変更することができません。彼らはランダムなデータで代用することができますが、キーなしでは、送信したいデータに解読するメッセージを送信する方法がありません。復号化が失敗するか、または予測できない値に解読されます。

安全な接続は、と確認されている必要があります。つまり、通信相手は相手が誰であるかを知る必要があります。サーバー側では、HTTPSがこのプロパティを提供します。サーバーはHTTPS証明書を提示し、クライアントは証明書の所有者だけがこの方法で証明書を提示できることを知ります。したがって、クライアントが証明書を信頼する場合、つまり、証明書の発行者が証明書の所有者が自分の人物であることを確認したことを信頼することを意味する場合、サーバーは自分が誰であると思っているかを知っています(これは総額ですHTTPSが実際にどのように機能するかを調べることをお勧めします)。ただし、サーバー側では、クライアントのIDを確認する他の方法が必要です。 HTTPS接続でクライアントになるための証明書は必要ありません(ただし、HTTPSクライアント証明書を使用することはできますが、HTTPSクライアント証明書を検索します)。これは、「ログイン」の何らかの方法で処理されます。通常、クライアントは誰も接続を開始せず、クライアントに特定のIDがあることを証明する情報をサーバーに提供します。ユーザ名とパスワード、署名、OTPなどが含まれます。クライアントが自分の身元を証明したら、サーバは通常、自分の身元を証明したことを示す値を含むCookieを提供します。大きなランダムナンス、署名付きトークンなど

最後に、セキュリティ保護された接続は、の有効性が確認されたである必要があります。あなたのデータが改ざんされていないことを知っていて、あなたが誰と話しているかを確認したとしても、受け取ったデータを盲目的に信頼すべきではありません。クライアントはサーバーから受け取るデータについては気にしませんが、サーバーがクライアントから受け取るデータを検証することは絶対に重要です。これは、クライアントから受け取ったデータをコマンド呼び出しやSQLクエリなどに入れないようにすることを意味します。また、機密プログラムフローのためにクライアントデータに頼るべきではありません。自分の要求で "admin = True"引数を検索して、ユーザーが管理者であるかどうかを確認しないでください。受け取っているデータが何かをする前に、あなたが期待しているものであることを常に検証してください。

要約すると、サーバーに証明書をインストールしてHTTPSを設定する必要があります。データを受け入れる前に(何らかの方法で)クライアントに認証を要求する。受信データを使用する前に検証してください。

関連する問題