Avatar billede simsen Mester
16. maj 2007 - 23:48 Der er 9 kommentarer og
1 løsning

sikkerhed i login

Hejsa,

Jeg ved ikke om det er dette rette forum at spørge i...men forsøger :-)

Jeg har et login med brugernavn og adgangskode, som jeg henter fra databasen (tester om brugeren findes og smider så op i session).

Nu ved jeg jo så, at når man ikke gør noget specielt, så er det nemt at hacke....men hvad man skal gøre, er så det jeg ikke ved.

Nogen der kan hjælpe mig med følgende kode og fortælle hvad, og ikke mindst hvorfor, jeg skal skrive, for at mit login er bedre beskytte?

min kode:
public Status GetBrugerLogin(string BrugerNavn, string Adgangskode, ref DataTable bruger)
    {
        Status status = Status.Failure;

        DataRow r = null;
        DataTable AItems = new DataTable();

        try
        {
            AItems.Columns.Add(new DataColumn("BrugerId", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("BrugerNavn", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Spaerret", Type.GetType("System.String")));

            command.CommandText = "SELECT BrugerId, BrugerNavn, Spaerret FROM Bruger WHERE BrugerNavn = @BrugerNavn AND Adgangskode = @Adgangskode";

            //command.Parameters.Clear();
            command.Parameters.Add(new OleDbParameter("@BrugerNavn", BrugerNavn));
            command.Parameters.Add(new OleDbParameter("@Adgangskode", Adgangskode));

            OleDbDataReader myReader = command.ExecuteReader();

            //går gennem tabellen og lægger ind i rækker
            while (myReader.Read())
            {
                r = AItems.NewRow();

                try
                {
                    r["BrugerId"] = (myReader["BrugerId"]);
                    r["BrugerNavn"] = (myReader["BrugerNavn"]);
                    r["Spaerret"] = (myReader["Spaerret"]);
                }
                catch
                { }

                //Tilføjer rækken til datatable
                AItems.Rows.Add(r);
            }

            myReader.Close();
            bruger = AItems;
            status = Status.Success;
        }
        catch
        { }

        return status;
    }

mvh
simsen :-)
Avatar billede neoman Novice
17. maj 2007 - 00:04 #1
Du kan/bør kryptere adgangskoder - her er en artikel som viser en måde at gøre det på, og som formentligt besvarer dine spørsgmål desangående :O

http://aspnet.4guysfromrolla.com/articles/103002-1.aspx
Avatar billede simsen Mester
17. maj 2007 - 00:14 #2
neoman

Johhhhh jeg forstår godt, jeg skal kryptere.......men jeg kan ikke vb.net.......så jeg får desværre ikke ret meget ud af eksemplet.

Det jeg mere tænkte på, var noget i retning af, at bruger en hacker felterne til at komme ind med masser af special tegn..... at jeg ved, det kan lade sig gøre, at lukke af for det i sin sql kode.....men som sagt, jeg ved ikke hvordan. For det hjælper krypteringen jo  ikke på?

mvh
simsen :-)
Avatar billede neoman Novice
17. maj 2007 - 00:20 #3
kald til .NET objekter/metoder er de samme i C# og VB - så det burde ikke gøre nogen forskel - resten er ikke svær at regne ud.

Dét, du vist bekymrer dig for er, "sql injection" - smid "sql injection .net" ind i google, og der kommer mange gode artikler i toppen. Mig bekendt så er dét, at du bruger parametre til at sætte værdier i dine INSERTS/UPDATES  en af de safeguards som hindrer en sql-injection.
Avatar billede simsen Mester
17. maj 2007 - 06:51 #4
Godmorgen neoman,

Det var det sidste jeg ledte efter :-)

Smid et svar og tak for hjælpen.

mvh
simsen :-)
Avatar billede dr_chaos Nybegynder
17. maj 2007 - 09:03 #5
Neoman har helt ret i det med parametre.
Brugen af dem forhindre i næsten alle tilfælde sql injection.
Du bør nok sikre dig at din sql kun returnerer en række.
Avatar billede simsen Mester
17. maj 2007 - 09:10 #6
dr_chaos

Det kan være, at jeg allerede gør det......men ved ikke helt hvad I mener med "brug parametre"?

mvh
simsen :-)
Avatar billede dr_chaos Nybegynder
17. maj 2007 - 09:31 #7
tjek dine 2 linier kode:
command.Parameters.Add(new OleDbParameter("@BrugerNavn", BrugerNavn));
            command.Parameters.Add(new OleDbParameter("@Adgangskode", Adgangskode));

De viser meget tydeligt at du bruger parametre :)
og god morgen :)
Avatar billede karsten_larsen Praktikant
17. maj 2007 - 13:03 #8
i princippet så vil en kryptering også hjælpe ved sql-injektion
:-) karsten_larsen
Avatar billede simsen Mester
17. maj 2007 - 14:43 #9
dr_chaos

Ja ja - undskylder mig med, jeg har lært alt for meget herinde den sidste månedstid, og forsøger at holde det hele i den øverste, men noget smutter altså indimellem. Tænkte nok jeg brugte det *griner*

mvh
simsen :-)
Avatar billede neoman Novice
17. maj 2007 - 15:32 #10
her et svar -:)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester