mboost-dp1

Beta-test af selvbygger-blog


Gå til bund
Gravatar #51 - Jace
22. nov. 2009 23:46
m910q (49) skrev:
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


Jeg har lavet denne men det er vist ikke helt nok? :)

RewriteEngine on
RewriteBase /
RewriteRule ([0-9]*)/$ post.php?id=$1
RewriteRule ^sitemap$ sitemap.php

AddType application/x-httpd-php .xml

ErrorDocument 404 /404.php

Gravatar #52 - m910q
22. nov. 2009 23:46
#50
En løsning kunne være at gemme et unikt id(ikke bare løbende) i databasen, som bliver tildelt hver form. De udløber så efter x antal timer, an på hvor lang tid du vil have den skal være gyldig (standard for sessions som du bruger nu, er 20min).
Gravatar #53 - T-Hawk
23. nov. 2009 07:13
Jace (47) skrev:
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?

Du kan evt. bruge trim() til at fjerne alt whitespace før og efter din streng, før du tjekker om den er tom.
Gravatar #54 - Jace
23. nov. 2009 19:01
T-Hawk (53) skrev:
Du kan evt. bruge trim() til at fjerne alt whitespace før og efter din streng, før du tjekker om den er tom.

God ide, men det virker desværre ikke. Hvis man indsætter   i kommentar-feltet, så får den lov til at slippe igennem, selvom man bruger denne kode:

$comment = $_POST['comment'];
$comment = mysql_real_escape_string($comment);
$comment = trim($comment);
Gravatar #55 - Jace
23. nov. 2009 19:04
Og så har det altså nogle ulemper at acceptere html i kommentar-feltet. Hvis man f.eks. skriver </div> i feltet, så går det ret galt :)

Nogen der kender en løsning på det udover at forbyde alt med html_entities eller bruge strip_tags hvor man så tillader nogle enkelte tags, f.eks. <a>, <b>, <i> ?
Gravatar #56 - arne_v
23. nov. 2009 19:11
#55

Forbyd alle <> tags. Forbyd HTML entities. Tillad nogle ganske få [] tags som du konverterer til <> tags.

Ligesom her!!
Gravatar #57 - Daniel-Dane
23. nov. 2009 19:23
#56
<Hvad er der galt i at lave det hele om til entities?>

&nbsp;&amp;&nbsp;

Jace (54) skrev:
God ide, men det virker desværre ikke. Hvis man indsætter &#160; i kommentar-feltet, så får den lov til at slippe igennem, selvom man bruger denne kode:

$comment = $_POST['comment'];
$comment = mysql_real_escape_string($comment);
$comment = trim($comment);
Konvertér inden du trimmer.
Gravatar #58 - Cloud02
23. nov. 2009 20:33
Jace (48) skrev:
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?

ingen anelse. jeg kommer blot med forslag på hvordan jeg godt kunne tænke mig det. :D

evt. kan du konvertere alle <> entries, mens du bagefter laver et chek for at se om der står: %3Cb%3E %3C%2Fb%3E (<b> og </b>) som du så erstatter med <> frem for ascii/utf værdien.
du kan jo så muligvis støde ind i uafsluttede tags i så fald.
Gravatar #59 - myplacedk
23. nov. 2009 20:43
#58
Du vrøvler. ;-)

Men ideen med en søg/erstat implementering er ganske udbredt. Det er også den der bruges her på newz. Og det bliver ufatteligt hurtigt ufatteligt svært at lave bug-free. Her på newz har der været meget bøvl med det, fx. der double-quote-bug'en gammel, kendt og tilsyneladende ret svær at rette. (Men det er vist også den eneste bug der er lige nu.)

Det kan gå, hvis det er noget meget simpelt der skal laves. (Ganske få tags, helst helt uden parametre.)

Men ellers vil jeg anbefale at bruge noget standard-kode til det (måske er der kommet noget i PHP siden sidst jeg kigge for nogle år siden), eller implementere det selv med noget stack-baseret.
Man skal lige lære teknikken, men så bliver det langt simplere at lave noget fancy.
Lær fx. at bruge en SAX parser. Du kan lave noget i den stil. Well, faktisk kan du formentlig bruge en SAX parser.
Gravatar #60 - arne_v
23. nov. 2009 20:58
myplacedk (59) skrev:
Men ellers vil jeg anbefale at bruge noget standard-kode til det (måske er der kommet noget i PHP siden sidst jeg kigge for nogle år siden)


http://pear.php.net/package/HTML_BBCodeParser

myplacedk (59) skrev:
Lær fx. at bruge en SAX parser. Du kan lave noget i den stil. Well, faktisk kan du formentlig bruge en SAX parser.


Kun hvis det er validt XML.
Gravatar #61 - Jace
24. nov. 2009 01:07
Jeg har lavet en løsning hvor alt forbydes men links bliver lavet clickable når jeg trækker dem ud af databasen. For mig at se er det også den html-kode der vil blive mest brugt - altså det med at man kan lave links, men det laver jeg nu automatisk:
http://www.jacobworsoe.dk/overskrift-11/#comments

Hvad synes I om det?
Gravatar #62 - Daniel-Dane
24. nov. 2009 14:15
#61
Du escaper felterne forskelligt! Lav én funktion, som du bruger alle steder.

Prøv evt. at bruge:
'TEST' #0 NULL \n " <br />a
Gravatar #63 - D_V
24. nov. 2009 16:30
#61, husk når du genere de links at sætte rel="nofollow" på dem.
Så linkspammere ikke får noget ud af det i hensyn til google's bot.
Gravatar #64 - Jace
24. nov. 2009 22:56
Daniel-Dane (62) skrev:
#61
Du escaper felterne forskelligt! Lav én funktion, som du bruger alle steder.

Prøv evt. at bruge:
'TEST' #0 NULL \n " <br />a

Rettet - tak for at påpege det :)
Gravatar #65 - Jace
24. nov. 2009 22:59
D_V (63) skrev:
#61, husk når du genere de links at sætte rel="nofollow" på dem.
Så linkspammere ikke får noget ud af det i hensyn til google's bot.

Rettet - Jeg havde sat det på linket i navnet (hvis man indtaster en url), men det skal selvfølgelig også på de andre links. Tak for det :)
Gravatar #66 - Cloud02
24. nov. 2009 23:13
Når man fejler ved kommentar indtastning og får den der alert prompt, er det jævnt irriterende at man bliver returneret til toppen af siden og skal scrolle hele vejen ned.
navnet bliver heller ikke gemt.
Gravatar #67 - Daniel-Dane
25. nov. 2009 16:59
http://www.jacobworsoe.dk/overskrift-11/%5C%27TEST...

Du escaper stadig linksene forkert. Det kan være svært at se her, men de er blevet PHP-escaped.

Peg på linket og se en gang.
Gravatar #68 - Jace
25. nov. 2009 22:50
Cloud02 (66) skrev:
Når man fejler ved kommentar indtastning og får den der alert prompt, er det jævnt irriterende at man bliver returneret til toppen af siden og skal scrolle hele vejen ned.
navnet bliver heller ikke gemt.

Jeg har rettet det, så man bliver smidt ned til formularen - tak for det. Men jeg kan ikke helt få fejlen med at den ikke udfylder navnet, hvis det er det du mener? Jeg har prøvet kun at udfylde navnet, og så får man fejlen med at alle felter skal udfyldes og bliver smidt ned til formularen hvor navnet stadig er udfyldt. Men det er måske ikke det du mener?
Gravatar #69 - Jace
25. nov. 2009 22:57
Daniel-Dane (67) skrev:
http://www.jacobworsoe.dk/overskrift-11/%5C%27TEST%5C%27%20#0%20NULL%20\\n%20\%22%20%3Cbr%20/%3Ea

Du escaper stadig linksene forkert. Det kan være svært at se her, men de er blevet PHP-escaped.

Peg på linket og se en gang.

Jeg skal nok lige få lavet en funktion, så det bliver lidt pænere kode :) Men lige indtil nu ser det bare sådan her ud:

$name = $row['name'];
$name = stripslashes($name);
$mail = $row['mail'];
$mail = stripslashes($mail);
$url = $row['url'];
$url = stripslashes($url);

Men det er måske ikke der fejlen ligger? Før jeg smider det i databasen kører jeg mysql_real_escape_string på alt.
Gravatar #70 - Cloud02
25. nov. 2009 22:58
#68
Altså, når jeg har lavet en kommentar, så husker den e-mail adresse og hjemmesiden jeg har indtastet. Men ikke navnet. (Jeg bruger IE8)

jeg har testet i firefox og Chrome, men der husker den ingen af delene efter jeg har indsendt en kommentar.
Gravatar #71 - myplacedk
25. nov. 2009 23:00
Stripslashes? Det skrev jeg tilfældigvis lidt om engang for længe siden, det burde du læse: http://myplace.dk/articles/stripslashes/

Sig endelig til, hvis det ikke motiverer dig til at fjerne stripslashes helt fra din kode.
Gravatar #72 - Cloud02
25. nov. 2009 23:03
strips lashes?! hvorfor snakker i dog om er fjerne øjenvipper?!
Gravatar #73 - Jace
26. nov. 2009 10:07
Cloud02 (70) skrev:
#68
Altså, når jeg har lavet en kommentar, så husker den e-mail adresse og hjemmesiden jeg har indtastet. Men ikke navnet. (Jeg bruger IE8)

jeg har testet i firefox og Chrome, men der husker den ingen af delene efter jeg har indsendt en kommentar.

Nåh, nu tror jeg, jeg ved hvad du mener. Jeg har disabled cookies her mens vi tester, men jeg har lige enabled dem igen - prøv lige om det ikke løser problemet :)
Gravatar #74 - Jace
26. nov. 2009 10:11
myplacedk (71) skrev:
Stripslashes? Det skrev jeg tilfældigvis lidt om engang for længe siden, det burde du læse: http://myplace.dk/articles/stripslashes/

Sig endelig til, hvis det ikke motiverer dig til at fjerne stripslashes helt fra din kode.

Spændende artikel. Jeg leger lige lidt frem og tilbage med det og vender tilbage snarest muligt :)
Gravatar #75 - Daniel-Dane
26. nov. 2009 13:27
Jeg bruger selv:
function db_escape($values, $htmlspecialchars = false) {
if (is_array($values)) {
foreach ($values as $key => $value) {
$values[$key] = db_escape($value, $htmlspecialchars);
}
}
else if ($values === null) {
$values = 'NULL';
}
else if (is_bool($values)) {
$values = $values ? 1 : 0;
}
else if (!is_numeric($values)) {
if ($htmlspecialchars)
$values = htmlspecialchars($values, ENT_QUOTES);
$values = mysql_real_escape_string($values);
$values = "'" . $values . "'";
}
return $values;
}


Så skal man bare huske, at der allerede kommer apostrofer udenom, når man skal indsætte i databasen.

Når $htmlspecialchars er false (hvilket den er som udgangspunkt), tillades al HTML-kode. Er den true, burde al HTML-kode blive fikset, så du ikke behøver at være bange for at der bliver vist HTML eller kørt Javascript.

Nu er jeg jo selv amatør, så en blessing fra myplacedk ville være dejligt. :D
Gravatar #76 - myplacedk
26. nov. 2009 14:03
Daniel-Dane (75) skrev:
Nu er jeg jo selv amatør, så en blessing fra myplacedk ville være dejligt. :D

Jeg kan ikke lide at du blander HTML ind i database-koden. At håndtere HTML specialtegn mener jeg skal vente til du sender teksten ud til browseren, i stedet for mens du hælder det i databasen.

Jeg tror lige jeg skriver en bedre artikel om det. Kig tilbage senere i dag, er lige på arbejde.
Gravatar #77 - Daniel-Dane
26. nov. 2009 14:32
#76
Det skriver folk hele tiden. Men min wCMS er offline, og det giver alligevel ingen mening at konvertere det for hvert besøg.
Gravatar #78 - Jace
26. nov. 2009 17:50
Jeg bruger mysql_real_escape_string på alt hvad jeg smider i databasen, så det kunne godt tyde på at jeg "double-escaper" alting fordi magic_quotes også kører.

Jeg har prøvet at indsætte php_flag magic_quotes_gpc off i min .htaccess, men det lader til at de stadig bliver double-escaped. Jeg har min side hos UnoEuro, så jeg kan nok ikke komme ind og rode i php.ini :)

Er der en måde jeg kan tjekke på om magic_quotes er slået til eller fra?
Gravatar #79 - myplacedk
26. nov. 2009 18:57
Jace (78) skrev:
Er der en måde jeg kan tjekke på om magic_quotes er slået til eller fra?

Her er én måde: Kør phpinfo();

Lav en PHP-fil med dette:

<?php phpinfo();?>


Så får du noget i stil med det her: http://www.apinc.org/phpinfo.php - og der står rigtigt meget info. Bla. ting om magic_quotes.
Gravatar #80 - myplacedk
26. nov. 2009 19:24
Daniel-Dane (77) skrev:
Det skriver folk hele tiden.

Det kunne tyde på at der er noget om det. ;-)

Daniel-Dane (77) skrev:
Men min wCMS er offline, og det giver alligevel ingen mening at konvertere det for hvert besøg.

Hmm. Altså alle regler har en undtagelse. Hvad der er godt for noget er skidt for noget andet. Reglerne for softwareudvikling er modstridende, så man må altid lave kompromiser. Osv.

Men hvis du mener det jeg tror du gør, så vil jeg nu alligevel anbefale at følge mit råd. Men når nu du har et fungerende system, er det da ikke sikkert det kan betale sig at lave det om.
Gravatar #81 - myplacedk
26. nov. 2009 19:26
Så er min nye tekst online: Layers pattern for security

Den er hurtigt skrevet fra den ene ende til den anden, så sig endelig til hvis noget er uklart eller noget. (Her, som kommentar på siden, i en email, whatever.)
Gravatar #82 - Daniel-Dane
26. nov. 2009 19:49
Det er jo af sikkerhedsmæssige årsager, at man gør det. Altså i tilfælde af, at der sniger sig noget non-escaped kode ind (eller bliver SQL injected). Men jeg har intet brugerinput, kun admininput.
Gravatar #83 - myplacedk
26. nov. 2009 21:13
#82
Det er ikke KUN sikkerhed. I dit tilfælde vil god programmør-skik stadig give dig fordele. Fx:

[list]
[li]Simplere kode gør det nemmere at være programmør.[/li]
[li]Et bedre system er nemmere at bruge.[/li]
[/list]

Om det så kan betale sig at lave om er et godt spørgsmål. Men skulle du starte forfra, ville jeg klart anbefale at gøre det "ordentligt".

(Jeg rådgiver om den slags til dagligt, og ser ofte små uvigtige projekter gå i spunk, fordi folk tror god programmeringsskik er ligegyldigt ved små projekter - som dette.)
Gravatar #84 - Daniel-Dane
27. nov. 2009 07:08
#83
Hvordan er det simplere? Lige nu gør jeg det kun ved input i samme funktion, hvor jeg escaper strengene. Hvad du foreslår vil jo være dobbelt arbejde.
Gravatar #85 - myplacedk
27. nov. 2009 13:48
#84
Jeg kender ikke dit system, men hvis det virkelig kun er ét sted du gør det, ja så får du godt nok ikke meget ud af det. :)

Personligt ville jeg nu stadig foretrække at have "originalen" i databasen, så ændringer er lettere. Hvis det altså alligevel skulle laves fra bunden.
Gravatar #86 - Daniel-Dane
27. nov. 2009 14:49
#85
Dvs. at fora-cms'er faktisk gemmer den originale tekst i databasen og behandler den ved hvert evig eneste kald? Så ville en original OG en behandlet version i databasen være at foretrække, da det f.eks. vil spare masse resurser og loadtider. Tekst fylder alligevel ikke så meget.
Gravatar #87 - myplacedk
27. nov. 2009 15:03
Daniel-Dane (86) skrev:
Dvs. at fora-cms'er faktisk gemmer den originale tekst i databasen og behandler den ved hvert evig eneste kald?

Principielt, ja. I et stort system kan man lave optimeringer, som det meste af koden slet ikke er klar over. (Man kan sige at systemet simulerer at arbejdet bliver udført.)

Daniel-Dane (86) skrev:
Så ville en original OG en behandlet version i databasen være at foretrække

Det er en mulig optimering, ja. Især hvis man har få opdateringer i forhold til visninger. Til det vi snakker om her er det totalt overflødigt. Jeg er ret sikker på at det ikke er CPU-kraft du mangler. ;-)

Og det er forsvindende lidt CPU-kraft vi snakker om, optimeringssystemet kan nemt blive "dyrere" at afvikle, end hvad du kan spare.
Gravatar #88 - Jace
29. nov. 2009 22:59
Så har jeg vist fået slået magic_quotes_gpc fra:
http://www.jacobworsoe.dk/phpinfo.php

Jeg har slettet alle "stripslashes", men beholdt "mysql_real_escape_string" i koden, og har kørt nogle tests her:
http://www.jacobworsoe.dk/overskrift-til-indlaegge...

I databasen ser de to kommentarer således ud:
Tester &quot;aprostoffer&quot;
Og ogs&aring; de 'enkelte'

Begynder det at ligne et korrekt setup? :)
Gravatar #89 - myplacedk
30. nov. 2009 07:29
Hvis det er HTML du vil have i databasen, så ja.

Men som sagt ville jeg gemme plaintext. ;-)
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