Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防火墙拒绝了多部分请求_C#_Security_Uwp_Firewall_Windows 10 Universal - Fatal编程技术网

C# 防火墙拒绝了多部分请求

C# 防火墙拒绝了多部分请求,c#,security,uwp,firewall,windows-10-universal,C#,Security,Uwp,Firewall,Windows 10 Universal,我正在从事一个Windows10项目,我的任务之一是以多部分请求的方式将文件发送到服务器,因此我通过以下代码实现了这一点:它工作正常,从服务器接收到的文件和任务已完成 代码: System.Net.Http.HttpContent stringContent = new System.Net.Http.StringContent(imageFileName); System.Net.Http.HttpContent bytesContent; var client = new System.Ne

我正在从事一个Windows10项目,我的任务之一是以多部分请求的方式将文件发送到服务器,因此我通过以下代码实现了这一点:它工作正常,从服务器接收到的文件和任务已完成

代码:

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头注入
  • #
    ”的SQL注入
  • rm
    执行尝试
  • Backtick命令执行尝试
  • vi
    执行尝试。。。。。。还有更多
所有这些尝试都被捕获为JPEG文件的内容! 因此我认为应该使用
HttpStreamContent
,并尝试了以下code

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);
但不幸的是,我得到了同样的结果。


最重要的一点是,相同的web服务(我正在尝试调用)需要在Android和IOS上实现,并且具有相同的功能(多部分请求),因此来自Android和IOS的请求将通过相同的防火墙,并且它在Android和IOS上运行良好,甚至在生产中

他们是否希望HttpMultipartFormDataContent()中有一个边界值?@RositaClerissaSerrao是的,确实边界是必需的,并且为每个部分隐式添加了边界,但我认为这不是防火墙拒绝我请求的原因。防火墙检查JPEG图像的内容,该内容与mobile发送的内容相同,但出于某些原因(我想知道),它拒绝我的请求并允许移动请求。它们是否希望在HttpMultipartFormDataContent()中有一个边界值?@RositaClerissaSerrao是的,当然边界是必需的,并且每个部分都会隐式添加边界,但我认为这不是防火墙拒绝我请求的原因。防火墙会检查JPEG图像的内容,这与mobile发送的内容相同,但出于某种原因(我想知道),它拒绝了我的请求并允许移动请求。