Autocomplete, Input filteren, output sanitizen, maar hoe doe je dat bij autocomplete

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan te Pas

Jan te Pas

14/05/2018 08:53:15
Quote Anchor link
Ik let er sterk op om de input van gebruikers te filteren. Ik valideer alles voordat een formulier gepost kan worden. Nu heb ik een autocompleteveld, dat werkt perfect. Na het veld check/valideer ik de input. Maar ik vraag mij af welke gevaren op de loer liggen inzake beveiliging bij “autocomplete, omdat je real time gegevens opvraagt uit de database die de gebruiker invoert.. Het veld reageert direct op de input. Wat moet en kan ik doen om hier geen poedel te krijgen? Jullie hier op het forum kennen de bezwaren en haken, ogen. Graag jullie advies.
 
PHP hulp

PHP hulp

29/03/2024 13:53:38
 
- Ariën  -
Beheerder

- Ariën -

14/05/2018 09:04:58
Quote Anchor link
Ook hier geldt: Je data escapen tegen SQL-injection.
 
Jan te Pas

Jan te Pas

14/05/2018 09:20:42
Quote Anchor link
- Ariën - op 14/05/2018 09:04:58:
Ook hier geldt: Je data escapen tegen SQL-injection.

Dank Ariën. Alles dichttimmeren. De autocomplete-functie gebruikt PDO op de juiste wijze, heb ik nu uitgeplozen met prepare etc en zorgen al voor een veiliger systeem. Weer iets geleerd. Dank!
Gewijzigd op 14/05/2018 09:31:21 door Jan te Pas
 
Thomas van den Heuvel

Thomas van den Heuvel

14/05/2018 14:04:11
Quote Anchor link
Hm.

Het idee van autocomplete is juist dat je de gebruiker geen keuze laat in wat deze (uiteindelijk) invult. Dit doe je voor de gebruiker, dat is het idee van autocomplete.

Het is gewoon zaak dat datgene wat uiteindelijk opgeslagen wordt een geldige waarde heeft. Je zou daartoe nogmaals de invoer kunnen controleren aan de hand van een lijst van toegestane waarden. Hoe dit er verder uitziet hangt van de autocomplete informatie af. Ook toon je ook vaak een andere (voor gebruikers leesbare) waarde dan de daadwerkelijke waarde die je opslaat (bijvoorbeeld een autoincrement id bij een plaatsnaam ofzo).

Dit staat in principe verder los van een veilige omgang met DATA binnen een SQL statement. Dat is een syntactische aangelegeheid (vorm).

Bij de informatie van een autocomplete veld is het zaak dat deze een geldige waarde uit een specifieke set bevat. Wat je opslaat moet voor de tabel/database hout snijden, dus dat is dan meer een semantische aangelegenheid (betekenis).
 
Rob Doemaarwat

Rob Doemaarwat

14/05/2018 20:27:40
Quote Anchor link
Thomas van den Heuvel op 14/05/2018 14:04:11:
Het idee van autocomplete is juist dat je de gebruiker geen keuze laat in wat deze (uiteindelijk) invult. Dit doe je voor de gebruiker, dat is het idee van autocomplete.

Dat hoeft niet. Anders kun je (soms) ook gewoon een <select> gebruiken. Meestal gebruik ik een autocomplete om de gebruiker (al tijdens het typen) te laten weten wat er al "bekend" is. Uit de autocomplete lijst kan ie dan snel de juiste keuze maken (minder typen, minder kans op fouten). Als de gebruiker echter zeker te weten iets nieuws/anders in wil voeren, dan kan dat wel. Dat is (mijns inziens) juist het grote voordeel van een autocomplete.

On topic:

De meeste autocomplete "add ons" (zoals bijvoorbeeld die van jQuery) geven je al de mogelijkheid om de "opvraagfrequentie" te beperken (bijvoorbeeld pas als de gebruiker meer dan zoveel milliseconden geen toets meer heeft aangeraakt, en pas vanaf een aantal karakters). Server-side zou je zoiets ook nog kunnen doen. Dus bijvoorbeeld het aantal bevragingen (binnen een sessie) beperken, en het minimum aantal karakters controleren.
 
Jan te Pas

Jan te Pas

14/05/2018 20:38:44
Quote Anchor link
Rob en Thomas, dank voor de nuttige toevoegingen. Top! Grote dank.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.