webForumDet fria alternativet

När ska man använda vad?

PHP

3 svar · 403 visningar · startad av axed

Medlem sedan nov. 200136 inlägg
Frågan#1

Hej,

Funderar lite på det här med när man ska använda htmlspecialchars, addslashes etc?

Jag använder mig av PDO för att kommunicera med mysql. Vad jag förstår behöver man inte använda addslashes, stripshlases etc när man använder sk. prepared statements med PDO?

Men hur är det med htmlspecialchars? Ska man använda det på all text som ska sparas i databasen innan det just sparas eller är det när den hämtats från databasen och ska presenteras på sidan?

Medlem sedan aug. 2004903 inlägg
#2

jag brukar spara allting i "råformat" och sen när något ska ut från databasen så behandlar jag datan. Mer frihet på det sättet.

Medlem sedan feb. 2007278 inlägg
#3

Filter input - escape output

axed skrev:

Hej,
Funderar lite på det här med när man ska använda htmlspecialchars, addslashes etc?...

Här är grundregeln: Filter input - escape output!

htmlspecialchars - en slags escape - används alltså i det ögonblick du skall skicka data till användaren.

Databasfråga av insert, delete eller update - typ, är "output" till databasen. Då används (om man inte kör prepared statements) den funktion som stämmer med vald DBMS och valt API.

En grundtabbe är alltså följande:

1. Skriptet börjar med en escape-funktion
2. Data bearbetas
3. Data lagras

Följande är rätt tågordning:

1. Skriptet börjar med filtrering
2. Data bearbetas
3. Ev. data som lagras "escapas" för lagring (om ej PS)
4. Ev. ytterligare bearbetning (av icke-escapad data/hämtning från DBMS
5. Escape för visning på skärmen
6. Visning på skärmen

Vad är filtrering?

Kontroll av att indata uppfyller erforderliga kriterier och korrigering av acceptabla fel.

Jag har försökt illustrera filtrering i den fil som jag bifogade http://www.webforum.nu/showthread.php?p=1332022#post1332022

Den koden är tänkt att vara pedagogisk snarare än effektiv.

Medlem sedan nov. 200136 inlägg
#4

Ok, lite klokare blev jag nog. Tack för ett bra svar.

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)