从客户端将数据和文件发布到 Web api 中检测到潜在危险的 Request.Form 值
Posted
技术标签:
【中文标题】从客户端将数据和文件发布到 Web api 中检测到潜在危险的 Request.Form 值【英文标题】:A potentially dangerous Request.Form value was detected from the client posting data and file to a web api 【发布时间】:2018-11-02 04:12:11 【问题描述】:我有一个表单用于将数据和文件发布到web
api
endpoint
。数据字段之一是使用summernote
插件的RichTextField
。
发布到endpoint
的angularjs
脚本如下所示:
$scope.transaction = ;
var files = $scope.myFile;
var fd = new FormData();
angular.forEach(files, function (value, key)
fd.append("file" + key, value[0]);
);
fd.append("fileContent", JSON.stringify( fileContent: $scope.transaction ));
dataService.uploadFile(baseAddress + "/Generate", fd)
.success(function (data) ).error(function (data) );
接受请求的端点如下所示:
[HttpPost]
public async Task<IHttpActionResult> Generate()
try
if (!Request.Content.IsMimeMultipartContent())
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
var contentResult = System.Web.HttpContext.Current.Request.Form;
var key = contentResult.AllKeys[0];
var val = contentResult.GetValues(key)[0];
此时var val = contentResult.GetValues(key)[0];
我收到此错误消息:
A potentially dangerous Request.Form value was detected from the client
我试过这个:
[System.Web.Http.HttpPost, System.Web.Mvc.ValidateInput(false)]
还有
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
【问题讨论】:
尝试添加到您的 web.config您必须允许 html 标签,因为 Summernote 数据包含它们。为此,您需要将AllowHtmlAttribute 添加到您的方法中。
你可能需要做一些修改,因为它可以很容易地做 xss 和其他东西。
【讨论】:
AllowHtml 是要在模型上使用的属性属性。所以他需要在他的控制器动作参数中添加一个模型 @J.Loscos 啊,你当然是对的。我已经有一段时间没有使用它了。 @TestzWCh 我知道 AllowHtmlAttribute。发生错误的点不是转换为模型的点。以上是关于从客户端将数据和文件发布到 Web api 中检测到潜在危险的 Request.Form 值的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Windows 身份验证凭据从客户端传递到 Web API 服务
在 asp.net web api 中使用 MemoryStream 和 ZipArchive 将 zip 文件返回给客户端
如何从 JS 获取和保存令牌中获取 ASP.NET Web Api 令牌(登录)