"Jimmy" <spoerg@efter.den> wrote
> Men hvordan ville I bygge de sider op, som modtager værdier fra forms og
> sletter/opdatere i databaser?
Generelt er der vel kun mulighed for at slette og opdatere værdier hvis man
er logget ind.
> Altså, hvordan vil I sikre Jer, at en ondsindet person ikke laver et
script
> der poster/getter nogle værdier til siden.
Nu ved jeg ikke lige hvilken type side du vil lave, men lad os sige at du
lader nogle brugere logge ind og herefter har de noget personligt data
f.eks. kunne man sige at personer selv kunne tilføje nyheder til et site og
rette i allerede eksisterne nyheder som de selv har oprettet.
I ovenstående scenarie vil en autoriseret bruger måske når han retter i en
af hans egne artikler stå på en side med url'en:
<
http://www.domæne.dk/retnyhed.asp?id=60>
Men hvad nu hvis at brugeren ændrer ID-nummeret til 50 og at denne nyhed
ikke er hans? For at undgå denne slags i "community" situationer er det
derfor vigtigt at man bygger sin SQL op så den _hver gang_ det drejer sig om
data bundet til en bruger husker at bruge denne brugersid nummer.
Altså hvis man har et brugernummer i en Session så skal SQL sætningen til
ovenstående bygges sådan her:
SELECT <feltliste> FROM <tabel> WHERE id = 60 AND BrugerID = " & Session(
"BrugerID" )
istedet for blot:
SELECT <feltliste> FROM <tabel> WHERE id = 60
> Jeg er med på det mest basale såsom at erstatte ' med \' (MySQL) og | mv.
Jeg ved ikke lige om det ligger under dit "mv" men inputvalidering af ALT
data fra Request objektet er et must, f.eks. skal forventede talværdier
tjekkes for om det virkelig er talværdier etc.
Se evt.: <
http://activedeveloper.dk/locator.asp?guid=001000000297> som der
indenfor en overskuelig fremtid kommer en 2. del til.
En anden væsentlig ting er at du ikke har funktioner der giver "direkte"
adgang til filsystemet. Altså hvis du bruger Filesystemobjektet,
Server.Execute eller Server.Transfer på baggrund af data fra Request
objektet er inputvalideringen også ekstremt kritisk.
I eventuelle uploadscripts/komponenter skal du kun åbne for absolut
nødvendige filtyper. En bruger der kan få lov til at uploade en ASP fil til
din server kan lave mange ulykker.
Du skal huske at have ikke-ASP filer som er afhængige af login liggende
udenfor webscope og streame disse. Og database, konfigurationsfiler og lign.
skal selvfølgelig også være udenfor webscope.
> Jeg ved godt indlægget er lidt tåget, men håber I forstår hvad jeg mener.
> Og at man kan sige "Din kode skal altid være sikker - uanset om folk
kender
> kildekoden eller ej"
Ovenstående nævnte principper bør være gældende ligegyldigt om koden er
tilgængelig eller ej. Og husk at kode pænt rent performance mæssigt når du
laver kode der er offentligt tilgængelig. Hvis der er dårlig kode bare et
sted ved man hvor man skal slå til med x antal Request's for at lægge dit
webserverjail eller i værste tilfælde hele serveren ned.
--
Jakob Andersen