Asp.net core 在AspNetCore Api路由中编码的Base64
我正在按照中定义的规则创建一个 因此,我需要实现一个GET服务,其路径必须是:Asp.net core 在AspNetCore Api路由中编码的Base64,asp.net-core,base64,asp.net-core-mvc,urlencode,asp.net-core-webapi,Asp.net Core,Base64,Asp.net Core Mvc,Urlencode,Asp.net Core Webapi,我正在按照中定义的规则创建一个 因此,我需要实现一个GET服务,其路径必须是: {url}/{url-encoding of base-64 encoding of the DER encoding of the OCSPRequest} 我创建了我的GET操作: [Route("api/ocsp")] public class OcspController : Controller { [HttpGet] [Route("{encoded}")] public asy
{url}/{url-encoding of base-64 encoding of the DER encoding of the OCSPRequest}
我创建了我的GET操作:
[Route("api/ocsp")]
public class OcspController : Controller
{
[HttpGet]
[Route("{encoded}")]
public async Task<IActionResult> Get(string encoded)
{
var ocspHttpRequest = await Request.ToOcspHttpRequest();
var ocspHttpResponse = await OcspResponder.Respond(ocspHttpRequest);
return new OcspActionResult(ocspHttpResponse);
}
...
}
base64 ocsp请求的Url编码:
MEkwRzBFMEMwQTAJBgUrDgMCGgUABBR1vr6HF4T%2FUsADPXoNr6lpJ1JRowQUJfgJ%0A6MaP2huu1lFzJOFlkswOcM8CCB6PD3SWpxwf
如何解决此问题?Base64编码产生的某些字符在URL路径中无效。这是可以更改的,但设置为这种方式是出于一个原因:即安全性。如果你允许这些角色,你将面临许多其他情况下不可能发生的攻击
但是,您可以自由地将其作为查询字符串的一部分传递。这样处理时不会出现错误。有一个解决方法,您可以将{encoded}更改为{*encoded},然后它将接受不允许的其他符号。可以为特定操作更改它吗?如何改变这一点?我想我不能使用querystring,因为RFC规范。
MEkwRzBFMEMwQTAJBgUrDgMCGgUABBR1vr6HF4T%2FUsADPXoNr6lpJ1JRowQUJfgJ%0A6MaP2huu1lFzJOFlkswOcM8CCB6PD3SWpxwf