Avatar billede x-pander Nybegynder
27. maj 2006 - 00:43 Der er 14 kommentarer og
2 løsninger

Login-sikkerhed

God aften.

Er nybegynder og har fået stillet en opgave i skolen. Jeg skal lave et loginsystem hvor der skal være mulighed for forskellige rettigheder for brugerne.

Hvor ville i starte?
Og min største bekymring, hvordan går jeg det sikkert? Altså er det nok at ligge en Response.Redirect på den side som folk ikke må komme ind på, uden de passende rettigheder?

På forhånd tak. Er på lidt bar bund her.
Avatar billede innercitydk Nybegynder
27. maj 2006 - 00:49 #1
JEg ville lave en access database (let og enkel til test) med 4 felter. Brugerid, brugernavn, password og rolle. Herefter ville jeg kode databasetilgangen i codebehind filen for formen. Indsæt så et par tekstbokse for brugernavn/password, med hver deres labels til at udskrive fejl, f.eks når der ikke er udfyldt felter, eller brugernavnet ikke eksiterer/password er forkert. Herefter er det bare at kæde skidtet sammen ;) Jeg har lavet lignende mange gange. Jeg er ved at læse datamatiker og er tit blevet spurgt hvorfor jeg ikke bare bruger de indbyggede controls fra .net, men det er da lidt sjovere at lave det selv ;)

Vh
Avatar billede innercitydk Nybegynder
27. maj 2006 - 00:51 #2
Glemte lige omkring sikkerheden.. Hvis en bruger er logget ind gemmes hans rolle i en session. På den måde kan du let spørge på den session fra de andre sider der skal have rolle adgang, og hvis session er tom kan du sende dem videre til login siden. Simpelt men effektivt.
Avatar billede innercitydk Nybegynder
27. maj 2006 - 00:55 #3
Her er et hurtigt eksempel i C# (hvis det da er det du koder). Hvis brugeren logger korrekt ind skrives brugernavnet i en label under login knappen. Det er lavet som en user control. Du kan måske få lidt idéer fra det:

<%@ Control Language="c#" Debug="true"%>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data" %>
<link href="../../css/style.css" rel="stylesheet" type="text/css">


<script language="c#" runat="server">
void Page_Load(object sender, EventArgs e)
{
if(Session["bruger"]!=null)
    {
        Label4.Text=Session["bruger"].ToString();
        Button1.Enabled=false;
    }
}
void Button1_Click(object sender, EventArgs e)
{
    clearfejl();
    if(TextBox1.Text=="")
    {
        fejlbrugernavn.Text="Skal udfyldes";
    }
    if(TextBox2.Text=="")
    {
        fejlpassword.Text="Skal udfyldes";
    }
    if(TextBox1.Text!="" & TextBox2.Text!="")
    {
    clearfejl();
   
    string resultat;
    string resultat2;
    resultat="";
    resultat2="";
    OleDbConnection myConn;

    string strDSN = @"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=";
        strDSN += Server.MapPath("..//db//admin.mdb");
    myConn = new OleDbConnection(strDSN);

OleDbDataAdapter myAdapter = new OleDbDataAdapter("select navn,pass from admin where email='"+TextBox1.Text+"'", myConn );
            DataSet ds = new DataSet();
            myAdapter.Fill (ds, "admin" );
            foreach(DataRow dr in ds.Tables[0].Rows)
            {   
                resultat = dr["pass"].ToString();
                resultat2 = dr["navn"].ToString();                   
            }   
   
    if(resultat==TextBox2.Text)
    {
       
        Session["bruger"] = TextBox1.Text;
        Label4.Text=Session["bruger"].ToString();
        Button1.Enabled=false;
        clearfelter();
        clearfejl();
    }
    else if(resultat=="")
    {
        clearfelter();
        clearfejl();
        fejlbrugernavn.Text="Eksisterer ikke!";
    }
    else
    {
        clearfejl();
        TextBox2.Text="";
        fejlpassword.Text="Fejl i password!";       
    }
    }
}
public void logud(object sender, EventArgs e)
    {
        clearfelter();
        clearfejl();
        if(Session["bruger"] != null)
        {
            Session.Abandon();
            Response.Redirect("default.aspx?id=a0_0");
        }
        else
        {
            Label4.Text="Du er ikke logget ind!";
        }
    }
public void clearfelter()
{
        TextBox1.Text="";
        TextBox2.Text="";
}
public void clearfejl()
{
        fejlbrugernavn.Text="";
        fejlpassword.Text="";
}   
</script>
<form id="Form1" method="post" runat="server" class="login">

            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:Label id="Label1" Font-Name="Verdana" ForeColor="#CCCCCC" runat="server" Height="27px">Brugernavn:</asp:Label><br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:TextBox id="TextBox1" runat="server" Height="15" Width="104px"></asp:TextBox><br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:Label ID="fejlbrugernavn" Font-Name="Verdana" runat="server" ForeColor="#FF0000" Font-Size="7" /><br>
           
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:Label id="Label2" runat="server" ForeColor="#CCCCCC" Font-Name="Verdana" Height="27px">Password:</asp:Label><br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:TextBox id="TextBox2" TextMode="Password" Height="15" runat="server" Width="104px"></asp:TextBox><br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:Label ID="fejlpassword" Font-Name="Verdana" runat="server" ForeColor="#FF0000" Font-Size="7" /><br>
           
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:Button id="Button1" OnClick="Button1_Click"  runat="server" Height="20" Text="Log ind" Font-Size="7"></asp:Button>
            <asp:Button runat="server" id="LogUd" Text="Log ud" Height="20" Font-Size="7" OnClick="logud"/><br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:Label ID="Label4" runat="server" Font-Name="Verdana" Height="27px" ForeColor="#FF9933" Font-Size="7"></asp:Label>
</form>
Avatar billede x-pander Nybegynder
27. maj 2006 - 02:42 #4
Mange tak for dit svar. Det var til en del hjælp, men hvad gør jeg nu når jeg helt sikkert går på grund? Altså, jeg kan nemt se tingene for mig som du har forklaret, men altså jeg kan jo ikke kode det hele. Jeg har jo heller ikke uendelige points herinde...

Og forresten, vi har kun lært VB, så jeg er slet ikke med i det eksempel der... Lidt ærgeligt, det var ellers fedt du gad skrive et.

Lige en sidste ting, hvad var det en user control var? VI har garanteret fået der at vide, men det er umuligt at huske alt.
Avatar billede dr_chaos Nybegynder
27. maj 2006 - 10:21 #5
hvis du bruger asp.net 2.0
Er det meget nemmere at kigge her:
http://www.asp.net/QuickStart/aspnet/doc/security/default.aspx
Avatar billede snepnet Nybegynder
27. maj 2006 - 11:44 #6
Lidt sjovt - som chaos henviser til, så er det hele lavet fikst og færdig i asp.net 2.0.
Såfremt opgaven er at du skal kode det hele selv (hvilket self. ville være en smule fjollet når det nu er lavet i forvejen) - kan du jo passende lade dig inspirere af ASP.NET 2.0 modellen.
Men æhh... er det i 1.1 i skal lave det - eller i 2.0, og hvis det sidste er tilfældet... Går opgaven så ud på at i skal kigge på det der er lavet i 2.0, og så bare udnytte det?
Mvh
Avatar billede innercitydk Nybegynder
27. maj 2006 - 16:47 #7
Hej X-pander. Synd det ikke er c#, vb.net har jeg ikke kodet i ;) Der er mange hjælpsomme brugere herinde så mon ik du kan få hjælp til det meste i denne tråd.
Avatar billede snepnet Nybegynder
27. maj 2006 - 16:57 #8
innercitydk's eksempel kan oversættes til vb her:
http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx
(det er ikke nødvendigvis en 100%'s løsning, men den burde bringe dig langt hvad selve C# koden angår).
Mvh
Avatar billede x-pander Nybegynder
27. maj 2006 - 18:23 #9
Okay, tak for svarene alle sammen, især dr chaos' ekspempel. Det skal jeg lige nærstudere. Og ja, vi koder i 2.0, så det kan godt bruges.

Og ja, det er lidt ærgeligt at vi koder VB istedet for C#, da jeg synes der er meget tale omkring C#. Det kan godt være det bare er mig, jeg er heller ikke inde i det endnu helt.
Avatar billede innercitydk Nybegynder
27. maj 2006 - 18:44 #10
Jeg har kigget en smule på vb.net og jeg synes at sprogets syntaks er lidt snørklet i forhold til c#, som mest minder om en blanding af c++ og java. Det er dog værd at huske på hvis du kan eet sprog er det let at lære syntaksen for et andet. Hæng i ;)
Avatar billede x-pander Nybegynder
27. maj 2006 - 18:47 #11
Hehe I will ;)

Men faktisk synes jeg det er omvendt, altså der er bl.a. =! og generelt stort brug af kantparanteser. Synes det ligner Javascript meget.

Forresten, hvem vil have point?
Avatar billede innercitydk Nybegynder
27. maj 2006 - 18:59 #12
Du kan da eventuelt dele dem mellem os ;)
Avatar billede dr_chaos Nybegynder
27. maj 2006 - 20:00 #13
Jeg har intet mod at dele.
Jeg lavede jo ikke det store arbejde :O)
Avatar billede x-pander Nybegynder
27. maj 2006 - 21:49 #14
Hehe okay.
innercity, læg lige et svar også :)
Avatar billede dr_chaos Nybegynder
27. maj 2006 - 21:53 #15
han har også mere brug for points end mig :D
Avatar billede innercitydk Nybegynder
28. maj 2006 - 11:16 #16
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