Door
CNEPHP -
op 15-01-2014 09:39
gewijzigd op 15-01-2014 09:52
1.850 views
Post staat onder deze categorie omdat de text editor in js is.
Beste,
Na het implementeren van mijn Rich Text Editor (uEditor.js) kan ik wel handmatig text toevoegen. Maar als ik bepaalde teksten kopieer en plak vanuit kladblok, wordt de tekst wel weergeven in de textarea.. Maar zodra ik het op sla, wordt het niet toegevoegd aan de database
Geen idee of het nu aan mijn PHP functie ligt (aangezien hij in een normaal textarea field wel alles succesvol wegschrijft) of dat het aan de Javascript code ligt.
zodra ik het op sla, wordt het zonder ene foutafhandeling gewoon niet toegevoegd aan de database
Lijkt me dat je geen of onvoldoende doet aan foutafhandeling. Controleer of de query goed is gegaan en check daarna ook of er daadwerkelijk iets is toegevoegd (affected_rows). Gebruik je mysql(i)_real_escape_string voor het de database in gaat? Anders kan het nog iets met de quotes te maken hebben.
Content niet geescaped, zodra er dus een quote in de tekst staat ga je helemaal nat. Of dat nu uit een gecopieerde tekst komt, of uit handmatig ingevoerde tekst zal mysql een worst wezen.
Geen foutafhandelijk, bouw een normale fout afhandeling in om te zien of je een database error krijgt. En denk om SQL injection, met deze code kunnen kwaadwilligen je database vernielen/hacken etc...
Let overigens wel op dat [php]mysql_query[/php] vanaf PHP 5.5.0 deprecated is, geen idee hoelang je dit script wil gaan gebruiken maar zodra je server overgaat naar 5.5 zal het dus niet meer werken.
Kijk als vervanger voor [php]mysqli_[/php] of [php]PDO[/php], dit staat overigens wel los van het probleem dat je hebt.
Wat is de beste manier om SQL injection tegen te gaan?
Toevoeging op 15/01/2014 10:51:35:
Chris NVT op 15/01/2014 10:17:51
Let overigens wel op dat [php]mysql_query[/php] vanaf PHP 5.5.0 deprecated is, geen idee hoelang je dit script wil gaan gebruiken maar zodra je server overgaat naar 5.5 zal het dus niet meer werken.
Kijk als vervanger voor [php]mysqli_[/php] of [php]PDO[/php], dit staat overigens wel los van het probleem dat je hebt.
Hebben meer mensen me opgewezen :p, ik denk dat ik mysqli ga gebruiken in mijn huidige site. Komt goed ;)
De beste manieren:
1 - filter alle user input via bijvoorbeeld [php]filter_var[/php] functies.
2 - typecast alle niet string variabelen naar hun echte type
3 - gebruik de mysqli_real_escape_string functie voor alle variabelen die je als waarde in een query wilt hebben
4 - (of in plaats van 3) gebruik prepared statements met parameters, dit kan in zowel mysqli of pdo.
5 - als je user input gebruikt om kolomnamen te selecteren, zorg er dan voor dat je niet klakkeloos de user input overneemt, maar gebruik een switch statement (bijvoorbeeld) om een voorgedefinieerde waarde te gebruiken
En de oplossing die alle problemen zal voorkomen
6 - geen user input gebruiken in queries....