Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于HttpCookies的问题_C#_Asp.net_Security_Cookies - Fatal编程技术网

C# 关于HttpCookies的问题

C# 关于HttpCookies的问题,c#,asp.net,security,cookies,C#,Asp.net,Security,Cookies,我需要生成一个具有秘密值的cookie,我是唯一知道它的人 想法? 更新 我有一个处理程序页面,每个人都可以使用这个页面,使用Ajax获取RSSFeed。我需要做的是防止其他人伪造HttpRequest并获取返回的数据。我尝试过使用身份验证表单,但没有什么好处。我也听说过nonce token,但我不知道如何使用它! 更新2 这正是我的问题 通常在cookie中存储敏感信息是一个坏主意,但是您可以使用只有在客户端未使用cookie时服务器才知道的密钥对其进行加密。您可以使用AesManage

我需要生成一个具有秘密值的cookie,我是唯一知道它的人
想法?

更新
我有一个处理程序页面,每个人都可以使用这个页面,使用Ajax获取RSSFeed。我需要做的是防止其他人伪造HttpRequest并获取返回的数据。我尝试过使用身份验证表单,但没有什么好处。我也听说过nonce token,但我不知道如何使用它!
更新2

这正是我的问题

通常在cookie中存储敏感信息是一个坏主意,但是您可以使用只有在客户端未使用cookie时服务器才知道的密钥对其进行加密。您可以使用
AesManaged
类对其进行加密,并将密钥存储在安全的地方,例如具有锁定ACL的文件

下面是一个如何做到这一点的示例

public string GetEncryptedCookieValue(string cookieKey)
{
    using (var aes = new AesManaged())
    {
        aes.Key = new byte[0];//TODO: Replace this with getting the secret key.
        aes.IV = new byte[0];//TODO: Replace this with getting the secret IV.
        var cookie = Request.Cookies[cookieKey];
        var data = Convert.FromBase64String(cookie.Value);
        using (var transform = aes.CreateDecryptor())
        {
            var clearData = transform.TransformFinalBlock(data, 0, data.Length);
            return Encoding.UTF8.GetString(clearData);
        }
    }
}

public void SetEncryptedCookieValue(string cookieKey, string value)
{
    using (var aes = new AesManaged())
    {
        aes.Key = new byte[0];//TODO: Replace this with getting the secret key.
        aes.IV = new byte[0];//TODO: Replace this with getting the secret IV.
        var clearData = Encoding.UTF8.GetBytes(value);
        using (var transform = aes.CreateEncryptor())
        {
            var data = transform.TransformFinalBlock(clearData, 0, clearData.Length);
            Response.SetCookie(new HttpCookie(cookieKey, Convert.ToBase64String(data)));
        }
    } 
}

我要再次强调,在cookie中存储敏感信息是一种不鼓励的做法。如果您将问题更新为您想要完成的内容,也许有一个更合理的解决方案。

通常在cookie中存储敏感信息是一个坏主意,但您可以使用只有在客户端未使用cookie时服务器才知道的密钥对其进行加密。您可以使用
AesManaged
类对其进行加密,并将密钥存储在安全的地方,例如具有锁定ACL的文件

下面是一个如何做到这一点的示例

public string GetEncryptedCookieValue(string cookieKey)
{
    using (var aes = new AesManaged())
    {
        aes.Key = new byte[0];//TODO: Replace this with getting the secret key.
        aes.IV = new byte[0];//TODO: Replace this with getting the secret IV.
        var cookie = Request.Cookies[cookieKey];
        var data = Convert.FromBase64String(cookie.Value);
        using (var transform = aes.CreateDecryptor())
        {
            var clearData = transform.TransformFinalBlock(data, 0, data.Length);
            return Encoding.UTF8.GetString(clearData);
        }
    }
}

public void SetEncryptedCookieValue(string cookieKey, string value)
{
    using (var aes = new AesManaged())
    {
        aes.Key = new byte[0];//TODO: Replace this with getting the secret key.
        aes.IV = new byte[0];//TODO: Replace this with getting the secret IV.
        var clearData = Encoding.UTF8.GetBytes(value);
        using (var transform = aes.CreateEncryptor())
        {
            var data = transform.TransformFinalBlock(clearData, 0, clearData.Length);
            Response.SetCookie(new HttpCookie(cookieKey, Convert.ToBase64String(data)));
        }
    } 
}

我要再次强调,在cookie中存储敏感信息是一种不鼓励的做法。如果您将问题更新为您想要完成的内容,可能有一个更合理的解决方案。

为什么要在cookie中发送秘密值?您的问题写得不正确。指定一些更精确的内容,您需要其他信息。如何访问机密值?仅在服务器端还是在javascript中?机密值应存储多长时间?只要页面被打开或无限期(永久cookie)?为什么您想要/需要cookie中的秘密值?也许还有别的解决办法。请澄清!啊!!所以你不需要饼干->你需要代币!我建议从阅读以下内容开始:为什么要在cookie中发送一个秘密值?您的问题写得不正确。指定一些更精确的内容,您需要其他信息。如何访问机密值?仅在服务器端还是在javascript中?机密值应存储多长时间?只要页面被打开或无限期(永久cookie)?为什么您想要/需要cookie中的秘密值?也许还有别的解决办法。请澄清!啊!!所以你不需要饼干->你需要代币!我建议从阅读以下内容开始: