Philip Nunnegaard skrev:
> "Jørn Andersen" <jorn@jorna.dk> skrev
>
>> Hvorfor må østrigerne nu ikke være med
>> <url:
http://www.iana.org/domains/root/db/>
>
> Fordi med min begrænsede viden ville jeg skulle lave en if- eller
> replace-sætning for hvert tl-domæne, så i stedet for 200-300 sådanne
> sætninger nøjes jeg med et par stykker.
>
> Jeg ved godt at det muligvis kunne laves mere elegant og generelt med
> noget regexp/pregmatch, men så langt rækker min viden ikke p.t., og jeg
> har (endnu) ikke rigtigt orket at sætte mig grundigt nok ind i det.
> Derfor rene replace/if-sætninger kombineret med noget explode().
Ja, også sådan jeg har gjort også (på en tld-whitelist), for det er
lettere at holde rede i. RegExp kan være ret så krævende;)
Nu er vi vidst ret så off-topic, men...
Noget a la
\b(f|ht)tp://[A-Z0-9.-]+\.[A-Z]{2,4}\b
Som svjks bør lave følgende:
1. Søger efter et ord
2. Første del af ordet, skal være enten ftp:// eller http://
3. Derefter kan der være både . og - og bogstaver og tal, så mange, man
nu lyster
4. Derefter skal der være 2-4 tegn, som skal være bogstaver (ved ikke,
om .co.uk vil virke - det bør det for så vidt, men også f.eks. .co.ukuk,
som ikke er lovligt)
Der tages ikke højde for pattern til TLD, så man kan lave .dk men også
andre, som måske ikke er lovlige
Der tages ikke højde for underbiblioteker - det næste ville vel være at
tjekke for /
Der tages ikke højde for querystring ? og &
Der tages ikke højde for ID-henvisning med #
Til gengæld, så tror jeg ikke, hvis man bruger den, at man kan injecte,
fordi det netop kun er base-URLen som godtages.
Lad os sige, man har en kommentar-rutine, hvor koden leder efter alle
ord, som er/kan være URLer (som ovenfor), men udbygger den med både
underbiblioteker og querystring osv. og så automatisk omslutter med en a
href. Her er det jo yderst vigtigt, at en ondsindet bruger med en
kommentar ikke kan snige ' ind f.eks. som kan bruges til SQL-injection.
Så kan man risikere, at folk sender automatiske injection-forsøg fra en
ellers helt uskyldig side, bare de trykker på det link... altså bla.
check for, at alt efter ? er indenfor en given ramme/pattern.
MVH
Rune Jensen