ASP.NET Core 8.0检测到危险Request.QueryString值的解决方法咨询
ASP.NET Core 8.0 解决请求查询字符串危险值拦截问题
方法一:全局关闭请求验证(不推荐,仅适用于完全信任请求来源的场景)
在Program.cs的服务配置中修改请求验证默认行为,允许所有请求包含危险内容:
builder.Services.AddControllers(options => { options.SuppressInputValidation = true; });
注意:全局关闭会降低应用安全性,需谨慎使用
方法二:针对特定控制器/Action关闭验证
仅在需要的接口中禁用请求验证,可在控制器或Action上添加[RequestValidation]属性:
using Microsoft.AspNetCore.Mvc; [ApiController] [Route("api/[controller]")] public class DataController : ControllerBase { [HttpGet] [RequestValidation(Enabled = false)] public IActionResult GetData([FromQuery] string filter) { // 业务逻辑处理 return Ok(filter); } }
方法三:针对特定参数允许危险内容
更精细的控制方式,仅对指定查询参数关闭验证,结合[FromQuery]和[AllowHtml]属性使用:
public IActionResult GetData([FromQuery][AllowHtml] string filter) { // 业务逻辑处理 return Ok(filter); }
补充说明
ASP.NET Core的请求验证机制与.NET Framework完全不同,没有直接对应RequestValidationMode="2.0"的配置项,上述为官方推荐的替代方案。无论采用哪种方式,建议在接收参数后自行做内容转义或安全校验,避免XSS等风险。
内容的提问来源于stack exchange,提问作者uui
相关产品推荐
相关产品推荐

