C#在到达时读取MultiPart响应内容

时间:2016-04-29 18:41:35

标签: c# httpresponse multipartform-data

我有一个接收多部分数据的WebApi方法。当前实现使用MultipartMemoryStreamProvider来接收内容。

我想确保在其他部分之前接收某些部分(也就是文件内容之前的文件哈希)。不幸的是,根据我所知的框架,HttpContentMultipartExtensions将MimeMultipartParser实例化为HttpContent的响应流...... MimeMultipartParser使用提供的StreamProvider在数据到达时实例化新流......但似乎没有通知/事件当解析器从前一个流切换到下一个流时。

通过使用事件,我可以对文件的散列进行排队(在文件内容到达之前),将文件内容泵入文件,并在下一个文件的散列/内容到达时确认散列。

不幸的是,我看到的每个示例和代码都表明我只能在完成后访问内容流。 (我确实看到MimeMultipartBodyPartParser的ParseBuffer产生了它返回的MimeBodyParts,我只是没有看到任何方法来访问它,因为它似乎只是从私有的MultipartReadAsyncComplete调用)

我错过了什么吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

我不会尝试在MIME解析代码本身中解决MITM攻击,因为MITM是在架构的一部分中插入的攻击。<​​/ p>

有多种拓扑结构和经过验证的解决方案,例如多因素或SSL,可让您的客户确定会话的有效性和内容的发件人。

与Evk状态一样,如果您的架构容易受到MITM的影响,那么您需要查看端到端连接的安全性,而不是在收到时验证MIME数据。 如果您担心数据的安全性,那么您需要考虑加密数据,并使用非透明加密技术(不签名),这将阻止传输中的操作,并允许客户端在收到时解密消息

如果确保客户端和服务器之间的连接以避免MITM不适合您,也许您可​​以解释您的架构上的约束,以便我们可以提供更好的答案。