Sublime Geplaatst: 15 november 2009 Rapport Geplaatst: 15 november 2009 hey, ik heb nu een complete website maar er is nog 1 klein probleem: als iemand: Party's typt en oplslaat komt er: party\'s in het profiel te staan. ik snap dat dit word gebruikt zodat er geen mysql injectie kan worden gebruikt maar is er ook een omgekeerde manier om bijvoorbeeld bij party\'s het weerk party's te maken? welk php of mysql query commando kan ik hiervoor gebruiken? Reageren
marcootje Geplaatst: 15 november 2009 Rapport Geplaatst: 15 november 2009 (bewerkt) Het probleem hier is niet het escapen, maar het probleem is dat dit 2 keer wordt gedaan. Oftewel, normaal zou je doen: $input = mysql_real_escape_string($_POST['input']); maar bij jou gebeurt dit (direct of indirect): $input = mysql_real_escape_string(mysql_real_escape_string($_POST['input'])); (of een andere escape-functie...) Controleer dit dus, dat deze functie maar 1 keer wordt uitgevoerd. Dat is gewoonweg het probleem. NB: waarschijnlijk wordt dus ergens aan het begin ge-escaped, en net voor het uitvoeren in de query. zoals in de gegeven code hierboven zal het natuurlijk niet voorkomen... Als je geen zin hebt om dat uit te zoeken en gewoon ff te cheaten door \ weg te halen, kun je dat met de php-functie stripslashes() doen. Bewerkt: 15 november 2009 door marcootje Reageren
Sublime Geplaatst: 15 november 2009 Auteur Rapport Geplaatst: 15 november 2009 (bewerkt) $overgroep = htmlentities(mysql_real_escape_string($_POST['over'])); Dit heb ik, ik heb mijn code gecheckt en er komt nergens dubbel de real_escape string voor.. maarja.. ik gebruik wel de strip fucnties ;p Bedankt! EDIT: op 1 of andere manier werkt deze code niet: <?php while ($shout = mysql_fetch_assoc($showgshout)){ $shout[taatunaam] = stripslashes($shout[taatunaam]); $shout[bericht] = stripslashes($shout[bericht]); echo "<i>$shout[taatunaam]:</i><br>$shout[bericht] <p>"; } ?> waarom niet? BV input: naam = matthijs bericht = party\'s Bewerkt: 15 november 2009 door Maikle Reageren
marcootje Geplaatst: 16 november 2009 Rapport Geplaatst: 16 november 2009 (bewerkt) kijk eens wat bijvoorbeeld $shout[bericht] bevat voor en na de stripslashes() door middel van een var_dump() of iets dergelijks? PS: tip: als ik jou was zou ik ook proberen de officiele syntaxes aan te houden, dus niet $shout[bericht] maar $shout['bericht'], en niet zomaar variabelen in een tekenreeks opnemen, maar met echo(" ".$var." "); Bewerkt: 16 november 2009 door marcootje Reageren
David22 Geplaatst: 16 november 2009 Rapport Geplaatst: 16 november 2009 $overgroep = htmlentities(mysql_real_escape_string($_POST['over'])); Kan je niet beter... $overgroep = strip_tags(mysql_real_escape_string($_POST['over'])); ... doen? Dan trek je namelijk ook de PHP-code eruit, geloof ik... Reageren
kristof01 Geplaatst: 16 november 2009 Rapport Geplaatst: 16 november 2009 Ik geloof dat je met de UPADATE code van SQL moet werken. Reageren
Sublime Geplaatst: 22 november 2009 Auteur Rapport Geplaatst: 22 november 2009 Kan iemand bevestigen dat stiptags beter werkt? Reageren
marcootje Geplaatst: 22 november 2009 Rapport Geplaatst: 22 november 2009 Naar mijn idee kun je beter htmlentities() gebruiken. Hiermee vang je ook bijvoorbeeld < op als deze niet in een tag zit. Het probleem is namelijk dat als ergens een < komt te staan zonder een verdere tag, hij wel als tag wordt gezien, oftewel verkeerd geparsed wordt. Daarnaast bevat het ongeveer alle functionaliteit van strip_tags volgens mij, er kan geen code meer worden uitgevoerd. Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.