Har du evt et eksempel? Jeg har fuldstændig på bar bund. Jeg har altid haft andre til at lave sikkerheden for mig, så jeg ved slet ikke hvor jeg skal starte.
Evt keywords til at søge på Google med ville også hjælpe.
Imports System Imports System.Text Imports System.Security.Cryptography
Namespace E Public Class Util Public Shared Function SHA256(pw As String) As String Dim alg As HashAlgorithm = New SHA256Managed() Dim b As Byte() = Encoding.UTF8.GetBytes(pw) alg.TransformFinalBlock(b, 0, b.Length) Return BitConverter.ToString(alg.Hash).Replace("-", "") End Function End Class Public Class Program Public Shared Sub Main(args As String()) Console.WriteLine(Util.SHA256("Hemmmeligt")) Console.WriteLine(Util.SHA256("Super hemmmeligt")) Console.ReadKey() End Sub End Class End Namespace
<asp:CompareValidator id="valCompare" runat="server" ControlToValidate="TBNewPsw" ControlToCompare="TBConfirmPsw" Operator="Equal" ErrorMessage="Your confirm password has to be the same as the new password" Display="dynamic"></asp:CompareValidator>
Kode: Dim alg As HashAlgorithm = New SHA256Managed() Dim b As Byte() = Encoding.UTF8.GetBytes(TBNewPsw.Text) alg.TransformFinalBlock(b, 0, b.Length) Dim SHAPassword As String = BitConverter.ToString(alg.Hash).Replace("-", "")
Dim UserID As Integer = SharedFunction.Cookie_UserID()
MyCommand = New SqlCommand
MySQL = "UPDATE ES_PartnernetUser Set ES_PartnernetUserPassword=@ES_PartnernetUserPassword WHERE ES_PartnernetUserID = " & UserID MyCommand.Parameters.AddWithValue("@ES_PartnernetUserPassword", SHAPassword) MyCommand.CommandText = MySQL MyCommand.Connection = MyConnection Try MyCommand.ExecuteNonQuery() Catch ex As Exception LblMessage.Text = ex.ToString & "<br/><br/><br/>" LblMessage.Visible = True End Try
Lidt blandede betragtninger: 1) hvis du skifter password hashing på et eksisterende site skal du i en overgangsperiode kunne håndtere begge algoritmer (ikke så svært du kan detecte MD5 eller SHA256 via længden) 2) når du bruger parameters til password så bill ejeg også bruge parameter til userid 3) jeg ville nok lave en kodemæssig validering fremfor regex, fordi det giver mere fleksibilitet og er mindre kryptisk
1) Ok 2) Kan du lige forklare det med parametre nærmere 3) Det er den form for validering der anbefales når man arbejder med asp.net - men det kommer vel an på hvem man snakker med
Du har en SQL sætning hvor du har password og userid. Du bruger parameter til password men ikke til id. Jeg synes at du skulle bruge parameter til begge.
Dim intLoginStatus As Integer = 0 If MyDS.Tables(0).Rows.Count = 0 Then 'user does not exist intLoginStatus = -1 'Exit Sub Else Dim CurrentUserPassword As String = MyDS.Tables(0).Rows(0).Item("mypassword") Dim PasswordLength As Integer = CurrentUserPassword.Length()
If PasswordLength = 32 Then Dim MD5Password As String = FormsAuthentication.HashPasswordForStoringInConfigFile(TBLogin.Text, "MD5") If MD5Password <> MyDS.Tables(0).Rows(0).Item("mypassword") Then 'change password intLoginStatus = 5 Else ' User ok and data has been fetched intLoginStatus = 1 End If ElseIf PasswordLength = 64 Then Dim alg As HashAlgorithm = New SHA256Managed() Dim b As Byte() = Encoding.UTF8.GetBytes(TBLogin.Text) alg.TransformFinalBlock(b, 0, b.Length) Dim SHAPassword As String = BitConverter.ToString(alg.Hash).Replace("-", "")
If SHAPassword <> MyDS.Tables(0).Rows(0).Item("mypassword") Then 'wrong password intLoginStatus = -2 Else ' User ok and data has been fetched intLoginStatus = 1 End If End If
End If 'LblErrorMessage.Text = intLoginStatus
Select Case intLoginStatus Case 1 LblErrorMessage.Text = "Correct Login" Case -1 LblErrorMessage.Text = "The username you entered does not exist. Try again, please" Case -2 LblErrorMessage.Text = "The password you entered is wrong or does not belong to this account. Try again, please" Case 5 LblErrorMessage.Text = "Change Password" End Select End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.