webForumDet fria alternativet

html_entities och säkerhet???

5 svar · 312 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

När jag började skriva på min hemsida tog jag det säkra före det osäkra och stoppade allt användande av bl.a.: ' " < >
Om någon skrev in dessa tecken fastnar de i en koll, ett mail skickas till mig och de får ett felmeddelande.

Senare skrev jag en gästsida och löste problemet med konstiga tecken på den sidan mha html_entities (eller hur den nu stavas) och inget mail.

Det jag egentligen skulle vilja är att - på samtliga sidor - få ett mail om någon skriver in potentiellt farliga tecken för att snabbt få en koll på ifall någon försöker ställa till något. Men samtidigt är html_entities en mycket bättre lösning än tvärstopp... Inte minst som man inte gärna ser att folk får sura meddelanden för att de skrivit "can't" eller dylikt.

Hur löser man detta? Jag har lite tvärstopp i hjärnan är jag rädd...

Hur gör ni?

MatteMedlem sedan aug. 20002 975 inlägg
#2

Du har ju redan kod för kontroll och mail vid postning, och htmlentities kan du köra när inläggen ska visas.

aasahMedlem sedan mars 20034 471 inlägg
#3

Jo, fast det funkar lite VÄL bra. :( Så jag vill göra om det.

På ett ställe ska folk skriva in svar i textfält. En person skrev: "I don't know." (Ett hyfsat rimligt svar i och för sig... dock inget jag hade väntat mig.) ' i don't ==> surt felmeddeland om "illegal characters" och mail till mig, vilket är skälet till att jag vet. Nu tycker jag att folk som skriver på liknande sätt inte ska stoppas utan helt enkelt få fel på den frågan... Därvid uppstår problemet.

Jag vill alltå inte stoppa den typen av frågor fortsättningsvis. Hur gör jag då?

zcorpanMedlem sedan dec. 20042 245 inlägg
#4

http://se.php.net/htmlspecialchars

Du behöver inte visa några felmeddelanden eller skicka några mail. "Olagliga" tecken ändras till entities (eller character reference, för enkelfnutten). :)

jawbreakerMedlem sedan jan. 2003296 inlägg
#5

Jag måste erkänna att jag har lite svårt för det här med att förbjuda vissa tecken. Skyddar man sig mot dem så är de väl inga problem?

Och du gör ju egentligen allting rätt:

1. Du skyddar dig mot "sql injections" genom att "escapa" alla enkelfnuttar i data som en användare postat, innan du använder denna data i en sql-fråga.
2. Du använder htmlentities() när du skriver ut data från databasen. Eventuell html- och javascriptkod m.m. kommer att visas som ren text.

Då finns det ingen större anledning att bry sig om vad användaren har skrivit in egentligen?

Om du trots allt vill hålla koll på vissa tecken m.m. så kan du väl bara se till att ett mail skickas till dig utan att användaren ser det och störs av det? Hans inlägg kommer ju ändå inte ställa till något menar jag...

MatteMedlem sedan aug. 20002 975 inlägg
#6

aasah skrev:

Jo, fast det funkar lite VÄL bra. :( Så jag vill göra om det.

På ett ställe ska folk skriva in svar i textfält. En person skrev: "I don't know." (Ett hyfsat rimligt svar i och för sig... dock inget jag hade väntat mig.) ' i don't ==> surt felmeddeland om "illegal characters" och mail till mig, vilket är skälet till att jag vet. Nu tycker jag att folk som skriver på liknande sätt inte ska stoppas utan helt enkelt få fel på den frågan... Därvid uppstår problemet.

Jag vill alltå inte stoppa den typen av frågor fortsättningsvis. Hur gör jag då?

Jag har svårt att förstå varför det överhuvudtaget skulle ses som "illegal characters".
Antingen har du magic_quotes_gpc satt på servern, eller kör du addslashes på variabeln från formuläret innan du stoppar in den in SQL-frågan.

När du hämtar från databasen kör du htmlentities på den:

echo htmlentities($row['message'], ENT_QUOTES);

Då behövs varken mail eller felmeddelande för det tecknets skull.

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)