拒绝访问持久性 cookie

Posted

技术标签:

【中文标题】拒绝访问持久性 cookie【英文标题】:Deny access to a persistent cookie 【发布时间】:2011-03-08 06:48:04 【问题描述】:

如果有人从 Starbucks 登录电脑(例如)并且他们不小心选中了“记住我”选项,从而在该电脑上设置了一个持久性 cookie,有没有办法在不诉诸更改的情况下从服务器拒绝该 cookie web.config 中的 cookie 名称?

【问题讨论】:

我不明白这个问题。 “拒绝” cookie 是什么意思? @skaffman:为什么要添加 asp.net 标签?我在问题中找不到任何对 asp.net 的引用。 @GvS: web.config 是 ASP.NET 的东西,除非我错了。 @Skaffman:去喝咖啡 ;-) 我没有将它标记为 asp.net,(它只是出现在那里)。我的问题是我正在通过.net 中的 FormsAuthentication 处理登录。如果用户选择“记住我”,它会创建一个持久性 cookie,该 cookie 将永久登录该计算机上的用户。有没有办法停止这个过程? 【参考方案1】:

我通过在 web.config 中设置 machineKey 并在更改用户名/密码时更改它来解决这个问题(实际上是一段时间):

 Sub ChangeMachineKey()
    Dim commandLineArgs As String() = System.Environment.GetCommandLineArgs()
    Dim decryptionKey As String = CreateMachineKey(64)
    Dim validationKey As String = CreateMachineKey(128)
    'HttpContext.Current.Response.Write(decryptionKey + "<br />" + validationKey + "<hr />")
    Dim filename As String = HttpContext.Current.Server.MapPath("~/Web.config")
    Dim XmlReader As XmlTextReader = New XmlTextReader(filename)

    Dim xDoc As XmlDocument = New XmlDocument()
    xDoc.Load(XmlReader)
    XmlReader.Close()

    Dim Node As System.Xml.XmlNode = xDoc.SelectSingleNode("//configuration/system.web/machineKey")
    Node.Attributes.GetNamedItem("validationKey").Value = validationKey
    Node.Attributes.GetNamedItem("decryptionKey").Value = decryptionKey
    xDoc.Save(filename)
End Sub

Public Shared Function CreateMachineKey(ByVal numBytes As Integer) As String
    Dim Random As Byte() = New Byte(numBytes / 2 - 1) 
    Dim rng As New RNGCryptoServiceProvider()
    rng.GetBytes(Random)
    Dim machineKey As New System.Text.StringBuilder(numBytes)
    Dim i As Integer = 0
    Do While i < Random.Length
        machineKey.Append(String.Format("0:X2", Random(i)))
        i += 1
    Loop
    Return machineKey.ToString()
End Function

这会迫使每个人重新登录,但由于只有一个管理员帐户,它非常适合我!

【讨论】:

以上是关于拒绝访问持久性 cookie的主要内容,如果未能解决你的问题,请参考以下文章

nginx匹配url进行拒绝访问

Apache htaccess:如果 REQUEST_URI 与 cookie 值不匹配,则拒绝

cookie-cutter django nginx connect() 在连接到上游时失败(111:连接被拒绝),

IIS拒绝访问

echo 拒绝访问

win10开机拒绝访问