防火墙拒绝多部分请求

时间:2017-02-13 05:16:26

标签: c# security uwp firewall windows-10-universal

我正在开发一个Windows 10项目,我的任务之一就是在多部分请求中将文件发送到服务器,所以我通过以下代码实现了它,它运行良好,从服务器接收的文件和任务完成

代码:

System.Net.Http.HttpContent stringContent = new System.Net.Http.StringContent(imageFileName);
System.Net.Http.HttpContent bytesContent;
var client = new System.Net.Http.HttpClient();
var formData = new System.Net.Http.MultipartFormDataContent();
formData.Add(stringContent, "type");
foreach (byte[] image in imageFileName.GetImagesList())
{
  bytesContent = new System.Net.Http.ByteArrayContent(image);
  bytesContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
  formData.Add(bytesContent, "images", "file_" + imageFileName.GetImagesList().IndexOf(image) + ".jpg");
}
var response = client.PostAsync(resourceAddress, formData).Result;

然后,当我们转移到生产环境时,防火墙拒绝了此请求并发现了多次黑客攻击,例如:

  • Http Headers Injection
  • ' #'
  • 的SQL注入
  • rm执行尝试
  • 反引号命令执行尝试
  • vi执行尝试......以及更多......

所有这些尝试都被抓住了JPEG文件的内容! 所以我觉得我应该使用HttpStreamContent代替,并尝试使用以下代码

HttpMultipartFormDataContent multipartContent = new HttpMultipartFormDataContent();
HttpStreamContent streamContent;
Stream stream;
foreach (byte[] image in imageFileName.GetImagesList())
{
  stream = new MemoryStream(image);
  streamContent = new HttpStreamContent(stream.AsInputStream());
  streamContent.Headers.ContentType = new HttpMediaTypeHeaderValue("image/jpeg");
  multipartContent.Add(streamContent, "images", "file_" + imageFileName.GetImagesList().IndexOf(image) + ".jpg");
}
multipartContent.Add(new HttpStringContent(imageFileName), "type");
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, resourceAddress);
request.Content = multipartContent;
HttpResponseMessage response = await httpClient.SendRequestAsync(request).AsTask(cts.Token);

但遗憾的是我的结果相同。

最重要的一点是,需要在Android和Android上实施相同的网络服务(我试图调用)。 IOS具有相同的功能(多部分请求)所以来自Android& IOS将通过相同的防火墙,它在Android和Android中运行良好。 IOS即使在制作!!!!

0 个答案:

没有答案