Запретить доступ к постоянному cookie - PullRequest
0 голосов
/ 08 марта 2011

Если кто-то входит в систему на компьютере из Starbucks (например) и случайно выбирает опцию «запомнить меня», тем самым устанавливая постоянный файл cookie на этом компьютере, есть ли способ отменить этот файл cookie с сервера, не прибегая к изменению имя файла cookie в файле web.config?

1 Ответ

0 голосов
/ 04 августа 2011

Я решил это (некоторое время назад на самом деле), установив machineKey в web.config и изменив его при изменении имени пользователя / пароля:

 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

Это вынуждает всех войти снова, но с тех порэто только одна учетная запись администратора, она отлично работает для меня!

...