Hoi,

Ik heb in een MySQL database sensorwaarden staan. Deze waarden lees ik uit en bewerk ik met PHP en toon ik in een grafiek. In de grafiek wordt data van die dag getoond.

Nu wil ik boven de grafiek twee knoppen maken met, "Volgende dag" en "Vorige dag" zodat je van andere dagen de sensorwaarden kunt zien. Ik moet dus op een of andere manier onthouden welke dag in de grafiek is ingeladen. Hoe kan ik dit doen?
Oke, bedankt. Dat moet wel gaan lukken!
Of je dat nou met real_escape_string, checkdate of op een andere manier doet maakt niets uit.
Let heel goed op: real_escape_string is geen wondermiddel.

Ik gebruik bijvoorbeeld geen quotes om getallen in queries. Dan is het gebruik van real_escape_string niet genoeg. De passage:

1 OR 1 [=] 1

EDIT: Zonder de [] dan, anders krijg ik een 403 Forbidden error als ik deze code probeer te plaatsen? LMAO.

bevat geen karakters die real_escape_string escaped.

Zou je dus je query als volgt opstellen:

"SELECT * FROM whatever WHERE id = ".mysqli_real_escape_string($link, $_GET['id'])


dan biedt dit geen bescherming tegen SQL-injectie als $_GET['id'] bovenstaande passage bevat!

Sommige mensen denken slim te zijn (maar in feite zijn ze gewoon lui) en doen dit:

"SELECT * FROM whatever WHERE id = '".mysqli_real_escape_string($link, $_GET['id'])."'"


Sure, de injectie is nu niet meer mogelijk, maar dit is de verkeerde oplossing voor het probleem. De uiteindelijke query is syntactisch wel juist (althans, deze vorm wordt geaccepteerd door MySQL maar je zou je kunnen afvragen waarom je een getal behandelt als string), maar als je invoer geen positief geheel getal bevat dan zal je query sowieso nooit resultaat opleveren.

Als je invoer van een bepaald formaat verwacht, controleer hier dan op, en doe anders niets (lees: voer anders de query in het geheel niet uit).

Hier geldt wederom de aloude regel: filter input, escape output.

Reageren