/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Open Source
Fra : Jimmy


Dato : 16-01-03 23:02

Hej

Jeg overvejer at lave min næste hjemmeside som Open Source.

Men jeg kender intet til den form for programmering det kræver.

Man skal jo frigive koden til download på sitet.
User/pass plejer jeg at have i en config-fil så det burde ikke være noget
problem blot at udskifte denne før download.

Men hvordan ville I bygge de sider op, som modtager værdier fra forms og
sletter/opdatere i databaser?
Altså, hvordan vil I sikre Jer, at en ondsindet person ikke laver et script
der poster/getter nogle værdier til siden.

Jeg er med på det mest basale såsom at erstatte ' med \' (MySQL) og | mv.


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"

mvh
Jimmy



 
 
Jakob Andersen (17-01-2003)
Kommentar
Fra : Jakob Andersen


Dato : 17-01-03 00:12

"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



Jimmy (17-01-2003)
Kommentar
Fra : Jimmy


Dato : 17-01-03 12:54


"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:b07e5c$1n72$1@news.cybercity.dk...
> "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.

Ja det er der normalt.
Man kunne dog godt forestille sig et scenarie hvor man kunne INSERTe uden at
være logget ind.
F.eks. en afstemning, hvor det vil være markant lettere vha et script at
fylde den op med data, hvis man ved præcis hvordan der checkes for om en
given bruger allerede har stemt.


> 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:

Helt enig.


> Du skal huske at have ikke-ASP filer som er afhængige af login liggende
> udenfor webscope og streame disse.

Det forstår jeg ikke helt?


> Og database, konfigurationsfiler og lign.
> skal selvfølgelig også være udenfor webscope.

Det plejer jeg faktisk ikke.
Jeg plejer at have en config.asp fil jeg inkluderer på alle de sider der har
behov for data derfra.
Er dette da et reelt problem?


> 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.


Ja, DOS, den havde jeg ikke tænkt på.
Performance plejer at være højt prioriteret, dog under læsbarhed i de fleste
tilfælde.

Tak for svaret,
Jimmy



Jakob Andersen (17-01-2003)
Kommentar
Fra : Jakob Andersen


Dato : 17-01-03 13:13

Jimmy wrote:
> Man kunne dog godt forestille sig et scenarie hvor man kunne INSERTe uden at
> være logget ind.

Så er det vel lige meget om det er tilgængelig kode eller ej, brugere
kan stadig misbruge det.

>>Du skal huske at have ikke-ASP filer som er afhængige af login liggende
>>udenfor webscope og streame disse.
>
> Det forstår jeg ikke helt?

For nylig var der f.eks.en sag med at man uden at være logget ind kunne
gætte sig frem til URL'er til billeder hos en større dansk datingportal.

Dette skyldes at de kørte med autorisation ved brug af sessions, og da
session handlingen som bekendt kun fungerer i ASP filer så er gif, jpegs
og andre mediefiler ikke beskyttet og derfor kan disse downloades
direkte ved at indtaste adressen. Hvis du derfor har ting der skal
beskyttes som ikke er ASP dokumenter skal du benytte Authentication i
IIS eller evt. streame indholdet vha. ADO. Dvs. du har en ASP fil der
serverer binært data fra en fil til klienten.


> Jeg plejer at have en config.asp fil jeg inkluderer på alle de sider der har
> behov for data derfra. Er dette da et reelt problem?

Ikke så længe din configfil er en ASP-fil, men hvis den f.eks. er en XML
fil eller TXT fil så kan den downloades direkte.

--
Jakob Andersen


Jimmy (17-01-2003)
Kommentar
Fra : Jimmy


Dato : 17-01-03 16:00


"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:3E27F33C.2050901@effectus.dk...
> Jimmy wrote:
> > Man kunne dog godt forestille sig et scenarie hvor man kunne INSERTe
uden at
> > være logget ind.
>
> Så er det vel lige meget om det er tilgængelig kode eller ej, brugere
> kan stadig misbruge det.

Naturligvis, men ved open source er det meget lettere at finde ud af præcis
hvor man skal sætte ind.
Normalt ville man skulle gætte sig frem og trial'n'error.


Ellers er jeg enig i resten.

Mvh
Jimmy



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408836
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste