explode php hulp

Gestart doorFreestyle15 reacties7 weergaven

16 berichten · pagina 1 van 2

Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik heb een stukje code, maar ik weet niet zeker of dit echt vertrouw baar is.

Ik heb zeg maar een link zoiets als:
verwijder.php?sessie=2-12-03-30

En dan wil ik de 2 (id) verwijderen uit de tabel. Dat doe ik zo:

[COLOR= #0000BB]<?php
$variable[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR]htmlentities[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_GET[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]sessie[/COLOR][COLOR= #007700]]));[/COLOR]
    [COLOR= #0000BB]$id[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/explode"]explode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]-[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$variable[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"DELETE FROM sessies WHERE id = "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$id[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]0[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]""[/COLOR][COLOR= #007700];[/COLOR]
?>


Is dit vertrouwbaar?

Edit: Voor dat mensen gaan zeuren, deze code is niet compleet. Zo word de query ook niet uitgevoerd.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Niet echt.
1. Ik kan een ander id invullen en log daar iemand anders mee uit.
2. Waarom htmlentities over je $_GET waarde? Htmlentities is enkel nodig bij het weergeven van tekst.
0
Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bedankt voor je snelle reactie.

Ik bedenk me nu ook dat ik in de query ben vergeten om de controleren of hij wel de goede gebruiker is.

2. Ik dacht tot dit tegen plain text ofzo iets was.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Freestyle schreef:
Bedankt voor je snelle reactie.

Ik bedenk me nu ook dat ik in de query ben vergeten om de controleren of hij wel de goede gebruiker is.

2. Ik dacht tot dit tegen plain text ofzo iets was.
Ja, dat is ook tegen plaintext. Maar je echod toch niks. Waarom gooi je er dan htmlentities overheen? Het is niet zo dat mysql niet tegen kan ofzo.
0
Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oke. Maar voor de rest is de code dus wel goed en vertrouw baar?

ps: Als ik iets in mijn db opsla dan gebruik ik toch wel htmlentities(); ?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Nee, je doet htmlentities() als je iets op een pagina wil weergeven. Jij wil dat nu niet, en dus hoeft dat ook niet.

En mysql_real_escape_string moet altijd, echt AL-TIJD, de laatste functie zijn die je aanroept als je iets in een query gebruikt.
Dus zo:

[COLOR= #0000BB]<?php
$variable[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_GET[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]sessie[/COLOR][COLOR= #007700]];[/COLOR]
    [COLOR= #0000BB]$id[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/explode"]explode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]-[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$variable[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"DELETE FROM sessies WHERE id = "[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$id[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]0[/COLOR][COLOR= #007700]]).[/COLOR][COLOR= #DD0000]""[/COLOR][COLOR= #007700];[/COLOR]
?>


Maar je checkt niet of $_GET[sessie] bestaat, je checkt niet of hij het formaat heeft dat je verwacht en je weet niet of de bezoeker die sessie wel mag verwijderen.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Freestyle schreef:
Oke. Maar voor de rest is de code dus wel goed en vertrouw baar?

ps: Als ik iets in mijn db opsla dan gebruik ik toch wel htmlentities(); ?
Nope. Als je iets opslaat, echo je dan iets? Nee.
Pas bij het echo-en wil je htmlentities erover gooien.

Stel je hebt een forum en je wil berichten kunnen editten, dan ben je fucked als je de gegevens met htmlentities in je database hebt gezet.

Voor zover ik kan zien je je code wel veilig. Maar ik zou mysql_real_escape_string pas aanroepen IN de query.

Edit Wat lennard dus zegt.
0
Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oke, bedankt! Weer iets nieuws geleerd biggrin
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Het is toch $id[0] i.p.v. $id[0] of heb ik het nou mis?
Mijn fout, het is toch $id[0] yes_new.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Nee niet jouw fout, het is inderdaad $id[0], al werkt dat andere ook.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Ow okay.. biggrin
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Xjessex schreef:
Ow okay.. biggrin
Getallen hoeven niet tusen haakjes, tekst wel wink
0
Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Vriendje schreef:
Eerdere citaten tonen
Xjessex schreef:
Ow okay.. biggrin
Getallen hoeven niet tusen haakjes, tekst wel wink
Tussen haakjes wel emo Tussen die hoeven getallen niet.

Lennard, maakt dat overigens veel uit?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Freestyle schreef:
Lennard, maakt dat overigens veel uit?
Nee, niks. clown
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Freestyle schreef:
Eerdere citaten tonen
Vriendje schreef:
Eerdere citaten tonen
Xjessex schreef:
Ow okay.. biggrin
Getallen hoeven niet tusen haakjes, tekst wel wink
Tussen haakjes wel emo Tussen die hoeven getallen niet.

Lennard, maakt dat overigens veel uit?
Lennard schreef:
Eerdere citaten tonen
Freestyle schreef:
Lennard, maakt dat overigens veel uit?
Nee, niks. clown
Nouja, het is gewoon beter om integers als integers te behandelen en strings als strings te behandelen. Zo voorkom je problemen in de toekomst.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren