我正在按照OCSP应答机中定义的规则创建一个RFC 6960。
因此,我需要实现一个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 async Task<IActionResult> Get(string encoded)
{
var ocspHttpRequest = await Request.ToOcspHttpRequest();
var ocspHttpResponse = await OcspResponder.Respond(ocspHttpRequest);
return new OcspActionResult(ocspHttpResponse);
}
...
}但是,当ASP.NET被编码时,它不会找到或返回路由的坏请求,这是必要的。
base64中的Ocsp请求(注意它有两行):
MEkwRzBFMEMwQTAJBgUrDgMCGgUABBR1vr6HF4T/UsADPXoNr6lpJ1JRowQUJfgJ
6MaP2huu1lFzJOFlkswOcM8CCB6PD3SWpxwfbase64 ocsp请求的Url编码:
MEkwRzBFMEMwQTAJBgUrDgMCGgUABBR1vr6HF4T%2FUsADPXoNr6lpJ1JRowQUJfgJ%0A6MaP2huu1lFzJOFlkswOcM8CCB6PD3SWpxwf我怎样才能解决这个问题?
发布于 2018-06-25 14:46:04
Base64编码产生的某些字符在URL路径中无效。这是可以改变的,但是这样做是有原因的:也就是为了安全。如果您允许这些字符,您将打开自己的许多攻击,否则是不可能的。
但是,您可以将其作为查询字符串的一部分传递。这样处理就不会有错误了。
发布于 2021-04-21 07:32:39
有一个解决办法,您可以将{编码}更改为{*编码},然后它将接受不允许的其他符号。
https://stackoverflow.com/questions/51025751
复制相似问题