2
我需要在WCF服務上的「幫助」URL上應用一組不同的安全策略。如何獲得WCF服務的完整URL ..即Session
或Session.svc
?修改CheckAccessCore(ctx)以允許WCF身份驗證的WCF幫助頁面
http://localhost:62302/Session.svc/help
http://localhost:62302/Session.svc/help/operations/GetSession
http://localhost:62302/Session/help
http://localhost:62302/Session/help/operations/GetSession
由於這是安全相關的,我需要審覈任何我對社區提出的問題。 The author here suggests,我只是檢查,如果字符串中的「幫助」結尾,然後盲目地允許該查詢(這顯然是不正確)
代碼剪斷
public class APIKeyAuthorization : ServiceAuthorizationManager
{
protected override bool CheckAccessCore(OperationContext operationContext)
{
if (this.IsHelpPage(operationContext.RequestContext.RequestMessage) || IsValidAPIKey(operationContext))
{
return true;
}
else
{
string key = GetAPIKey(operationContext);
// Send back an HTML reply
CreateErrorReply(operationContext, key);
return false;
}
}
private bool IsHelpPage(Message requestMessage)
{
return requestMessage.Headers.To.AbsolutePath.ToLower().EndsWith("help");
}
}
「作者在這裏建議我簡單地檢查一下字符串是否以」help「結尾,然後盲目地允許該查詢(顯然是不正確)」。是的,因爲'http://example.com/extremely-sensitive-page?now-i-pwn-you = help'應該免於安全策略。 – 2012-03-08 00:54:31
只是爲了澄清對於外行人而言......邁克正在諷刺;) – LamonteCristo 2012-03-09 15:57:19