Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Säker inloggning med asp och access

Postad 2004-05-03 av Stefan Ekström i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 8131, Betyg: 57%

Förord

I den här artikeln ska jag beskriva hur man kan göra ett inloggningsscript som använder sig av en accessdatabas för att verifiera användaren. Jag kommer även att sätta ett par sessioner som kan vara bra att ha när man är inloggad. Det finns många anledningar till varför man ska ha en inloggning och att göra det på ett sätt där man försvårar för andra att lyckas hacka sig in.
Innehåll
  » Databasen
  » Logga ut användare
Om man håller på att bygga upp en websajt så vill man oftast ha en administrationssida där man dynamiskt kan förändra innehållet på sidan och eftersom man inte vill att vem som helst ska kunna ändra innehållet så är det här sättet alldeles utmärkt.

I det här exemplet så kommer jag att använda mig av 4 sidor och en databas. Den första sidan är själva inloggningsformuläret, den andra innehåller kopplingssträngen till databasen, den tredje är själva inloggningsscriptet och den sista sidan kommer man till efter inloggningen.

Formuläret (loginform.asp)


Logga in till min lösenordsskyddade sida

Logga in



Anvnamn: <INPUT TYPE=”text” NAME=”txtUsername” SIZE=”15”>


Lösenord: <INPUT TYPE=”password” NAME=”txtPassword” SIZE=”15”>









Ovanstående kod är bara vanlig HTML för att skapa inloggningsformuläret. Målet för formuläret är ”validate.asp” och det är själva delen som verifierar användaren och skickar vidare vid lyckad inloggning. Eftersom jag kommer att skicka tillbaka användaren hit vid en misslyckad inloggning och även efter en lyckad utloggning så kommer jag att lägga in 2 texter som visas beroende på vilken händelse som kommer att ske.


<%If Request("error") = "notvalidated" Then%>
<FONT COLOR="#FF0000">Inloggningen misslyckades, försök igen</FONT>
<%End If%>

<%If Request(“do”) = “logout” Then%>
<FONT COLOR=”#FF0000”>
Du är nu utloggad, för att inte andra ska kunna komma in

genom att gå bakåt så är det rekommenderat att stänga webläsaren
<%End If%>


Placera koden där du vill ha meddelandet, ett lämpligt ställe är under så att den visas under formuläret.






Databasen


Skapa nu en databas om du inte har någon befintlig. I den här artikeln så kommer jag att skapa databasen Inloggning.mdb som jag lägger i en mapp som heter db. Fälten skapar jag i designläge och ser ut som följande:














































FältnamnDatatypBeskrivning
userIDRäknareEn räknare så att man inte får 2 identiska poster
usernameTextAnvändarens användarnamn
passwordTextAnvändarens lösenord
FullNameTextAnvändarens fulla namn
WebsiteTextPersonlig sida som varje familjemedlem kan ha
DateTextDatum då senaste inloggning skedde
IPTextIP-nummer från senaste inloggning
InloggadTextMarkerar om man är inloggad eller inte


Tabellen döper jag till tblUsers och userID definieras som primärnyckel.

Nästa steg är att skapa sidan som innehåller kopplingen till databasen så att vi sedan ska kunna skriva vårat inloggningsscript.

Kopplingen (dbconn.asp)

<%
Function connect()
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= "& server.MapPath("db/Inloggning.mdb") & ";"
Set connect = objConn
End Function

set objConn = Connect()
%>


I den här koden så sätts en funktion som heter connect. En variabel som vi kallar objConn deklareras och instansieras som ett nytt Objekt. Det är alltid bra att ha för vana att skriva ut variabelnamn på ett korrekt sätt. Efter att objConn har skapats som ett nytt Objekt så öppnas den med kopplingssträngen till databasen.
Vi avslutar med att associera funktionsnamnet med Objektet.

Verifieringen av användaren (validate.asp)
Nu när formuläret, kopplingssträngen och databasen är klar så är det dags att sköta om själva själva inloggningsförfarandet.

Till att börja med så måste vi förhindra att innehållet i http-huvudet skickas till klienten för tidigt, detta gör vi med Response.Buffer=True och efter det så inkluderas kopplingssträngen som vi tidigare skrev. Inkludera den med <!-- #include virtual="dbconn.asp" --> eller <!-- #include file="dbconn.asp" -->. Båda sätten går bra, men det är rekommenderat med virtual. Med virtual så börjar man med / för att starta i roten och sen ange sökvägen till filen, ex <!-- #include virtual="/inc/conn/dbconn.asp" --> för att leta I mappen inc som ligger i roten och undermappen till den där filen finns.

Nu när själva verifieringen börjar så deklarerar man de variabler som behövs och efter det hämtar in informationen från textfälten i loginform.asp


<% Response.Buffer=True %>


<%
'Deklarera några av variablerna
Dim strAnvNamn, strLosen, objConn, Var, objRS, IP, Datum

Set Var = Request.ServerVariables
IP = Var("REMOTE_ADDR")
Datum = Date

'Hämta info från formulären
strAnvNamn = FriendlySQL (Request.Form ("txtUsername"))
strLosen = FriendlySQL (Request.Form ("txtPassword"))


Nu har vi satt våra variabler och även lagt in IP-adressen i variabeln. Därefter så hämtas informationen från textfälten in och placeras i respektive variabel. I functions.asp har jag en funktion som eliminerar s.k. SQL Injections som kan smälla SQL-satsen och det är FriendlySQL som ser till att det händer.


'Öppna en koppling till DB
SET objConn = connect()

'Kör SQL och sätt ett RecordSet
Dim SQL
SQL = "SELECT * FROM tblUsers WHERE username = '" & strAnvNamn _
& "' AND password = '" & strLosen & "'"
'Response.write SQL
'Response.End
Set objRS= objConn.Execute(SQL)



Nu öppnar vi den koppling till databasen som vi tidigare skapade och inkluderade I filen. Efter det så är det dags att kolla med en SQL-sats om användarnamnet och lösenordet som finns i variabeln överensstämmer med informationen som finns i databasen.

För att kolla så att användaren finns så använder vi en If-sats för att verifiera. Finns användaren så når inte RS slutet på filen eftersom en användare har hittats, annars så blir RS falskt och villkoret uppfylls inte så användaren kan skickas tillbaka till inloggningssidan för att kontrollera sina uppgifter.


'Sätt Sessionsvariabler och verifiera
If NOT objRS.EOF THEN
Session("inloggad") = False
Session("UID") = objRS("userID")
Session("Name") = objRS("FullName")
Session("Datum") = objRS("Datum")
Session("IP") = objRS("IP")


'Uppdatera databasen
objConn.Execute("Update tblUsers SET IP= '" & IP & "', Datum = '" & Datum & "' WHERE userID= " & Session("UID") &"")

'Kolla om man ska vidare eller komma till en errorsida
Response.Redirect "index.asp"
Else
Response.Redirect "loginform.asp?error=notvalidated"
End If


Det vi nu har gjort med den här If-satsen är att bekräfta användaren. Finns användaren så sätts 4 sessioner, en för användarID-t, Användarens namn och även Datum och IP-nummer. Sedan uppdateras tabellen med Datum för att man ska kunna kolla in när man senast loggade in och vilket IP man kom från. Och när IF-satsen blev sann så loggades man in och skickas därefter till den skyddade sidan (index.asp). Om inloggningen misslyckades så skickas man tillbaka till inloggningsformuläret med en sträng som talar om att felmeddelandet ska visas som vi skapade i loginformuläret.

Inloggningen avslutas med att man stänger de objekt som man öppnade.


objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>


Lyckad inloggning (index.asp)

Lyckas inloggningen så har du nu kommit till indexsidan och kan börja skapa det innehåll som du vill hålla skyddat. När du är inloggad efter att ha gått igenom den här artikeln så kommer du att se olika saker beroende på vad som finns inlagt i databasen.

Antingen kommer detta att visas

Eller detta, lägg märke till det som står under IP-numret.

Koden för detta är:



<%Set user=objConn.Execute("Select * From tblUsers WHERE userID="& Session("UID") & "")%>



Välkommen <%=Session("Name")%>, Du loggade in <%=user("Datum")%> , från IP-nummer <%=user("IP")%>

<HR>

<%If Web <> "" Then%>
Gå till din sida på <a href="<%=Web%>"><%=Web%>
<%Else%>
Du har inte angett någon sida som är din egna än
<%End If%>


För att ingen annan ska kunna använda din session

så är det rekommenderat att logga ut först.





De två första raderna inkluderar kopplingen till databasen och den andra är en liten ”godislåda” där man kan stoppa in alla sina variabler som man vill använda och raden efter väljer allt i databasen där den aktuella användaren är inloggad. Resten är bara vanlig HTML förutom ASP-n som visar vem som är inloggad, när och från vilket IP. Raden efter kollar om kolumnen Website är tom eller inte. Är den inte tom så visas länken till användarens sida, annars så skrivs ett meddelande ut. Till sist så avslutar jag med utloggningen ”logout.asp”.




Logga ut användare

När man ska logga ut så räcker det i vaniga fall bara med enbart en rad och det är Session.Abandon som dödar alla aktiva sessioner. I mitt exempel så har jag förutom det en rad som skickar vidare användaren till loginformuläret med ett meddelande om att man är utloggad och lite kod som tar bort bocken i databasen som visar att man är inloggad. Koden för min logout.asp är:



<%
Session.Abandon

Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
SET objConn = connect()
objConn.Execute("Update tblUsers SET inloggad = False WHERE userID="&Session("UID")&"")

Response.Redirect "loginform.asp?do=logout"
%>


Nu har du lärt dig hur du skapar en koppling till atabasen och hur du använder den för att logga in till en sida. Det här är bara grunden så det finns mycket mer man kan göra för att förbättra säkerheten, hitta nya användningsområden med mera.

Obs! Detta dokument innehåller fel i html-taggar, en sluttagg saknas. Vänligen korrigera dessa!
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 158
27 952
271 704
723
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies