verificatie, veiligheid

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full-stack developer

Als Full-stack developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Samen met je SCRUM team werk je aan zowel de front- als de back-end. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en echt het verschil te kunnen maken. Ons ontwikkelteam bestaat uit ruim 40 ontwikkelaars, testers, scrum

Bekijk vacature »

C#.NET developer

Functie Het development team bestaat momenteel uit vijf backend C#/.NET ontwikkelaars. Op dit moment zit één ontwikkelaar dedicated op de mobiele applicatie. Als team werk je samen aan het zelf ontwikkelde software platform. Dit bestaat uit zowel apps als websites. Om het systeem door meer dan honderdduizenden gebruikers wordt gebruikt is het bijna vanzelfsprekend dat de kwaliteit van het product hoog moet liggen. Het systeem bestaat uit drie projecten. Je werkt dus aan deze drie projecten waarbij de focus op z’n tijd verschuift. De technieken die worden toegepast zijn o.a. .NET Core, Xamarin, C# en MVC. Je zal dus met

Bekijk vacature »

Starter/junior Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als starter/junior developer zul je direct begeleid worden door een senior uit het team. Het is van belang dat

Bekijk vacature »

Senior Organisatieontwikkelaar

Als Organisatieontwikkelaar zorg je ervoor dat we in het magazijn van Coolblue altijd vooruit voetballen op het gebied Medewerker en Organisatie Ontwikkeling. Zo draag je bij aan een toekomstbestendig magazijn waar we klanten én medewerkers elke dag blijven verwonderen. Wat doe je als Senior Organisatieontwikkelaar bij Coolblue? Als Organisatieontwikkelaar werk je voor het magazijn van Coolblue. Je krijgt er energie van om continue te bouwen aan een toekomstbestendige organisatie. Dat doe je samen met 17 collega's in het HR-team, ieder met een eigen specialisme. Je werkt graag zelfstandig en je weet snel je weg te vinden als verandermanager. Ook ben

Bekijk vacature »

.NET software developer

Functie omschrijving Voor een gewilde werkgever in omgeving Roosendaal zijn wij op zoek naar een back-end software developer met een aantal jaar werkervaring. Je krijgt een plekje in het workflow team en je zal betrokken worden bij het bouwen van nieuwe software, en het optimaliseren van bestaande code. Je werkt bij dit bedrijf in een Scrum team waarin je soms klantcontact hebt. Jouw werkzaamheden zullen er als volgt uit zien: Je krijgt een plekje op de in-house IT afdeling. Deze afdeling bestaat uit zo'n 12 collega's, verdeeld over verschillende specialisaties (BI, Beheer, Business software & workflow). De vacature staat open

Bekijk vacature »

Digital Agency is looking for PHP developers!

Functie The team currently has 20 colleagues, consisting of developers (front and backend) and the operations team, which also includes management and two scrum masters. They are looking for a PHP developer who is able to work independently. You will work in one of the three scrum teams and start working on a project for the customer. The interesting thing about this is that you do have variety in terms of work, but at the same time continuously work for existing customers. This also gives you the opportunity to really go into depth and develop innovative technical solutions. In terms

Bekijk vacature »

API Developer Red Hat Fuse

Dit ga je doen Als API Developer zal je verantwoordelijk zijn voor het: het maken van API's en het correct laten draaien van de API's op het platform. Hierdoor kom je in aanraking met Red Hat Fuse, Springt Boot, 3Scale, Red Hat SSO, Openshift en Azure DevOps; zorgen voor de kwaliteit van de ontwikkeling, integratie en prestaties van de API's; zorgen voor een stabiel integratieplatform. Hier ga je werken Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap dat hoofdzakelijk op OpenShift, Azure en

Bekijk vacature »

Java Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

C# Developer Research and Development - Delft

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Delft Vacature ID: 6307 Introductie C# Developer Research and Development - Delft - Onze klant is één van de meest innovatieve bedrijven in de region van Delft. Op dit moment zijn ze voor het innovatie centrum. In het innovatie centrum wordt gewerkt aan de nieuwste technieken voor navigatie software. R&D / C# / Pattern Recognition / Algorithms / 3d Data / DotNET Functieomschrijving Als C# Developer kom je te werken in een innovatief scrumteam. We ontwikkelen en door ontwikkelen de nieuwste technieken op het gebied van navigatie software. Deze software wordt onder andere

Bekijk vacature »

Senior Java developer

Als Senior Developer bij Sogeti ben je onderdeel van onze toonaangevende best-gecertificeerde Java community. Deze bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Aval en de Nationale Politie. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We

Bekijk vacature »

Low Code Developer voor o.a. overheidsprojecten!

Bedrijfsomschrijving Wil jij ook behoren tot de specialist in Low Code? Dan zou ik zeker aanraden om verder te lezen. Deze organisatie is ooit opgericht door twee studenten en is inmiddels uitgegroeid tot een serieuze werkgever met een groot aanzien op Low Code projecten. De sfeer is echter niet veranderd, er heerst een informele sfeer met een open deuren beleid, en hierin mag de eigen bar natuurlijk niet ontbreken. Momenteel maakt deze organisatie een flinke groei door en hier kan jij natuurlijk niet bij ontbreken. Daarom ben ik op zoek naar Low Code Developers met een degelijke technische achtergrond. Kennis

Bekijk vacature »

Ambitieuze Junior/Medior Low-code Developers gezoc

Bedrijfsomschrijving Transformeer bedrijven met jouw expertise in innovatieve technologie Ben je een bedreven softwareontwikkelaar met ervaring in Low-code platformen, of sta je te popelen om je in deze baanbrekende oplossing te verdiepen? Wij zijn op zoek naar jou! Ons klantenbestand groeit en we willen ons team uitbreiden met deskundige en leergierige Low-code specialisten. Is het jouw passie om organisaties te ondersteunen in hun digitale transformatie en maatwerkoplossingen te bieden met behulp van geavanceerde software? Wij zijn een vooruitstrevend bedrijf dat dagelijks werkt aan het oplossen van complexe vraagstukken om de digitale ambities van onze klanten te realiseren. Functieomschrijving Ontwikkel op

Bekijk vacature »

Lead C++ Developer

The role of Lead C++ Developer As Lead C++ Developer at KUBUS you will be responsible for the implementation design of requirements and the software architecture of the desktop applications of BIMcollab, our platform for 3D model validation and issue management aimed at improving the quality of 3D building design models. Better 3D models lead to better buildings, thus contributing to the sustainability of the built environment with smarter use of materials, less waste and energy-efficient buildings. A good user experience is of paramount importance to us; we go for innovation and quality in our development. In your role as

Bekijk vacature »

C++ Developer

Functieomschrijving Ben jij als software engineer toe aan een nieuwe uitdaging? Dan zijn wij op zoek naar jou! Voor het maken van de procesbesturingsoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Ontwerpen, programmeren en testen van productaanpassingen; Implementeren van nieuwe productreleases in de projectteams; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden,

Bekijk vacature »

Outsystems Developer Junior

Dit ga je doen Bouwen aan nieuwe en innovatieve applicaties; Maken van koppelingen tussen Outsystems en het bestaande applicatielandschap; Troubleshooting op bestaande software. Hier ga je werken De organisatie is internationale speler binnen de bouwbranche en richt zich op de infrastructuur, zowel boven als onder de grond. Ze zijn ruim 1100 man groot en maken op IT vlak een mooie groei door. Als junior Outsystems Developer kom je te werken op een IT-afdeling van zo'n 25 man groot. Een aantal jaar geleden hebben ze de keuze gemaakt om zich meer te gaan richten op ontwikkeling en door de groei van

Bekijk vacature »
Ozzie PHP

Ozzie PHP

03/04/2014 20:09:14
Quote Anchor link
Beste mensen,

Ik heb laatst hier al een vraag over gesteld, maar ik wil graag voor mezelf nog even een en ander op een rijtje krijgen. Aangezien deze vraag eigenlijk op heel veel classes van toepassing is, hoop ik op heldere antwoorden zodat ik voor mezelf de juiste keuze kan maken.

Ik ga nu als voorbeeld uit van een User, maar het kan eigenlijk om van alles gaan (een product, een nieuwsbericht, een adres enz.).

Ik zal de vragen nummeren zodat jullie makkelijker kunnen antwoorden.

1) Moet je informatie uit je eigen database beschouwen als veilig?

Stel iemand schrijft zich in op jouw site. De benodigde controles (geldige naam, geldige leeftijd e.d.) zijn uitgevoerd en de user belandt vervolgens in de database. Op een later moment haal je die gegevens weer op uit de database (bijv. omdat de betreffende user inlogt). Beschouw je deze gegevens nu als veilig? Of ga je alle gegevens weer opnieuw controleren?

2) Wie bepaalt of het een geldige User is? Doet de User class dat zelf? Of vindt de verificatie plaats via een aparte verificatie class (Verifier) en is de User class slechts een container die de geverifieerde data vasthoudt?

Een voorbeeld van wat ik hiermee bedoel:

Verificatie vindt plaats in de User class zelf:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$user
= new User();
$user->setName('Piet'); // controleert of de naam een string is en meer dan x tekens bevat
?>

Of... we maken gebruik van een Verifier class:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$verifier
= new Verifier();
$verifier->verifyName('Piet');  // controleert of de naam een string is en meer dan x tekens bevat
$user = $verifier->getUser(); // geeft een user-object terug op basis van de geverifieerde gegevens
?>

Hoe zouden jullie het aanpakken?
 
PHP hulp

PHP hulp

17/11/2024 09:04:36
 
Ivo P

Ivo P

03/04/2014 20:56:08
Quote Anchor link
Quote:
Moet je informatie uit je eigen database beschouwen als veilig?


Wat vind jij dan onveilig?
Dat er bijvoorbeeld een ' in een stuk tekst kan staan?

Dat zou nog steeds kunnen. Dus als jij van de user Jeanne d'Arc de naam opnieuw moet opslaan in een tabel, dan zul je nog steeds moeten escapen.

Lengte username:
Als je eenmaal hebt bepaald dat "Piet" geldige naam is, omdat hij meer dan x tekens lang is, dan moet je dat niet later afkeuren.

Stel dat Jo een goede naam was volgens jouw verificatie, omdat het minimaal 2 letters is.
Dan kom je op het idee dat een naam toch zeker wel uit 3 letters zou bestaan.

Jo doet een actie (zeg een post op een forum) en dan loopt het proces spaak op een te korte naam?


Sowieso vind ik een minimale lengte van een naam al dubieus. Ik heb vaak zat dat op 3 zien staan. Ik kom dan zelf nog goed weg, maar genoemde Jo niet.
En volgens mij zijn er zelfs (buitenlandse) namen van 1 letter.

Er is zelfs een dorp in Nederland met 2 straten die beide een straatnaam van 1 letter hebben.
Die mensen hebben vaak problemen om iets te bestellen: op basis van postcode wordt automagisch de straatnaam ingevuld in een form en dat kunnen ze niet aanpassen.
Vervolgens komt er zo'n leuk verificatie scriptje in actie om de invoer dan doodleuk af te keuren.






Toevoeging op 03/04/2014 20:57:45:

http://nl.wikipedia.org/wiki/Straatnaam#Langste_straatnamen
 
Wouter J

Wouter J

03/04/2014 21:22:27
Quote Anchor link
>> 1) Moet je informatie uit je eigen database beschouwen als veilig?

Opgeslagen gegevens beschouw ik als veilig.

>> 2) Wie bepaalt of het een geldige User is? Doet de User class dat zelf? Of vindt de verificatie plaats via een aparte verificatie class (Verifier) en is de User class slechts een container die de geverifieerde data vasthoudt?

Ligt aan het type validatie (sorry, maar ook dit is situatie afhankelijk). Stel we hebben een Money klasse, dan bepaald die klasse gewoon lekker zelf of de gebruikte currency wel valid is.
Maar bij bijv. een user waarvan de naam X tekens lang moet zijn zou ik gebruik maken van een buitenstaande Validator. De User object geeft dan zelf wel aan, doormiddel van metadata, aan welke eisen de waarde moet voldoen, maar het werkelijke valideren gebeurd door een validator.

Een heel simpel voorbeeldje met het gebruik van de Symfony validator (sorry, ik heb nog niet met een andere gewerkt):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

use Symfony\Validator\Mapping\ClassMetadata;
use Symfony\Validator\Mapping\Constraints as Assert;

class User
{
    private $name;

    public static function getValidationMetadata(ClassMetadata $metadata)
    {

        // met een "Constraint" leg je een bepaalde beperking op
        // in dit geval leggen we deze op een property (namelijke $name)

        $metadata->addPropertyConstraint('name', array(
            // het veld mag niet leeg zijn, een user zonder naam bestaat immers niet
            new Assert\NotBlank(),
            // het veld moet minimaal 5 tekens lang zijn, beetje onzin maar het gaat om het idee
            new Assert\Length(array('min' => 5)),
        ));
    }
}

?>
 
Dos Moonen

Dos Moonen

03/04/2014 21:37:56
Quote Anchor link
1) Moet je informatie uit je eigen database beschouwen als veilig?
Nee, maar het mag wel. Het wordt ook heel vaak gedaan.

Wel is het slim om het dat je gebruikt in je applicatie een zo beperkt mogelijke set rechten te geven.

Je zou ook één account kunnen hebben voor selects en één voor updates/inserts/deletes. Mocht er een sql-injectie lek in je search functionaliteit zitten dan kunnen ze alleen data bemachtigen. Ze kunnen zichzelf niet admin maken omdat het select account geen updates uit kan voeren.
Maar dan moet je in je code base wel het de juiste verbinding gebruiken voor de juiste query. Dan kun je je afvragen of het niet efficiënter is om een keer al je queries na te laten lopen door een tweede set ogen.

Een andere opties is om directe toegang tot tabellen te verbieden en stored procedures schrijft (op een account dat wel directe toegang heeft natuurlijk, aangezien stored procedures tenzij anders aangegeven uitgevoerd met de rechten van de owner) die een API vormen. Dan gebruik je in je applicatie een account dat alleen maar stored procedures aan mag roepen.



Als programeur moet je afwegingen maken. Paranoia kost werk, het is makkelijker om de data uit een database voor een groot deel te vertrouwen.
Tekst die door users ingevoerd wordt vertrouw je niet zomaar.
Tekst die niet door de applicatie ingevoerd kan worden zou je kunnen besluiten om blindelings te vertrouwen. Zeker als het account dat de applicatie gebruikt alleen select rechten heeft op die tabel. Het is makkelijker en wij programmeurs zijn lui!

Ik zou bijvoorbeeld een tabel timezone(id, identifier) kunnen vullen op basis van https://php.net/manual/en/datetimezone.listidentifiers.php
In theorie is het dan niet nodig om htmlspecialchars() over de waarde heen te gooien als ik het op een pagina wil printen omdat mijn applicatie geen bugs hoort te bevatten.
"In theory, there is no difference between theory and practice. But, in practice, there is." - source unknown.

De vraag is dus, wat mij betreft, hoe paranoïde ben jij?

2) Wie bepaalt of het een geldige User is? Doet de User class dat zelf? Of vindt de verificatie plaats via een aparte verificatie class (Verifier) en is de User class slechts een container die de geverifieerde data vasthoudt?
Ik heb niet heel veel verstand van SOLID, maar volgens mij zou volgens het "Single responsibility principle" user validatie zijn eigen class moeten krijgen...
 
Ozzie PHP

Ozzie PHP

03/04/2014 21:44:57
Quote Anchor link
>> Wat vind jij dan onveilig?
>> Dat er bijvoorbeeld een ' in een stuk tekst kan staan?

Nou, in een van mijn vorige topics zei iemand hier (ik weet niet meer wie) dat hij z'n data dubbel controleert, omdat mogelijk de database gehackt wordt en er andere gegevens in komen te staan dan die jij erin hebt gezet. Dus stel je slaat keurig de naam 'Piet' op in de database, en iemand zou dan de database hacken en in plaats van 'Piet' staat er nu in de database '<script>evil</script>'. En om zoiets te voorkomen, ging hij dus de gegevens uit de database telkens controleren.

>> Er is zelfs een dorp in Nederland met 2 straten die beide een straatnaam van 1 letter hebben.

Serieus? Welk dorp en welke straten??

>> Opgeslagen gegevens beschouw ik als veilig.

Ja, dat zou ik ook denken. En daar heeft mijn vraag dan ook echt betrekking op. Als je er vanuit gaat dat de informatie in de database veilig is, dan zou ik dus denken dat je de informatie vanuit de database rechtstreeks in een User object kunt injecteren en dat je die dus niet nogmaals hoeft te controleren. En in dat geval betekent het dus dat je inderdaad een aparte Verifier of Validator class zou moeten gebruiken. Correct?

>> Een heel simpel voorbeeldje met het gebruik van de Symfony validator (sorry, ik heb nog niet met een andere gewerkt):

Geeft niet, ik vind het al fijn dat je een voorbeeldje plaatst :)

En wat nu als ik, indien nodig, per class (in dit geval User) een validator maak, waarmee je dus zoiets kan doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$validator
= new UserValidator();
$validator->validateName('Piet');  // controleert of de naam een string is en meer dan x tekens bevat
$user = $validator->createUser(); // geeft een user-object terug op basis van de geverifieerde gegevens
?>

Zou dat een werkbare oplossing zijn?

>> Maar dan moet je in je code base wel het de juiste verbinding gebruiken voor de juiste query.

Oké. Als ik er services van maak zou dit vrij simpel te realiseren moeten zijn.

>> Ik heb niet heel veel verstand van SOLID, maar volgens mij zou volgens het "Single responsibility principle" user validatie zijn eigen class moeten krijgen...

Ik snap wat je bedoelt. Je zou dan een User en een UserValidator class verwachten. In de praktijk zie ik dit echter nergens, en wordt alles in de class zelf gecontroleerd. Vandaar ook mijn verwarring en onzekerheid of het wel de bedoeling is om met een losse Validator te werken.
Gewijzigd op 03/04/2014 21:46:23 door Ozzie PHP
 
Wouter J

Wouter J

03/04/2014 22:01:37
Quote Anchor link
>> Zou dat een werkbare oplossing zijn?

Ik vind zelf van niet. Het valideren zelf is namelijk niet afhankelijk van welk object je valideert, alleen het geen je moet valideren is afhankelijk van het object. Je zou dan zeggen: Inheritance!! Maar dan komen we weer op een punt dat ik vaak in mijn verhaal probeer duidelijk te maken: Inheritance is zelden het goede antwoord naar mijn mening. Je zou in dit geval af kunnen met 1 algemene validator en dan metadata. Je kan ook met 1 validator werken die bijv. het Traverser/Visitor pattern gebruikt en dan je eigen Visitors maken per object.
 
Dos Moonen

Dos Moonen

03/04/2014 22:13:41
Quote Anchor link
"Nou, in een van mijn vorige topics zei iemand hier (ik weet niet meer wie) dat hij z'n data dubbel controleert, omdat mogelijk de database gehackt wordt en er andere gegevens in komen te staan dan die jij erin hebt gezet."
Ik geloof niet dat ik zei dat ik dat doe, ik zei dat je data het liefst zo dicht mogelijk bij de opslag laag valideert.
 
Ozzie PHP

Ozzie PHP

03/04/2014 22:44:48
Quote Anchor link
>> Het valideren zelf is namelijk niet afhankelijk van welk object je valideert, alleen het geen je moet valideren is afhankelijk van het object.

Kun je iets toelichten wat je hiermee bedoelt. Ik heb de zin al een paar keer gelezen maar het kwartje valt niet.

Waarom is het volgen jou niet goed om in een UserValidator class te valideren of de gegevens voor de User correct zijn?

>> Ik geloof niet dat ik zei dat ik dat doe, ik zei dat je data het liefst zo dicht mogelijk bij de opslag laag valideert.

Was jij dat? Ik wist het niet meer. Maar ik meende dat je zoiets zei dat data uit de database niet per definitie veilig is.
 
Ward van der Put
Moderator

Ward van der Put

04/04/2014 07:48:33
Quote Anchor link
Ozzie PHP op 03/04/2014 21:44:57:
>> Er is zelfs een dorp in Nederland met 2 straten die beide een straatnaam van 1 letter hebben.

Serieus? Welk dorp en welke straten??

Dat zijn de straten A en B in Ottoland.
 
Willem vp

Willem vp

04/04/2014 11:09:33
Quote Anchor link
Ward van der Put op 04/04/2014 07:48:33:
Dat zijn de straten A en B in Ottoland.

En vergeet E in Zuidlaren niet. ;-)
 
Ivo P

Ivo P

04/04/2014 11:14:48
Quote Anchor link
zie ook de wiki link die ik bij mijn opmerking plaatste.

Ik heb eens een artikeltje geschreven over invoer validatie, met daarin zo ongeveer de opmerking: sluit niet uit dat jouw validatie niet deugt en dat de user het wel bij het rechte eind heeft.

Zo kan het dus zijn dat de straatnaam echt maar 1 letter heeft.
zo kan een telefoonnummer best langer zijn dan 10 cijfers. Niet alleen voor buitenlandse nummers, maar ook datanummers zijn tegenwoordig 12 cijferig

Hou het dus bij "mogelijk klopt uw invoer niet, weet u het zeker?" En niet botweg afkeuren.
 
Michael -

Michael -

04/04/2014 11:25:53
Quote Anchor link
>> Hou het dus bij "mogelijk klopt uw invoer niet, weet u het zeker?" En niet botweg afkeuren.

Dat is inderdaad wel een hele goede!
Meestal controleer ik of er minstens 2/3 tekens zijn ingevuld om te voorkomen dat ze maar even snel een karakter invullen en klaar. Daarom heb ik dus nooit mensen gehad uit Ottoland of Zuidlaren...
Gewijzigd op 04/04/2014 11:26:35 door Michael -
 
Wouter J

Wouter J

04/04/2014 11:31:58
Quote Anchor link
>> Kun je iets toelichten wat je hiermee bedoelt. Ik heb de zin al een paar keer gelezen maar het kwartje valt niet.

Toen ik hem schreef dacht ik al, oei dit wordt te cryptisch :) Wat ik bedoel is dat de manier hoe je valideert altijd hetzelfde is. Namelijk: Je kijkt of de waarde voldoet aan de voorwaarde. Het enige wat verschilt tussen verschillende klassen is de voorwaarde (dus wat je valideert). Als je dus per klasse een nieuwe validator zou schrijven gaan je met 100% tegen het DRY principe in.
Op het eerste gezicht zou je dan direct denken aan inheritance: Gewoon een algemene validator maken voor het valideren en dan gewoon per subvalidator aangeven wat de voorwaarden zijn.

Als je dan echter wat gaat nadenken kom je tot de conclusie dat inheritance hier niet goed is. Zo ga je namelijk alsnog tegen het DRY principe in.
 
Ozzie PHP

Ozzie PHP

04/04/2014 13:24:51
Quote Anchor link
@Ivo P

Da's inderdaad een bijzonder mooie tip!

@Wouter

Thanks voor de uitleg. Nu snap ik je al beter :)

Wat nu als je de validatie wél aan een aparte UserValidator class overlaat, zonder gebruik te maken van inheritance? Dus dat je zoiets krijgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

class UserValidator {

  public function validateName($name) {
    InputValidator::isString($name);
    InputValidator::stringMinChar($name, 2); // minimaal 2 karakters
  }

}

?>
 
Wouter J

Wouter J

04/04/2014 13:25:44
Quote Anchor link
zie jij wat ik zie? Iets met static functies? Iets wat tegen DI ingaat? Iets wat je totaal niet kunt testen? ;-)
 
Ozzie PHP

Ozzie PHP

04/04/2014 13:37:53
Quote Anchor link
Wat bedoel je Wouter :-/
Mag je nu ook geen statische methods meer gebruiken? :-(

En zo dan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

  public function validateName($name) {
    $this->input_validator->isString($name);
    $this->input_validator->stringMinChar($name, 2); // minimaal 2 karakters
  }

?>
 



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.