mboost-dp1

Beta-test af selvbygger-blog


Gå til bund
Gravatar #1 - Jace
19. nov. 2009 14:50
Hej,

Er der nogen der kunne tænke sig at teste min blog lidt?

http://www.jacobworsoe.dk/

Bare hack løs og se om I kan finde nogle fejl, eller ting der ikke virker ordentligt... Så må vi se om den er klar til at få fyldt noget indhold på den :)

På forhånd tak...
Gravatar #2 - illishar
19. nov. 2009 14:57
Der sker ikke noget når man trykker på 'delete'

... Jeg kan slet ikke trykke på noget. ARGHHHHH!
Gravatar #3 - Jace
19. nov. 2009 14:59
Hvis det er det her du tænker på, så er det bare et screenshot:
http://www.jacobworsoe.dk/stuff/pause-start.jpg
Gravatar #4 - illishar
19. nov. 2009 15:00
Den spiser mine <>
Gravatar #5 - illishar
19. nov. 2009 15:02
... et billede!!!

Nu har jeg siddet og trykket på den i 10 min og så er det bare et billede!
Gravatar #6 - illishar
19. nov. 2009 15:03
RSS'en tager ikke indlæggende med.

... ah vent, der er 2 ;)
Gravatar #7 - illishar
19. nov. 2009 15:05
Gravatar #8 - illishar
19. nov. 2009 15:07
Din script-blocker (Hvad er to + tre? (Skriv kun tal)) bliver lidt kedelig i længden. VILDERE REGNESTYKKER!

Gravatar #9 - Jace
19. nov. 2009 15:25
illishar (4) skrev:
Den spiser mine <>

Det er meningen, men bør nok lige skrives at det ikke er tilladt.


illishar (7) skrev:
Alle RSS-entries henviser til

http://www.jacobworsoe.dk/overskrift-til-indlaegge...

Efter hvad jeg lige kan se så er der en enkelt kommentar der henviser til det andet indlæg. Men du har ret nemt ved at ødelægge mit rss-feed. Du kan nemt putte nogle tegn ind i det, som den slet ikke kan klare :)
Gravatar #10 - Jace
19. nov. 2009 15:26
illishar (8) skrev:
Din script-blocker (Hvad er to + tre? (Skriv kun tal)) bliver lidt kedelig i længden. VILDERE REGNESTYKKER!

Ja, det ved jeg godt, men det har faktisk vist sig at være effektivt nok alligevel. Der er ikke sluppet noget igennem på de andre sider hvor jeg har brugt det. Så de små bots kan ikke regne den ud, selvom det er det samme hele tiden :)
Gravatar #11 - illishar
19. nov. 2009 15:29
Hmm, nu er den da vist helt ude af sync med RSS'en


Næ ...
Gravatar #12 - Jace
19. nov. 2009 15:43
Jeg skal vist lige have lavet en lidt bedre server-side validering.

Burde strip_tags ikke fjerne sådan noget som &nbsp; ? Det ødelægger tilsyneladende fuldstændigt et rss-feed :)
Gravatar #13 - Jace
19. nov. 2009 15:43
Skal måske lige sige at det er i php...
Gravatar #14 - illishar
19. nov. 2009 15:44
Hm jeg synes ellers at den var meget skæg :P
Gravatar #15 - Windcape
19. nov. 2009 15:47
Jace (13) skrev:
Skal måske lige sige at det er i php...
Var nu nemt nok at finde ud af.

http://www.jacobworsoe.dk/index.php retunere ikke en 404, det gør en anden invalid url.

Samt: http://www.jacobworsoe.dk/submit-comment.php

Skriv javascript:document.forms[0].submit(); i din urlbar, og du omgår dine Javascript checks.
Gravatar #16 - Windcape
19. nov. 2009 15:48
Det lykkes mig at tilføje et blank indlæg.
Gravatar #17 - Windcape
19. nov. 2009 16:09
Det er nok ikke så smart at tillader javascript: i din url input.
Gravatar #18 - Jace
19. nov. 2009 17:22
Windcape (16) skrev:
Det lykkes mig at tilføje et blank indlæg.

Jeg prøver lige at omskrive min server-side validering, så det ikke er muligt at lave tomme indlæg.



Windcape (15) skrev:
Skriv javascript:document.forms[0].submit(); i din urlbar, og du omgår dine Javascript checks.


.submit();]http://www.jacobworsoe.dk/overskrift-til-indlaegget-12/javascript:document.forms[0].submit();
Sådan her? Ellers forstår jeg ikke helt hvad du mener?

Windcape (17) skrev:
Det er nok ikke så smart at tillader javascript: i din url input.

Kan du hjælpe mig med hvordan jeg undgår at man kan det?
Gravatar #19 - arne_v
19. nov. 2009 17:25
#18

Generelt er det bedre at teste positivt end negativt d.v.s. at du skal teste om noget matcher det du betragter som lovligt input fremfor at teste om det matcher det du betragter som ulovligt.
Gravatar #20 - Windcape
19. nov. 2009 17:26
Jace (18) skrev:
Sådan her? Ellers forstår jeg ikke helt hvad du mener?
Nej, bare præcis hvad jeg skrev, og ikke andet.
Gravatar #21 - myplacedk
19. nov. 2009 17:40
Jace (9) skrev:
Det er meningen, men bør nok lige skrives at det ikke er tilladt.

Trækker stort ned. Ikke bare fordi man ikke kan skrive tegnene, men det fortæller alt hvad jeg har behov for at vide om din sikkerhedsmodel. Senere kommenterer i denne tråd bekræfter det.

Hvis man betrager "<" og ">" som farlige tegn, så har man totalt misforstået hvordan man laver sikkerhed.
Gravatar #22 - myplacedk
19. nov. 2009 17:45
Nu har jeg testet den kommentar-funktion lidt, og den er da helt gal. Jeg tror at hele turen fra man skriver noget, til det bliver vist på skærmen igen, er noget du lige skal tænke igennem helt fra starten.

Jeg foreslår noget i denne stil:

En masse tegn bliver accepteret som de er. Bogstaver, tal og almindelig tegnsætning. Måske findes der et eller andet standard til PHP som kan fjerne farlige tegn, da det er ret svært at lave en komplet whitelist.

De "farlige tegn" < > & og evt. " og ' laver du til HTML entities. (&lt; osv.)

Linjeskift sætter du <br /> foran. (Husk at der er 3 slags linjeskift at tage hensyn til: \r\n, \n og \r)

Så mangler du vist bare at håndtere fjollet indholdet. Fx. mine 500 X'er i træk, 500 linjeskift i træk og sådan noget. Fx. kan du lave en div med max-størrelser og overflow:auto som et godt udgangspunkt.
Gravatar #23 - Jace
19. nov. 2009 17:48
arne_v (19) skrev:
#18

Generelt er det bedre at teste positivt end negativt d.v.s. at du skal teste om noget matcher det du betragter som lovligt input fremfor at teste om det matcher det du betragter som ulovligt.

Okay, det vil jeg lige prøve at tænke ind i det. Tak for det.
Gravatar #24 - Jace
19. nov. 2009 17:50
Windcape (15) skrev:
Skriv javascript:document.forms[0].submit(); i din urlbar, og du omgår dine Javascript checks.

Ahh, nu forstår jeg hvad du mener :)

Kan du hjælpe med hvordan man undgår det?
Gravatar #25 - Jace
19. nov. 2009 17:52
myplacedk (22) skrev:
Nu har jeg testet den kommentar-funktion lidt, og den er da helt gal. Jeg tror at hele turen fra man skriver noget, til det bliver vist på skærmen igen, er noget du lige skal tænke igennem helt fra starten.

Mange tak for din lange kommentar - super fedt at du gider!

Jeg vil lige prøve at gennemtænke hele processen igen forfra, og vende tilbage når jeg har et nyt forsøg :)
Gravatar #26 - myplacedk
19. nov. 2009 17:52
Jace (24) skrev:
Kan du hjælpe med hvordan man undgår det?

Det kan du ikke undgå. Du skal bare vide, at clientside (dvs. javascript validering) er "flødeskum", noget der kun er der for brugerens skyld. Du er nødt til at lave de samme kontroller serverside.

Det eneste formål dit javascript har (eller må have), er at brugeren får hurtigere besked, fordi det ikke skal omkring serveren.
Gravatar #27 - myplacedk
19. nov. 2009 17:55
Jace (25) skrev:
Mange tak for din lange kommentar - super fedt at du gider!

Jeg takker for at du tager det seriøst - jeg er efterhånden vant til at blive ignoreret når jeg kommer med den slags dårlige nyheder, på fora som dette.
Gravatar #28 - Jace
19. nov. 2009 17:57
myplacedk (26) skrev:
Det kan du ikke undgå. Du skal bare vide, at clientside (dvs. javascript validering) er "flødeskum", noget der kun er der for brugerens skyld. Du er nødt til at lave de samme kontroller serverside.

Det eneste formål dit javascript har (eller må have), er at brugeren får hurtigere besked, fordi det ikke skal omkring serveren.

Jeg kan huske at arne_v tidligere har sagt: "client-side for convenience - server-side for security". Det opsummerer vist meget godt hvad forskellen er :)
Gravatar #29 - Jace
19. nov. 2009 17:58
myplacedk (27) skrev:
Jeg takker for at du tager det seriøst - jeg er efterhånden vant til at blive ignoreret når jeg kommer med den slags dårlige nyheder, på fora som dette.

Jeg er meget taknemmelig :)
Gravatar #30 - Jace
19. nov. 2009 18:07
Så er der bare lige det der med hvad man skal gøre hvis server-side validering fejler. Så skal brugeren jo sendes tilbage og felterne skal udfyldes automatisk, så brugeren ikke skal udfylde alle felter igen.

Lige nu ser mit flow således ud:

- brugeren indtaster i formen på post.php og bliver sendt til submit.php

- submit.php tjekker input og indsætter i database og sender brugeren tilbage til post.php via header(location)

Men jeg overvejer lidt at lave det således at det hele sker på post.php, så det er nemmere at udfylde felterne igen uden at man skal igang med noget session-halløj, for at overføre mellem de to sider.

Men så står man bare med problemet at hvis brugeren trykker F5, så bliver POST sendt igen. Så jeg plejer at lave en redirect til sidst, så det ikke sker. Hvilken løsning foretrækker I at lave?
Gravatar #31 - Windcape
19. nov. 2009 18:17
Jeg foretrækker at benytte et framework som løser problemerne for mig, så jeg ikke skal bekymre mig om at kode det hver gang :-)
Gravatar #32 - Jace
19. nov. 2009 18:20
Windcape (31) skrev:
Jeg foretrækker at benytte et framework som løser problemerne for mig, så jeg ikke skal bekymre mig om at kode det hver gang :-)

Det er vist sådan noget man gør EFTER man har lært at gøre det rigtig, men bare vil være mere effektiv :)
Gravatar #33 - myplacedk
19. nov. 2009 18:23
Jace (30) skrev:
Men jeg overvejer lidt at lave det således at det hele sker på post.php, så det er nemmere at udfylde felterne igen uden at man skal igang med noget session-halløj, for at overføre mellem de to sider.

I din situation, hvis vi ser helt isoleret på dette problem, ville jeg nok submitte til samme side som man er på, og så redirecte hvis handlingen udføres successfuld.

Men som Windcape overlader jeg normalt den slags til et eller andet framework.

Jace (30) skrev:
Men så står man bare med problemet at hvis brugeren trykker F5, så bliver POST sendt igen. Så jeg plejer at lave en redirect til sidst, så det ikke sker. Hvilken løsning foretrækker I at lave?

Det vil løse noget af det, men man vil stadig kunne lave dobbelt-submit ved et uheld. Du kan tjekke på om præcist den samme kommentar allerede er i databasen. Eller have et id i et skjult felt i formen, som skal matche et id i sessionen for at man kan submitte. Når handlingen så er udført fjerner du id'et fra sessionen, og formen er nu ugyldig.

Men igen, det kan et framework nemt klare.
Gravatar #34 - myplacedk
19. nov. 2009 18:23
Jace (32) skrev:
Det er vist sådan noget man gør EFTER man har lært at gøre det rigtig, men bare vil være mere effektiv :)

Ja, det er fint med viden om hvad det er frameworket egentlig laver. Godt at du gider!
Gravatar #35 - arne_v
19. nov. 2009 18:26
myplacedk (33) skrev:
Det vil løse noget af det, men man vil stadig kunne lave dobbelt-submit ved et uheld. Du kan tjekke på om præcist den samme kommentar allerede er i databasen. Eller have et id i et skjult felt i formen, som skal matche et id i sessionen for at man kan submitte. Når handlingen så er udført fjerner du id'et fra sessionen, og formen er nu ugyldig.


Også kendt som:

Synchronizer Token pattern
Gravatar #36 - Windcape
19. nov. 2009 18:29
arne_v (35) skrev:
Også kendt som:

Synchronizer Token pattern
I Java EE.

Jeg har faktisk ikke set nogen som har brugt den model i PHP. Typisk benyttes routing og RESTful style URLs til at matche routes.

Jeg ved ihvertfald at ASP.NET MVC, Zend og CakePHP benytter routes.
Gravatar #37 - myplacedk
19. nov. 2009 18:30
Jeg kan i øvrigt anbefale dig at læse op på lidt patterns. Enten på nettet eller en eller anden mere eller mindre pædagogisk bog, alt efter hvad du foretrækker. Jeg linker her til Wikipedia, men det er ret overfladisk hvad du finder der. Jeg har bøger stående hvor hvert pattern er et helt kapitel.

Jeg tænker først på model–view–controller, da jeg lige har undervist i et framework baseret på det pattern.

Og så synes jeg layers er vigtig for at få sikkerhedsmodellen på plads. Jeg kan godt lide at tage udgangspunkt i dette pattern, når vi snakker om fx. hele problematikken med kommentarer, hvor det jo både skal være sikkert og se godt ud.
Gravatar #38 - Windcape
19. nov. 2009 18:31
Zend Framework , MVC baseret framework

CakePHP mere RAD / Rails lign. framework.
Gravatar #39 - arne_v
19. nov. 2009 18:39
Windcape (36) skrev:
I Java EE.


Den er opfundet der.

Windcape (36) skrev:
Jeg har faktisk ikke set nogen som har brugt den model i PHP.


Jeg har heller aldrig hørt om det i PHP. Men jeg har hært om det i ASP.NET.

Windcape (36) skrev:
Typisk benyttes routing og RESTful style URLs til at matche routes.


Det beskytter ikke mod det som Synchronizer Token beskytter mod.
Gravatar #40 - Jace
22. nov. 2009 22:32
Så har jeg fået omskrevet hele balladen, så den forhåbentlig er lidt bedre sikret :)

illishar (8) skrev:
Din script-blocker (Hvad er to + tre? (Skriv kun tal)) bliver lidt kedelig i længden. VILDERE REGNESTYKKER!

Rettet - der bliver lavet et nyt regnestykke hver gang. Bliver tjekket server-side og man får en alert-box hvis det er forkert.

Windcape (16) skrev:
Det lykkes mig at tilføje et blank indlæg.

Rettet - Det bliver nu også testet server-side om alle felter er udfyldt, og man får en alert hvis de ikke er.

myplacedk (22) skrev:
De "farlige tegn" < > & og evt. " og ' laver du til HTML entities. (&lt; osv.)

Rettet - < og > bliver lavet til html entities.

myplacedk (22) skrev:
Linjeskift sætter du <br /> foran. (Husk at der er 3 slags linjeskift at tage hensyn til: \r\n, \n og \r)

Jeg bruger nl2br($comment), så det burde fungere.

myplacedk (22) skrev:
Så mangler du vist bare at håndtere fjollet indholdet. Fx. mine 500 X'er i træk, 500 linjeskift i træk og sådan noget. Fx. kan du lave en div med max-størrelser og overflow:auto som et godt udgangspunkt.

Jeg har lavet en div med width=1000 og så overflow:auto, så dine X'er ikke ødelægger noget. Det med 500 linjeskift skal jeg lige have kigget på. Jeg kan ikke rigtigt sætte en height=500 på div'en da den så altid vil have den størrelse, selv hvis der kun skrives en linje.

myplacedk (33) skrev:
I din situation, hvis vi ser helt isoleret på dette problem, ville jeg nok submitte til samme side som man er på, og så redirecte hvis handlingen udføres successfuld.

Alting kører nu på samme side, med redirect til sidst.

myplacedk (33) skrev:
Det vil løse noget af det, men man vil stadig kunne lave dobbelt-submit ved et uheld. Du kan tjekke på om præcist den samme kommentar allerede er i databasen.

Rettet, så den tjekker om kommentar, navn og mail allerede er i databasen. Man får en alert hvis den allerede er lavet.

Det var vist det - så hvis I gider må I gerne køre det tunge hacking-skyts frem igen og se hvor meget den kan holde til denne gang :)

På forhånd tak.
Gravatar #41 - Jace
22. nov. 2009 22:44
Jeg har forresten disabled client-side validering, mens I tester så I ikke skal bøvle med det :)
Gravatar #42 - myplacedk
22. nov. 2009 22:52
Ser godt ud! Thumbs up!

Næste skridt er flood protection. Lange indlæg (i bytes), lange indlæg (i linjer) og jeg vil gætte på at du heller ikke beskytter mod at én person skriver 1000 indlæg lige efter hinanden (ud over regnestykket).

Men så nærmer vi os et punkt hvor du nok hellere vil have moderering alligevel. Systemet kan aldrig blive perfekt med automatisk validering alligevel.
Gravatar #43 - m910q
22. nov. 2009 23:01
Man kan skrive &nbsp; tegnet (ASCII 160) i felterne og lave en tilsyneladende helt tom kommentar.

Hvis det er et krav at man skal skrive en e-mail burde der vel også være validering på det felt?

Jace (40) skrev:
myplacedk (33) skrev:
Det vil løse noget af det, men man vil stadig kunne lave dobbelt-submit ved et uheld. Du kan tjekke på om præcist den samme kommentar allerede er i databasen.

Rettet, så den tjekker om kommentar, navn og mail allerede er i databasen. Man får en alert hvis den allerede er lavet.


Ved godt det kan ske i få tilfælde, men det burde vel heller ikke kunne lade sig gøre pga. regnestykke-checket?
Gravatar #44 - Cloud02
22. nov. 2009 23:06
En nummerering af kommentarer vil ikke være skidt. Så kan man lave referencer med sine kommenteringer. Evt. også med anchor points.

Jeg må indrømme at jeg er lidt ærgerlig over at man ikke længere kan skrive html og benytter ting som fed, kursiv og blockquote.
Gravatar #45 - Jace
22. nov. 2009 23:13
myplacedk (42) skrev:
Næste skridt er flood protection. Lange indlæg (i bytes), lange indlæg (i linjer) og jeg vil gætte på at du heller ikke beskytter mod at én person skriver 1000 indlæg lige efter hinanden (ud over regnestykket).

Jeg har rettet det med 500 linjeskift. Jeg synes dog det er svært at sætte en grænse for at en person må skrive lange indlæg. Men hvis det er en bot der gør det, så skal det selvfølgelig stoppes. Men det skulle antispam gerne ordne :)
Gravatar #46 - m910q
22. nov. 2009 23:14
Hvis jeg skriver "www.test.dk" i URL feltet laver den et link til "http://www.jacobworsoe.dk/overskrift-til-indlaegget-12/www.test.dk"


Hvis jeg går ind på en nyhed, og derefter åbne en ny tab med samme nyhed. Så fungere formen på første nyhed ikke pga. antispam. Det er ikke nok at gemme den sidst-opdaterede side pr. IP.
Gravatar #47 - Jace
22. nov. 2009 23:22
m910q (43) skrev:
Man kan skrive &nbsp; tegnet (ASCII 160) i felterne og lave en tilsyneladende helt tom kommentar.

Ja, det skal jeg lige have rettet så man ikke kan det, da det også gør at RSS-feedet ikke validerer. Jeg ved dog ikke lige hvordan jeg skal gøre det :) Ved du hvordan man kan gøre det?

m910q (43) skrev:
Hvis det er et krav at man skal skrive en e-mail burde der vel også være validering på det felt?

Rettet, så den tjekker om kommentar, navn og mail allerede er i databasen. Man får en alert hvis den allerede er lavet.


Ved godt det kan ske i få tilfælde, men det burde vel heller ikke kunne lade sig gøre pga. regnestykke-checket? [/quote]
Joh, jeg får lige lavet, så den tjekker om det er en valid e-mail man skriver, så man ikke bare kan skrive hvad som helst i feltet.

Nej, jeg tror også regnestykket sørger for at det ikke sker. Altså udover det tilfælde hvor man får det samme regnestykke to gange i træk. Men når I trykker F5 efter at have postet, så bliver den ikke posted igen, vel? Jeg kan ikke få den til at gøre det, så jeg tror ikke det giver nogen problemer.
Gravatar #48 - Jace
22. nov. 2009 23:28
Cloud02 (44) skrev:
En nummerering af kommentarer vil ikke være skidt. Så kan man lave referencer med sine kommenteringer. Evt. også med anchor points.

Rettet - skal nok lige lave det lidt pænere i morgen :)

Cloud02 (44) skrev:
Jeg må indrømme at jeg er lidt ærgerlig over at man ikke længere kan skrive html og benytter ting som fed, kursiv og blockquote.

Jeg prøver at tillade html i kommentar-feltet. Så må vi se om det bliver udnyttet - men det skal jeg måske ikke være bange for at det bliver?
Gravatar #49 - m910q
22. nov. 2009 23:38
Din rewrite eller hvad de nu bruger, mangler lidt. Man kan finde ud af hvilke mapper du har i roden.

Webserver standard 404:
www.jacobworsoe.dk/hest

Din egen fejlside:
www.jacobworsoe.dk/hest/

Din egen fejlside pga. mappen findes:
www.jacobworsoe.dk/stuff
Gravatar #50 - Jace
22. nov. 2009 23:38
m910q (46) skrev:
Hvis jeg skriver "www.test.dk" i URL feltet laver den et link til "http://www.jacobworsoe.dk/overskrift-til-indlaegget-12/www.test.dk"

Ja, det har jeg godt lagt mærke til. Det er fordi man SKAL skrive den fulde adresse med http:// foran - ellers tror den at det er en intern side på mit site du linker til. Jeg har rettet det og skrevet at man skal huske http:// foran, men det kan godt være jeg bliver nødt til at lave et check og se om man har husket at skrive det og ellers putte det på automatisk.

m910q (46) skrev:
Hvis jeg går ind på en nyhed, og derefter åbne en ny tab med samme nyhed. Så fungere formen på første nyhed ikke pga. antispam. Det er ikke nok at gemme den sidst-opdaterede side pr. IP.

Jeg har lavet det så den værdi som regnestykke skal give bliver gemt i en SESSION variabel når de to tal bliver lavet tilfældigt. Når man så submitter formen, så tjekker jeg det man indtaster med det som ligger i SESSION variablen. Det gør, som du er inde på, at man ikke kan have to nyheder åbne på en gang og skrive kommentarer til dem begge - og det er jo noget rod at man ikke kan det :) Men hvordan kan jeg ellers gemme den variablen som jeg skal tjekke op mod?
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login