AntiForgery令牌__RequestVerificationToken中的有效字符

时间:2016-11-30 16:10:16

标签: c# asp.net-mvc-4 antiforgerytoken

我是ASP.NET MVC的新手。我想知道ASP.NET MVC中是否有一组唯一的有效字符用于加密的AntiForgeryToken。我需要在阅读时验证密钥。 我在web.config中指定了machineKey。

提前致谢。任何有关令牌验证的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:4)

当您查看课程MachineKey45CryptoSystem时,您将找到用于序列化防伪令牌的Protect方法:

public string Protect(byte[] data)
{
    return HttpServerUtility.UrlTokenEncode(MachineKey.Protect(data, MachineKey45CryptoSystem._purposes));
}

当你走得更深时,你会在HttpEncoder中找到方法:

internal string UrlTokenEncode(byte[] input) {
 ....
}

在它的身体里面:

base64Str = Convert.ToBase64String(input);

// Step 3: Copy in the other chars. Transform the "+" to "-", and "/" to "_"
for (int iter = 0; iter < endPos; iter++) {
    char c = base64Str[iter];

    switch (c) {
        case '+':
            base64Chars[iter] = '-';
            break;

        case '/':
            base64Chars[iter] = '_';
            break;

        case '=':
            Debug.Assert(false);
            base64Chars[iter] = c;
            break;

        default:
            base64Chars[iter] = c;
            break;
    }
}

总结 - 有效字符包括:字母,数字,-_