2017-03-01 11 views
5

SocketRocket(Objective-cソケットライブラリ)を使用してratchet(PHPソケットライブラリ)に接続するwss://を作成しています。プライベートデータをWebソケット経由でObjective-Cクライアントに安全に送信し、サーバーに戻す方法は?

このソケット接続を介してプライベートデータを送信し、次にhttps://リクエストでデータをサーバーに送り返す予定です。


Objective-Cのコード:

//initiate global variable 
@property (nonatomic) NSMutableArray* keys; 

... 

//receive the private data with SocketRocket 
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(nonnull NSString *)string 
{ 
    [_keys insertObject:string]; 
} 

... 

//$_POST the file data with sthttp 
STHTTPRequest *r = [STHTTPRequest requestWithURLString:@"https://example.com/test.php"]; 
r.POSTDictionary = @{ @"key":_keys[0] }; 
... 

は、クライアントがなどの理由[バッファオーバーフロー、真ん中の男、内(このプライベートデータを傍受できることをすべての可能な方法はあります..])?

答えて

1

証明書が最新のものであり、秘密鍵証明書が保護され、あなた以外の誰もアクセスできないことを確認することをお勧めします。

覚えておくべき点は、ログを記録している場合、保護したいデータをログに記録する可能性があることです。私はあなたのログポリシーを再確認し、あなたがそれで大丈夫であることを確認します。時には情報がURLに沿ってクエリパラメータとして渡され、それらがサーバーのログファイルに記録されることがあります。

保存している履歴がある場合は、そのような場合やモバイルデバイスのキャッシュを確認してください。

2

wss://プロトコルとhttps://プロトコルを使用している場合、送信されるすべてのデータが暗号化されているため、攻撃者の心配はありません。

ただし、安全でないプロトコルやURLクエリ文字列を使用してデータを送信する必要がある場合は、PHPのオープンSSLモジュールを使用してデータを暗号化し、クリアテキスト(例:$ _ GET params)で送信できます。

例:この例では http://php.net/manual/en/book.openssl.php#91210

$crypttextはバイナリデータです。これは、GETまたはPOSTリクエストを介して送信する必要がある場合は、base64文字列にエンコードされ、URLがエンコードされます。受信側で

urlencode(base64_encode($crypttext))

あなたはバイナリ情報を取得するためにデコードおよびURLデコードをbase64で、次に例に示すように、秘密鍵を使用してデータを復号化することができます。

base64_decode(urldecode($crypttext)

+0

まあ符号化および復号化は必ずしも暗号化されない、彼らは基本的には人間の目には読めないテキストをレンダリングするが、簡単に復号されました。人が通常のhttpsを使用している場合、それはうまくいくはずです –

+0

実際には暗号化のためのエンコーディングではありません。私の例を見るなら、すでに暗号化されたデータをエンコードすることをお勧めします。これは、open sslでの暗号化データがバイナリ形式であるためです。そのため、base46でエンコードし(String形式で取得する)、urlでURLをエンコードしてPOSTやGET(query string param)要求でバイナリデータを送信できるようにする必要があります。 – arithran

0

注:セキュアな暗号とSHA256 +暗号化とTLS +プロトコルを使用したいと思うでしょう。

注:SSL +プロトコルは安全ではなく、中間者に見られない可能性があります。 注: 1.証明書をsha256 + で作成してください。2.証明書に署名してください。 3. TLSとSecure cipher suiteでSSLを使用するようにApacheまたはWebサーバーを構成します。 4.各ホストが他のホストのSSLを信頼していることを確認してください。 (双方向の場合)

申し訳ありませんが一般的ですが、詳細が必要です。

よろしく、 ウェズリー

関連する問題