Hallo allemaal,

Dit is eerder een vraag om advies over veiligheid.
Ik merkte deze functies onlangs op:
$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL);

Dus je kan input filteren tegen sql injectie bvb.

Nu vraag ik mij af of dit even veilig is om te gebruiken als de zelfgemaakte functies gelijk in wordpress.
bind_param is puur bedoeld om waarden in je query te stoppen. Deze hoef je verder ook niet te escapen, dat wordt dan door de database zelf gedaan. Als je meerdere waarden hebt heb je uiteraard ook meerdere bind_params.
ahaa, ja ik wou even weten wat de meerwaarde ervan was, ik dacht wel dat er zo iets achter zat.
Mits goed gebruikt is bindParam krachtig en veilig. Het nadeel is dat bij verkeerd gebruik al die meerwaarde overboord gaat. Denk hierbij aan alsnog waarden direct in de query plaatsen. Dat is iets dat ik vaak zie gebeuren (zie diverse topics op het forum) en doet de hele veiligheid teniet.
(ik zou trouwens htmlspecialchars() gebruiken in plaats van htmlentities() ivm betere compatibiliteit met bepaalde documenttypen - denk aan XML)

Anyhow, ik heb PDO altijd een rare gevonden. PDO alleen is eigenlijk niet genoeg. Als je dan toch de PDO-weg inslaat, ga dan ook "the whole way" en bouw ook een database abstractie laag. Als je enkel gebruik maakt van MySQL, waarom maak je dan geen gebruik van MySQLi? PDO is niet geschreven voor een specifieke database en alle adders onder het gras zitten (o.a.) in de database-specifieke drivers (PDO_MYSQL). MySQLi is daarentegen specifiek geschreven en geoptimaliseerd voor gebruik van MySQL (en wellicht ook voor MariaDB).

> het eeuwige/eindeloze mysqli-vs-pdo debat
> mysqli vs pdo recap
PDO vs mysqli, zeer intressant.
Ik was nu begonnen met PDO te gebruiken omdat ik dacht dat dit veiliger was.
Dat is voor mij het belangrijkste, hiervoor deed ik alles met mysql/mysqli.
Als je niet verwacht dat je ooit van database gaat wisselen zou ik zeggen maak gewoon gebruik van mysqli. Beide extensies zijn met hun mysql/mariadb specifieke functies even krachtig en even snel. En zelfs als je verwacht dat de database wisselt is het gebruiken van PDO niet genoeg. Je zult dan database specifieke queries moeten gaan schrijven. Denk aan het hebben van een insert_id in mysql/mariadb en het gebruik van RETURNING in een query in postgresql.
klopt, ik heb het aangepast

Reageren