Avatar billede c-sharp Nybegynder
23. maj 2005 - 15:08 Der er 25 kommentarer og
1 løsning

Opbevaring af databaseadgang

Jeg skal have lavet et system hvor man kan logge ind et centralt sted, i forbindelse med at man logger ind skal systemet have en databaseadgang ("SERVER=test.ms-sql.dk; Database=test;UID=bruger;Pwd=1234") til denne brugers database. Hvordan opbevare jeg denne database adgang på den mest sikre måde?

(Man logger ind via en central database)
Avatar billede arne_v Ekspert
23. maj 2005 - 15:10 #1
client har ikke adgang til server side kode så umiddelbart burde der ikke være
noget problem
Avatar billede arne_v Ekspert
23. maj 2005 - 15:11 #2
hvis du skal bruge forskellige database login oplysninger per bruger
kan du gemme dem i session
Avatar billede the_party_dog Nybegynder
23. maj 2005 - 15:13 #3
Jeg benytter altid web.config til at opbevare SQL connection strings.

<appSettings>
<add key="DD-TEST" value="data source=test.ms-sql.dk;initial catalog=test;password=1234;persist security info=True;user id=Bruger;packet size=4096"/>       
</appSettings>

Så på din side skal du enten skrive using using System.Configuration; eller noget ala det samme, hvis du bruger VB.NET.

Nu kan du på din side, for fat i den streng sådan her.

string Database_Test = ConfigurationSettings.AppSettings["DD-TEST"];
Avatar billede c-sharp Nybegynder
23. maj 2005 - 15:24 #4
the_party_dog: Normalt opbevare jeg også min connection string i web.config, men i det har tilfælde har hver bruger deres egne database, dvs at en central database retunere denne connction string.

arne_v: jeg har også overvejet at bruge session, men session har kun en leve tid på x antal minutter og da man først skal blive logget ud af systemet når man trykker "log ud" så dur denne løsning ikke. Jeg har også overvejet at bruge Cookies men der ligger tekst jo i plain tekst så det er jo ikke særligt sikkert.
Avatar billede arne_v Ekspert
23. maj 2005 - 15:28 #5
øh - hvis sessionen timer ud skal de vel logge ind igen alligevel ??

jeg formoder iøvrigt at:
  - det er X minutter siden sidste request
  - at X kan konfiguereres
Avatar billede c-sharp Nybegynder
23. maj 2005 - 15:35 #6
mit login fungere ved hjælp af ASP.NET authentication i web.config den kan man sætte til ikke at logge af efter a antal minutter. ja x kan konfiguereres men det belaster serveren at sætte den for højt.
Avatar billede arne_v Ekspert
23. maj 2005 - 15:40 #7
"ASP.NET authentication i web.config" bruger vel også session ??
Avatar billede c-sharp Nybegynder
23. maj 2005 - 15:42 #8
Jeg tror at den bruge en cookie.
Avatar billede arne_v Ekspert
23. maj 2005 - 15:44 #9
en session er et logisk begreb

den implementeres ved hjælp af enten cookie eller URL rewriting
Avatar billede c-sharp Nybegynder
23. maj 2005 - 15:57 #10
En session er en mere avanceret måde at opbevare data på end en cookie. En session kan indholde objecter det kan en cookie ikke. En cookie sætter man en levetid på når man opretter den, det gør man ikke på en session.
Avatar billede arne_v Ekspert
23. maj 2005 - 16:00 #11
nu snakker vi om den Hashtable der er tilnyttet sessionen og tilgåes med Session[key]

men den hænger sammen med sessionen
Avatar billede arne_v Ekspert
23. maj 2005 - 16:07 #12
vit postulat vil stadigt være at hvis sessionen timer ud så dine connection
oplysninger i session forsvinder så vil du altid blive bedt om at logge ind
igen da den side af sessionen også er forsvundet
Avatar billede nielle Nybegynder
23. maj 2005 - 17:42 #13
Der er da ikke noget i vejen for at opbevare mere end een connection-streng i web.config. Du kan selvfølgelig ikke kalde dem for "ConnStr" alle sammen - de skal hedde noget forskelligt.
Avatar billede c-sharp Nybegynder
23. maj 2005 - 19:49 #14
nielle: Det kunne jeg også, men jeg ville helst hvis jeg kunne få den fra database hvor de andre oplysninger om bruger er.

arne_v:

Jeg bruger følgende funktion for at logge ind:

[C#]
public static void RedirectFromLoginPage(
  string userName,
  bool createPersistentCookie
);

creatPersistentCookie har jeg sat til true!

Parameters
userName
Name of the user for cookie authentication purposes. This does not need to map to an account name and will be used by URL Authorization.
createPersistentCookie
Specifies whether or not a durable cookie (one that is saved across browser sessions) should be issued.
Avatar billede c-sharp Nybegynder
26. maj 2005 - 07:24 #15
Er der mere hjælp her?
Avatar billede arne_v Ekspert
26. maj 2005 - 10:12 #16
det er ikke manglende vilje, men jeg tror at vi snakker forbi hinanden
Avatar billede c-sharp Nybegynder
26. maj 2005 - 10:30 #17
Ja det kan godt være at det er problemet :-)

Men hvis jeg gør følgende:

Logger ind og beder systemet om at huske mine oplysninger (RedirectFromLoginPage("brugernavn", true))

Laver den her session til min database forbindelse
Session["dbConn"] = "SERVER=test.ms-sql.dk; Database=test;UID=bruger;Pwd=1234";

og har været væk fra systemet i f.eks. 30 min..

Så kan jeg fint arbejde vidre når jeg kommer tilbage lige indtil jeg skal connecte til databasen så går det galt.
Avatar billede burningice Nybegynder
28. maj 2005 - 09:58 #18
så må du vel bare have følgende tjek når du henter din connString:

string GetConnString() {
  if (Session["dbConn"] == null)
      LoadConnString();
  return (string)Session["dbConn"];
}

void LoadConnString() {
  // Opret forbindelse til din master-database
  objCommand.CommandText = "SELECT dbConn FROM tblConnectionStrings WHERE user = '"+ User.Name +"'";

  Session["dbConn"] = (string)objCommand.ExecuteScalar();

  // Luk din forbindelse
}
Avatar billede c-sharp Nybegynder
13. juni 2005 - 13:39 #19
Kan jeg ikke ligge det kode et centralt sted så jeg kan tilgå det fra alle mine sider? En statisk metode dur ikke da jeg bruger User.Identity.Name..
Avatar billede burningice Nybegynder
25. juni 2005 - 13:42 #20
Hvis du lader alle dine sider arve fra en BasePage-klasse kan du lægge metoden deri
Avatar billede burningice Nybegynder
25. juni 2005 - 13:43 #21
og forresten, så vil en statisk metode sagtens du'... du skal bare tilgå dit user-object på denne måde:

HttpContext.Current.user.Identity.Name
Avatar billede c-sharp Nybegynder
28. juni 2005 - 08:43 #22
Hvad vil være mest rigtigt, at bruge en statisk metode eller en nedarvning?
Avatar billede burningice Nybegynder
28. juni 2005 - 15:13 #23
i dette tilfælde vil jeg godt mene du kan bruge din funktion som statisk, og det vil måske næsten være det pæneste faktisk. Du skal bare sørge for at tilgå din session og user-object gennem HttpContext.Current
Avatar billede c-sharp Nybegynder
28. juni 2005 - 16:49 #24
Tak for hjælpen, smid et svar så er der point...
Avatar billede burningice Nybegynder
28. juni 2005 - 17:15 #25
:) svar
Avatar billede c-sharp Nybegynder
03. august 2005 - 11:27 #26
Undskyld at pointne først kommer nu!
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