2016-04-29 16 views
3

私はmultipartデータを受け取るWebApiメソッドを持っています。現在の実装では、MultipartMemoryStreamProviderを使用してコンテンツを受信します。C#到着時にMultiPartの応答内容を読み取る

他のものより先に特定の部分が受信されていることを確認したいと思います(ファイル内容の前にファイルハッシュとも呼ばれます)。残念ながら、私がフレームワークについて説明できることから、HttpContentMultipartExtensionsはMimeMultipartParserをHttpContentのレスポンスストリームにインスタンス化します... MimeMultipartParserは、提供されたStreamProviderを使用してデータが到着すると新しいストリームをインスタンス化しますが、通知/パーサーが前のストリームから次のストリームに切り替わると、

イベントを使用することで、ファイルの内容が到着する前にファイルのハッシュをキューに入れ、ファイルの内容をファイルにポンピングし、次のファイルのハッシュ/コンテンツが到着している間にハッシュを確認できます。

残念ながら、私が見ているすべての例とコードでは、コンテンツストリームが完成した後でしかアクセスできないことを示唆しています。 (私はMimeMultipartBodyPartParserのParseBufferが返されたMimeBodyPartを返すことを知っていますが、プライベートなMultipartReadAsyncCompleteから呼び出されたように見えるので、アクセスする方法はありませんでした)

私に何か不足していますか?より良い方法がありますか?

+0

コードなしでは何も言い難いです。 –

+0

@RustamUmarovこのコードは、https://forums.xamarin.com/discussion/18649/best-practice-to-upload-image-selected-to-a-web-api(など、MultipartMemoryStreamProviderのすべての検索結果とほぼ同じです。 2番目のメッセージ)、https://jamessdixon.wordpress.com/2013/10/01/handling-images-in-webapi/(最後のコードスニペット)、および数十のSO応答。 –

+1

現時点では、ストリームが完了したときにイベントハンドラ/非同期デリゲートを含めるために、HttpContentMultipartExtensionsとMimeMultipartParserのスタック全体を実装する必要があると私は想定しています。私はマイクロソフト社のコードを再実装するのは巨大なファンではない(私にはバグ修正のアップデートがないので)...しかし、私はサードパーティ製のライブラリも見つけていない。誰かが私が逃した何かを指摘して、組み込みの機能を使用すれば幸せになれます。 –

答えて

3

MITMはアーキテクチャの一部に挿入された攻撃であるため、MIME解析コード自体でMITM攻撃を解決しようとはしません。

マルチファクターやSSLなどのトポロジと実証済みのソリューションにより、クライアントはセッションの有効性とコンテンツの送信者を判断できます。

あなたのアーキテクチャがMITMの影響を受けやすい場合、受信時にMIMEデータの検証ではなく、接続の終わりから終わりまでのセキュリティを調べる必要があります。 データのセキュリティが懸念される場合は、データの暗号化と、透過的な操作を防止する非不透明な暗号化手法(署名なし)を使用し、クライアントがメッセージを復号化できるようにする必要があります領収書。

MITMを回避するためにクライアントとサーバーの間の接続を保護すると、あなたのアーキテクチャの制約を説明してより良い回答を提供できる可能性があります。

+0

また、APIをあなたがやりたいことにハードに曲げようとしている場合は、APIが解決策ではない可能性があり、したがって上記の答えを追加する必要があります。 –

関連する問題