Til vores hjemmeside, er der oprette en ASP login side. Meningen er man skal komme direkte ind på ASP side, men vi blive bremset af et password pop-up vindue.
Mappen som indeholder ASP scriptet, er NTFS beskyttet med følgende:
Full Control / Administrators, Creator Owner, Everyone Change / IUSR_(Internet Guest Account) Read / System
‘Directory Security’ i ‘Virtual Directory’ mappen er sat til ‘Basic Authentication’ plus ‘Allow Anonymous’ hvori password sync er disable.
Hvordan kommer vi direkte ind på siden, uden den irriterende pop-up??
Har du en anderledes konfiguration på site niveau ? Hvis du eks. kun har Basic authentication på website niveau og de beskrevne rettigheder på et underliggende virtual directory, kan det være problemet.
Ja, hvis det omtalte virtual directory ligger under default website.
Men når jeg lige nærlæser dit spørgsmål, er problemet her: password sync er disable - den går ikke. Hele ideen med anonymous access er, at requests mappes den til en bruger der er specificeret. Da du har fjernet password sync, har IIS ikke password for IUSR_xxx og derfor skal det angives.
Du har fuldstændig ret, den bruger skal ALDRIG have administrative rettigheder, med mindre du vil give alle der falder over din server administrative rettigheder :-)
Vælger jeg at enable password sync i anonymous så opstår denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
/kundedata/header.inc, line 6
På M$’s sider fandt jeg op til flere artikler som foreslår at slå password sync fra.
Den fejl skyldes enten at .mdb filen er åbent i Microsoft Access, med ekslusiv lock eller at du ikke har skriverettigheder til .mdb filen.
Den mest sandsynlige er den sidste.
Du kan også godt slå password sync fra, men så kan du bare ikke køre med anonymous access. I IIS5 hedder feltet "Allow IIS to control password" og det giver måske mere mening end "password sync". Det handler om, hvorvidt IIS kender passwordet på den bruger du mapper anonyme requests til, eller om IIS skal prompte brugeren for det.
IUSR_xxx har change rettigheder til mappen med .mdb filen og mappen med asp koden. Ved ikke om det er bedst at starte forfra, for at få bedre overblik?
Jeg har prøvet flere varianter med at slå ’password sync’ til og fra. Det virker som om ’fejlen’ er at finde et andet sted. Er næsten overbevist om det er et rettighedsproblem.
Pave -> Jeg vil foreslå at du starter helt fra bunden. Lav et "hello world" html dokument. Ingen asp java eller lign. men ren HTML og se om det virker/ du kan "se" det i din browser.
'nulstil loginAntal første gang man forsøger login if request.queryString("fundet")= "" and id = "" then if session("loginAntal") < 1 then session("loginAntal") = 0 end if end if
'hent evt. variablen 'fundet', som er sat på ved redirect
if request.queryString("fundet")="fejl1" then response.write "<FONT COLOR=""Red""><h3>Det indtastede brugernavn eksisterer ikke</h3></FONT><P>" id = 0 end if
if request.queryString("fundet")="fejl2" then response.write "<FONT COLOR=""Red""><h3>Det indtastede password er forkert</h3></FONT><P>" id = 0 end if
if request.queryString("fundet")="fejl" then response.write "<FONT COLOR=""Red""><h3>Der er opstået en fejl - kontakt Millward Brown</h3></FONT><P>" id = 0 end if if session("loginAntal") = 3 then response.redirect("loginFejl.htm") end if 'Hvis brugeren har ønsket at logge på If id = 1 then
SQL_Kald="SELECT * FROM Bruger Where usrnavn like '"&bruger&"'"
'Erklær og opret MitRecordset
Set MitRecordset=Server.CreateObject("ADODB.Recordset")
'Jeg åbner min db med cursor Static, så jeg kan få et tal på, hvor mange record, der læses til mit recordsset.
MitRecordset.open SQL_Kald,MinForbindelse,3 'Hvis der ikke findes nogle match på det indtastede password og brugernavn - returner 'og skriv fejlmeddelelse
If MitRecordset.recordcount = 0 then 'Brugernavnet eksisterer ikke - luk databasen og returner med en fejl ' Luk recordsettet MitRecordset.Close
' Afslut med frigørelse af objektet MitRecordSet set MitRecordset = Nothing
' Luk forbindelsen MinForbindelse.Close
' Afslut med frigørelse af objektet MinForbindelse set MinForbindelse = Nothing session("loginAntal")=session("loginAntal") + 1 response.redirect("login.asp?fundet=fejl1") End if
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
Den fejl du får nu - og jeg antager at du ikke har fået nogen login prompt - som jeg skrev tidligere, at filen enten er åbnet i Access eller at IUSR_ikke har skriverettigheder til .mdb filen.
Fint. Så er vi altså ude over problematikken med login vinduet ??
Har du oprettet odbc'en som system dsn ?? eller kører du dsn-less
dette er min connect.asp som jeg includerer når jeg skal bruge en connection <!-- Connect start --> <% dim conn, strDSN Set Conn = Server.Createobject("ADODB.Connection")
Jeg tror ikke det er godt at have 2 dsn'er, jeg vil mene du skal slette userdsn'en
Nu kan jeg ikke lige huske hvordan det er med NT4 men er der ikke en "test connection" knap under configuration af dsn ?? Hvis du har den så prøv lige at se om du kan connecte derfra.
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
Hvis jeg nu disabler 'password sync' fra anonymous access, så dukker det velkendte pop-up vindue frem. Indtaster jeg mit user/pass (admin) kommer jeg direkte videre til den rigtige ASP login side.
Da filen ikke er åben, så lad os få bevist en gang for alle, at det er et sikkerhedsproblem. Gå ind i IIS admin og skift den bruger som IIS anvender til anonymos access. Vælg en bruger med administrative rettigheder, typisk Administrator lokalt på serveren.
Selv om det ikke burde være nødvendig, luk for en sikkerheds skyld alle browser vinduer, genstart IIS og forsøg igen. Nu skal det bare virke. Når (ikke hvis :-) det virker, har du bevist at det er et sikkerhedsproblem på IUSR_xxx, ergo denne kan ikke have fået de rigtige rettigheder.
Vil det skuffe nogen hvis jeg sagde jeg allerede havde prøvet med admin i anonymous, og dette gav IKKE succes! Nu tro jeg bare.. jeg tager en lur - jeg vender tilbage skulle der være nyt i sagen i morgen. Tak for al hjælpen... so far :)
OKIE OKIE.. en genstart af serveren skulle der simpelthen til før det virkede!! :) Er sagen nu den jeg opretter en ny bruger med change rettigheder til brug af anonymous access?
Det udgør altid en væsentlig sikkerhedsrisiko at mappe anoymous access til en bruger med administrative rettigheder. Hackerne har i forvejen en masse muligheder for at overtage en IIS server, der er ingen grund til at gøre det nemmere for dem.
Du skrev tidligere, at der skulle en gestart til, før det virkede ? - har du prøvet at genstarte efter at du har givet IUSR_xxx change rettigheder ?
Er helt enig med tmceu i at der ikke skal være adgang for nogen med anoymous access til admin gruppen. Forstod bare på thepope at det virkede bare der var "nogle" i admin gruppen.
Hvordan går det? Har du besluttet blot at give alle adgang til alt eller? :-)
Synes godt om
Ny brugerNybegynder
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.