Concatten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end Developer

Organisatie Voor een van mijn partners in de regio Amsterdam ben ik opzoek naar een ervaren Front-end ontwikkelaar die kan helpen met het opzetten van de nieuwe architectuur, het implementeren van nieuwe functies en het onderhouden van het product. Je bent op de hoogte van de nieuwste technieken Je bent in staat om het grotere geheel te zien en een robuuste oplossing te creeren je past goed binnen een informele werkomgeving het leggen van de basis van een grote applicatie is geen nieuwe terrein voor jou je bent in staat om herbruikbare en onderhoudbaar code te schrijven Team Organisatie bestaat

Bekijk vacature »

Cybersecurity Specialist

Must haves HBO werk- en denkniveau Werkervaring in complexe IT-omgevingen Minimaal 5 jaar ervaring als security specialist Je hebt kennis van en ervaring met (pen-)testtools als Burp Suite, Kali Linux, Nessus en diverse andere open source- of closed source testtools Je bent analytisch en doelgericht Het kunnen overleggen van een Verklaring Omtrent Gedrag (VOG) Uitstekende communicatieve vaardigheden in zowel Nederlands als Engels Nice to haves Meerdere jaren ervaring met code reviews, pentesten, informatiebeveiliging, hacking, IDS, IPS, SIEM Je hebt meerdere certificaten behaald van SANS (ISACA) / EC Council (CEH, CHFI) óf de bereidheid deze te behalen Je hebt ervaring met

Bekijk vacature »

Junior of medior .NET C# (web) ontwikkelaar, inhou

Ben je een junior of medior .NET C# ontwikkelaar en op zoek naar een nieuwe baan in Rotterdam? Een inhouse baan waar je werkt aan maatwerkapplicaties, direct contact hebt met klanten en samenwerkt met een leuk team van ontwikkelaars? Een baan waar je plezier haalt door de beste oplossing voor de klant te vinden? Wellicht dat deze organisatie dan iets voor jou is. Voor een software bedrijf in Rotterdam zijn we op zoek naar een .NET C# ontwikkelaar. Het bedrijf bestaat al meer dan 20 jaar en richt zich op het ontwikkelen van unieke software op maat (web, apps, desktop

Bekijk vacature »

Medior .NET Developer

Organisatie Ruim 15 jaar geleden is de organisatie opgericht en deze is gevestigd in regio Oss. Zij zijn specialist binnen hun vakgebied en worden door de grootste spelers op de markt benaderd voor de soft- en hardware die ze maken. Met een hechte groep collega’s heeft deze organisatie met hun producten bewezen dat zij een innovatieve speler zijn in de medische wereld. Momenteel draaien de producten die ze gemaakt hebben in meer dan 90% (!) van de operatiekamers van Nederlandse ziekenhuizen. Sterker nog, de producten die zij maken worden zelfs wereldwijd gebruikt voor het redden van levens! Hoezo een impact

Bekijk vacature »

Back-end junior C# .NET developer in regio Cuijk

Organisatie Voor een van mijn business partners uit de regio van Cuijk ben ik op zoek naar een C# back-end developer. Het bedrijf bestaat 12 jaar en is begonnen als websitebouwer. Inmiddels maken ze namelijk naast websites en webshops ook ERP systemen, portals voor samenvoeging van verschillende systemen en een aantal eigen producten. Daarnaast focussen ze zich veel op internetmarketing. Voor zowel het MKB als de groot zakelijke markt leveren ze maatwerk software-oplossingen. Samen met hun andere vestiging in Oost-Europa bedienen ze één klantenbestand. Het is een informeel bedrijf, waar je veel vrijheid krijgt, maar tegelijkertijd wordt er ook heel

Bekijk vacature »

Junior PHP Developer (Whizzkid)

Organisatie Het bedrijf is nu 8 jaar geleden achter de schermen begonnen met het ontwikkelen van hun product wat volledig gericht is op de “nieuwe manier van vervoer”. Wat ze daar mee bedoeling is dat ze echt kijken naar het vervoer van de toekomst. We hebben tegenwoordig zo veel verschillende manieren van vervoeren, welke is nou het beste? Om er voor te zorgen dat al deze verschillende transportmanieren gebundeld zijn hebben ze een nieuw platform ontwikkelt wat de organisatie 1000% per jaar laat groeien en op dit moment 20.000 gebruikers heeft. Zo werken ze samen met grote verzekeraars en automerken

Bekijk vacature »

Medior webdeveloper

Organisatie Yes, je mag weer naar kantoor! Je loopt langs het water naar jouw prachtige werklocatie. Eenmaal in de lift bedenk je wat je vandaag weer wilt gaan leren. Je komt boven aan in de grote open ruimte en de HR medewerker groet je vriendelijk. Bij de relax hoek zie jij je collega al met een lekkere bak koffie in zijn handen staan. “Dit wordt weer een productieve en leuke dag. We hebben namelijk een nieuw project binnen gekregen in de sportbranche die wij als team mogen gaan oppakken!” roept je collega. Vol enthousiasme kletsen jullie nog even door en

Bekijk vacature »

Gezocht sociale Full-Stack PHP Developer

Organisatie Je komt te werken in een bedrijf wat 10 jaar geleden is begonnen in de direct marketing maar door de jaren heen is ontwikkelt tot een communicatie en strategie bureau. Dit bedrijf is nu met zo’n 100 medewerkers verdeeld over 7 afdelingen. Ze werken voor verschillende bekende goede doelen en grote scholen. Elke dag wordt er samen gegeten en elke maand hebben zij de “domibo”. Daarnaast organiseert ook de personeelsvereniging verschillende uitjes en om de zomer af te sluiten hebben ze binnenkort een afsluitende BBQ. Functie Je komt te werken in een team van 5 developers op medior en

Bekijk vacature »

Mobile Developer

Wat je gaat doen: DPA GEOS is op zoek naar enthousiaste Mobile Developers om het team te versterken. Als Mobile Developer werk je in Agile teams bij onze klanten en ben je verantwoordelijk voor hun grotere mobiele web applicaties. Met collega’s ontwikkel je hoogwaardige software voor verschillende opdrachtgevers in jouw regio. Je ontwikkelt, adviseert over architectuur en past de nieuwste technologieën toe. Je bent een ambitieuze professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande interesse in Mobiele applicaties. Je staat met beide benen op de grond en je kunt goed samenwerken. Je bijt

Bekijk vacature »

Medior/Senior PHP developer (Starters/Junioren zij

Organisatie Voor een van onze partners in de regio van Zaltbommel ben ik momenteel op zoek naar een Medior PHP Developer welke niet alleen beschikt over kennis en ervaring in het programmeren maar ook de behoefte heeft met zijn kwaliteiten anderen te helpen met hun kwakkelende gezondheid. Deze organisatie is gespecialiseerd in het maken van eigen maar ook hele specifieke maatwerk software voor de zorg en overige overheden als de politie en de brandweer, daarnaast werken zij door het hele land met verschillende universiteiten samen om techniek en zorg zo goed mogelijk met elkaar te combineren. Wanneer iemand van 24

Bekijk vacature »

Senior .NET developer / Utrecht /

Heb jij wel eens een wandeling gemaakt in het park met je collega’s? Nee? Hoe vaak heb jij de mogelijkheid gehad om de stad in te gaan in de pauze? Ook niet? Lijkt het je wel lekker om midden in hartje centrum te werken met alle voordelen en gezelligheid van dien? En werk je graag met ambitieuze collega’s aan de nieuwste oplossingen op het gebied van ticketsoftware? Dan ben ik op zoek naar jou! Op een steenworp afstand van Utrecht Centraal, in hartje centrum, ligt een organisatie die is gespecialiseerd in de ontwikkeling van ticketsoftware systemen. Van online tickets bestellen

Bekijk vacature »

Software Developer C++ & Big Data Streaming Ex

Intro Would you like to join a company who is active in the high-tech industry and work on high-end software in the Brainport region of Eindhoven? For our client I am looking for a Software Developer C++ & Big Data Streaming Expert. About our client Our client creates the conditions that enable you to realize your full potential. They provide state-of-the-art facilities, opportunities to develop your talents, international career opportunities, a stimulating and inspiring environment, and most of all, the commitment of a company that recognizes and rewards outstanding performance. Job description In the role as (experienced) Software Developer C++

Bekijk vacature »

Junior+/Medior developer gezocht in Breda

Bedrijfsinfo Het dynamische bedrijf in de regio Leiden bestaat nu ruim 21 jaar heeft 45 mensen in dienst, waarvan 10 developers. Samen met het team ben je constant bezig met het ontwikkelen van maatwebsites en bijbehorende applicaties. Het kantoor dat gelegen is midden in een villa wijk, is verdeeld in verschillende ruimtes. Voor elke ruimte een andere ‘’tak van sport’’. De ontwikkelaars zitten bij elkaar net zoals de consultants. Doordat de directeur zelf ook developer is, ga je echt werken in een platte organisatie. Functieomschrijving Binnen de organisatie ga je aan de slag als PHP developer die zich gaat richten

Bekijk vacature »

Back-end Developer

Hey Backend Developer met allround IT Skills, Heb je heel even om het volgende te lezen? KWIKQY denkt dagelijks als een start-up. Do you love Back-end en heb je ook nog brede kennis van IT en/of server beheer in de Cloud (denk aan AWS of Google Cloud) ofwel ben jij een IT all-rounder? Cool! Dan is KWIKQY jouw toekomst, gegarandeerd! Ben jij zo gedreven dat jij als back-end developer de rots in de branding bent voor onze innovatieve en internationaal snel groeiende software tool KWIKQY? Vind jij afwisseling, persoonlijke groei, verantwoording, innovatie (denk aan kunstmatige intelligentie) en toekomst belangrijk? Dan

Bekijk vacature »

Lead developer gezocht voor Microsoft Partner

Vrijheid , Korte lijnen , Modern en Hip zonder Hiërarchieën. Dit is een korte beschrijving hoe de bedrijfscultuur er van binnen uit ziet. Voor deze groeiende organisatie in Utrecht ben ik op zoek naar een gezellige en communicatief vaardige Lead software developer met meer dan 5 jaar C# / .Net ervaring, Je gaat werken bij een organisatie dat zich voornamelijk bezig houdt met het ontwikkelen van maatwerk software die zij geheel zelf ontwerpen en aanleveren bij grote klanten. Denk hierbij aan gemeentes, Universiteiten , Ziekenhuizen en tal van andere sectoren. Flexibiliteit is belangrijk omdat de ontwikkelaars gewend zijn om vrijheid

Bekijk vacature »

Pagina: « vorige 1 2

Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 00:14:02
Quote Anchor link
Ivo P op 13/02/2019 13:32:45:
ik weet niet wat voor versie van mysqli jij gebruikt, maar met een ? werkt dat daar normaal wel.

http://php.net/manual/en/mysqli-stmt.prepare.php
http://php.net/manual/en/mysqli-stmt.bind-param.php


Mja.
http://fangorn.thijma.nl/images/phphulp/aint-nobody.png

Prepared statements in mysqli zijn "clunky as hell". Met enige discipline ben je beter af met zelf quoten + escapen.
Gewijzigd op 14/02/2019 00:24:33 door Thomas van den Heuvel
 
PHP hulp

PHP hulp

24/07/2019 09:55:29
 
Ozzie PHP

Ozzie PHP

14/02/2019 01:32:05
Quote Anchor link
@Ivo

>> In jouw query kan $id niet iets anders zijn dan een INT, neem jij aan.

Ja, omdat die waarde van een auto increment veld komt en dus niets anders dan een integer kan zijn.

>> En dan missen ook nog de ' ' om $id.

Dat hoeft bij een numerieke waarde toch ook niet?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 01:49:48
Quote Anchor link
Okay jongens, nog een keer, heel langzaam vanaf het begin.

Het probleem van het weglaten van quotes als deze "niet nodig zijn" is het volgende:

Elke keer als je een stuk code ziet waarbij dit het geval is zou er een kleine alarmbel af moeten gaan waarbij je denkt: "Hé, hier zijn geen quotes gebruikt, wat is hier aan de hand?". Vervolgens ga je na dat er inderdaad een id gevalideerd wordt, en deze wordt ook niet geaccepteerd (als het goed is) voor opname in de query (laat staan het dan uitvoeren hiervan!) als deze niet van het goede formaat is. Vervolgens concludeer je dat alles okay is.

En dit doe jij, of mogelijk iemand anders, ELKE KEER WEER als je deze code ziet. Je moet je er elke keer van vergewissen dat dit klopt. Dit is je reinste tijdsverspilling.

Het is in ieder geval veel makkelijker (Don't Make Me Think) om ALLE externe data te voorzien van quotes, en gewoon al dit soort data te escapen. Je hoeft er dan NOOIT over na te denken of dit "veilig" is of niet.

Nogmaals, ten overvloede, het gebruik van real_escape_string() zonder quotes is niet veilig (interne link) omdat real_escape_string() niets escaped als er niets te escapen valt.
Gewijzigd op 14/02/2019 01:52:47 door Thomas van den Heuvel
 
Rob Doemaarwat

Rob Doemaarwat

14/02/2019 07:11:51
Quote Anchor link
Eenmalig een wrapper class maken en klaar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
//bar wordt ook echt null, en niet ''
$db->execute('update tabelnaam set foo = :foo, bar = :bar where id = :id',['foo' => 5,'bar' => null,'id' => 5]);

//en voor recht-toe-recht-aan werk nog korter
$db->update('tablenaam',['foo' => 5,'bar' => null],['id' => 5]);

Nooit meer na hoeven te denken over quotes, nooit meer na hoeven te denken over escapen.
 
Ozzie PHP

Ozzie PHP

14/02/2019 10:49:59
Quote Anchor link
@Thomas

>> Het is in ieder geval veel makkelijker (Don't Make Me Think) om ALLE externe data te voorzien van quotes

Ik meen ergens gelezen te hebben in de documentatie van MySQL dat het niet wordt aangeraden om een getal (bijvoorbeeld een ID) te quoten. Hoe zit dat dan?
 
- Ariën -
Beheerder

- Ariën -

14/02/2019 11:13:41
Quote Anchor link
Hm... Als ik dus dit doe:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE tpb SET getal = 1

dan is er toch geen externe data?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE tpb SET getal = '".$_GET['something']."'

Deze is juist extern, en behoort sowieso van single-quotes te worden voorzien.
Én natuurlijk van de real_escape_string functionaliteit!!
Gewijzigd op 14/02/2019 11:14:26 door - Ariën -
 
Ivo P

Ivo P

14/02/2019 11:43:29
Quote Anchor link
als je SET getal = 1 doet, is het inderdaad overbodig.

maar zodra het wordt

$teller = 10;
...SET getal = $teller

vervallen we weer in het varhaal van Thomas: je moet weer terug kijken om te zien dat $teller inderdaad gevalideerd is.

Je 2e vraag met $_GET is heel duidelijk, maar elke andere variabele kán ook rare data bevatten.

Zo heb ik ooit een bug moeten zoeken waarom een van de medewerkers nooit een keuringsrapport kon opslaan en alle collega's wel.

Uiteindelijk bleek het probleem te zijn
UPDATE ..... SET medewerker = '$naam' .....

En helaas: zijn naam bevatte een '
Volkomen legitieme data, maar liet wel een query mislukken. En die naam kwam gewoon uit de database onder zijn user-gegevens (waarom niet volstaan kon worden met zijn user-id is weer een andere vraag.)
 
Ozzie PHP

Ozzie PHP

14/02/2019 12:39:11
Quote Anchor link
Maar ik meen dus ergens gelezen te hebben in de officiële documentatie dat je een getal niet behoort te quoten en dat dat werd afgeraden. Dus ik weet t nu ook niet.
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 17:19:52
Quote Anchor link
Bron?

En dit boeit echt niets of heel weinig. Althans niet voor MySQL.

Alleen wanneer je prepared statements gebruikt in MySQLi maak je gebruik van het zogenaamde "binaire protocol" waarbij er iets met types gedaan wordt, anders zijn het toch allemaal strings.

Hetzelfde geldt voor PDO, als je daar de emulatie van prepared statements niet uitzet zet PDO ook doodleuk overal quotes omheen en negeert deze de typehints als je values bind(t). En je moet de logs induiken om dit na te gaan, omdat je op geen enkele andere manier kunt zien welke concrete SQL-code nu daadwerkelijk aan je database wordt gevoerd.

Daarbij, dit is wederom een tradeoff: mogelijk lever je een heel klein beetje performancewinst in voor een eenvoudige en eenduidige werkwijze die altijd veilig is.

Of je bouwt een wrapper zoals @Rob voorstelt. Maar zelfs dan. Stuur je dan altijd eerst SQL-templates naar de database met een prepare(), zelfs als het SELECT-queries betreft? Ik zie best mogelijkheden om een mooie wrapper te bouwen, maar dat is in zekere zin allemaal abstractie en de vraag is dan wat voor meerwaarde dat heeft? Boven een rechttoe-rechtaan-aanpak in MySQLi?

En het wordt natuurlijk weer anders als je een echte database abstractie laag maakt (waar het tweede fragment van @Rob op zinspeelt?) maar ook daar zul je je moeten afvragen of die abstractie echt nodig is en zich ooit terugverdient.

Deze hele discussie is ook gewoon "backwards" omdat we het de hele tijd hebben over "het beste gereedschap" zonder hier een concrecte "klus" in te betrekken. Het laatste bepaalt het eerste, niet andersom...
Gewijzigd op 14/02/2019 17:53:23 door Thomas van den Heuvel
 
Ozzie PHP

Ozzie PHP

14/02/2019 17:58:49
Quote Anchor link
>> Bron?

Ja, als ik dat nog had kunnen terugvinden had ik het er uiteraard bij gezet.

In ieder geval wel stof tot nadenken.

>> mogelijk lever je een heel klein beetje performancewinst in voor een eenvoudige en eenduidige werkwijze die altijd veilig is.

Ja, dat stukje performancewinst boeit me niet eerlijk gezegd. Het stond er alsof het niet goed was om een getal te quoten.

Voor de rest met je eens hoor. Wat ik me wel afvraag ... ga je bijv. een id in een query dan nog escapen? Of zorg je ervoor dat je vantevoren die id al hebt gevalideerd? Wat is het beste? Eerst controleren of het een nummer is én dan ook nog escapen lijkt me overdreven?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 18:15:35
Quote Anchor link
> Eerst controleren of het een nummer is én dan ook nog escapen lijkt me overdreven?
Nee dat is niet overdreven. Je wilt geen enkele ruimte aan het toeval overlaten.

Je escaped dan dus nog steeds omdat je anders weer in de eerdere situatie terecht komt waarbij je niet weet of de quotes bewust zijn weggelaten of toch per ongeluk zijn vergeten. Je wilt hier niet elke keer weer over nadenken.

Je komt dan ook elke keer weer in een programmeerspagaat. Wel of geen quotes aanbrengen? Gewoon niet doen :p. Behandel alle externe data gewoon hetzelfde, is een stuk makkelijker.

Quoten + escapen en klaar.

En indien invoer in eerste instantie niet voldoet de query niet eens uitvoeren omdat dat zelden tot nooit een zinnig resultaat oplevert.
Gewijzigd op 14/02/2019 18:18:09 door Thomas van den Heuvel
 
Rob Doemaarwat

Rob Doemaarwat

14/02/2019 20:21:13
Quote Anchor link
Thomas van den Heuvel op 14/02/2019 17:19:52:
... echte database abstractie laag ... maar ook daar zul je je moeten afvragen of die abstractie echt nodig is en zich ooit terugverdient.

Zelf heb ik het idee dat ik er sneller door kan werken omdat ik minder code hoef te schrijven. Niet steeds die standaard stukken SQL, minder kans op fouten. Maar ook minder PHP omdat een groot deel van de afhandeling - lijstjes - er al in zit. Daarnaast loop je gewoon veel meer risico op een "misser" als je steeds handmatig moet escapen, en dat kan een *dure* grap worden.
 
Ozzie PHP

Ozzie PHP

14/02/2019 20:35:58
Quote Anchor link
@Thomas

Voor de duidelijkheid, dan wordt het dus bijv. zoiets?

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

$sql
= "SELECT '" . $conn->real_escape_string($foo) . "' FROM bar WHERE id = '" . $conn->real_escape_string($id) . "'";

?>


Correct?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 23:23:19
Quote Anchor link
> Daarnaast loop je gewoon veel meer risico op een "misser" als je steeds handmatig moet escapen, en dat kan een *dure* grap worden.
Sure, zoals ik al zei, je moet enige discipline hebben. Bij elk stuk data moet de realisatie zijn waar deze vandaan komt en hoe je deze zou moeten behandelen. Escaping hoort daar eigenlijk altijd bij (filter input, escape output). Uitzonderingen daarop zijn ook echt uitzonderingen.

> Correct?
Euh, $foo (kolomnaam?) waarom zou je dat dynamisch willen maken? Kolomnamen staan ook niet tussen quotes. Ik zou daar misschien een whitelist voor gebruiken ofzo. Voor $id lijkt het mij in orde. Quoten en escapen gaat bijna altijd over waarden, niet zozeer over kolomnamen, die liggen meestal vast.
 
Ozzie PHP

Ozzie PHP

15/02/2019 00:07:48
Quote Anchor link
>> Euh, $foo (kolomnaam?) waarom zou je dat dynamisch willen maken?

Pffff, ik lag blijkbaar te slapen. Haha, dat sloeg inderdaad totaal nergens op.
 
Ward van der Put
Moderator

Ward van der Put

15/02/2019 09:21:37
Quote Anchor link
Thomas van den Heuvel op 14/02/2019 23:23:19:
Euh, $foo (kolomnaam?) waarom zou je dat dynamisch willen maken? Kolomnamen staan ook niet tussen quotes.


Als je één (abstract) class wilt kunnen gebruiken voor verschillende tabellen, dan zijn dynamische kolomnamen onmisbaar. Dat kan overigens ook een constante zijn in plaats van een variabele:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
public function create(array $keyed_data)
{

    $columns = array_keys($keyed_data);
    $sql = 'INSERT INTO ' . static::TABLE_NAME . ' (' . implode(', ', $columns) . ') VALUES (:' . implode(', :', $columns) . ')';

    // etc.
}
?>


Hier zijn zowel de tabelnaam als alle kolomnamen dynamisch.
 
Ozzie PHP

Ozzie PHP

15/02/2019 10:42:06
Quote Anchor link
Ah ja, oké ... dan werk je dus niet echt met queries maar met aparte functies om bijv. iets te inserten of updaten en als parameters geef je dan de kolomnaam en argumenten mee aan de functie. Dat kan inderdaad ook.
 

Pagina: « vorige 1 2



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.