我有一个 Web API 服务,其中包含所有需要安全性的方法,这些方法通过 CustomAuthenticationHandler 处理程序中实现的逻辑使用以下内容进行处理:
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//Security Logic
//Return Task
}
但是,我有一种不需要安全性的公开方法。我试图阻止仅针对这种不需要任何安全信息的方法提供单独的服务。以下是我如何做到这一点,它的工作原理:
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.RequestUri.AbsolutePath == "/api/MyPublicNoSecurityNeededMethod")
return base.SendAsync(request, cancellationToken).ContinueWith(task => task.Result);
//Security Logic
//Return Task
}
因此,我基本上早早返回,并且从不通过安全逻辑。我想知道这种方法是否有任何问题,或者是否有更安全的方法来处理这种需求?如果答案是 URL 可以被欺骗,那么这种查看请求的方法可能会打开一个后门,等等。这就是我想要确定的。如果我实现此方法的方式不是解决此需求的正确方法,我只是不想将我的其他方法暴露给漏洞。