geavanceerd zoeken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

VB.NET developer

Functie Het development team waar jij in terecht komt bestaat uit twee ervaren software developers. De directeur/eigenaar is tevens één van deze developers. Jij werkt direct samen met jouw werkgever en kan dan ook veel kennis en ervaring bij dit bedrijf op doen. Als team zijn jullie verantwoordelijk voor de kantoorapplicatie die deze organisatie aanbied in een niche markt. Het team is op dit moment actief bezig met een migratie waarbij het eindstation eindigt in een C# .NET omgeving. Echter is een deel van de software al geschreven in C# .NET. Hierbij is gebruik gemaakt van C# .NET, CSS, HTML,

Bekijk vacature »

Software developer

Functieomschrijving Voor een gewaardeerde werkgever in de regio van Middelburg zijn wij op zoek naar een ambitieuze PHP/Symfony Developer. Een enthousiast persoon die het development team komt versterken met het aanpakken van complexe en nieuwe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel persoonlijke als professionele groei? Lees dan snel verder! Dit ga je doen: Aanpassingssuggesties van collega’s in kaart brengen, vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Ontwikkeling en beheer van de serviceportal in Symfony en

Bekijk vacature »

.NET Developer

Dit ga je doen Tot jouw takenpakket behoort onder andere: Webapplicaties ontwerpen, bouwen, testen en implementeren in .NET/C#.; Ontwikkelen, implementeren en beheren van maatwerkapplicaties; Onderhouden en beheren van standaardpakketten; Onderzoeken en beoordelen van nieuwe technieken. Hier ga je werken Als .NET ontwikkelaar kom je te werken bij een grote semioverheidsinstelling in Nijmegen. De organisatie staat garant voor het leveren van onderwijs en les- en onderzoeksmateriaal voor duizenden betrokkenen. De organisatie wil bijdragen aan een gezonde, vrije wereld met gelijke kansen voor iedereen. Binnen de teams hangt een open en collegiale cultuur met veel aandacht voor een prettige en sociale werksfeer.

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Back end developer Python, PHP

Functie Jij als full stack ontwikkelaar zult komen te werken samen met 1 PHP ontwikkelaar een PO en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult voornamelijk (lees 75%) werken aan de roostersoftware. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere flexwerkers ingezet kan worden. Verder willen ze financiële koppelingen gaan maken

Bekijk vacature »

Ervaren Software Developer

Functie omschrijving Ben jij een ervaren Software Developer, en heb je ervaring met technieken zoals C#, MS Access & SQL? Vind jij het leuk om maatwerk software te ontwikkelen voor klanten in een specifieke branche? Dan is dit de baan voor jou! Als ontwikkelaar ben jij samen met een team van 12 collega’s verantwoordelijk voor het bouwen van nieuwe functionaliteiten en het uitbreiden van de core applicatie. Belangrijk is dat je ervaring hebt met C# en MS Access. Je bent flexibel en klantvriendelijk ingesteld, omdat het belangrijk is om de klanten zo goed mogelijk van dienst te kunnen zijn. Thuiswerken

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

Bekijk vacature »

.NET developer

Functie As a .NET developer you work together in a multidisciplinary development team with 1-2 Senior .NET developers, two front-end developers, Data Scientists and one UX designer. As a team you work on developing a Cloud based application and making this application more stable. Unit testing will also become very important in your new position. Together with the Senior .NET developer you will be responsible for developing the API. You work with a lot of data and occasionally there will also be data issues and some queries will have to be run. This means that you will work a lot

Bekijk vacature »

.net developer

Hoi! Wij zijn auto.nl en wij verkopen auto's online. je bestelt bij ons een auto net zo makkelijk als een spijkerbroek. En bevalt ie niet? Dan stuur je 'm gewoon weer terug. En dat we dat goed doen bewijst onze hoge klanttevredenheid van een 9,3. Nu maken we de volgende stap bij auto.nl. We starten met fysieke winkels. Online zoeken, offline bekijken. Maar nog altijd, geen gedoe! Gewoon eerlijk, transparant en zonder zorgen een auto kopen.. Maar om dat waar te blijven maken en nóg beter te worden, zoeken we uitbreiding van ons development team. Wat ga je precies doen?

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Lead Webdeveloper

Als Lead webdeveloper bij KUBUS ben je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de webapplicatie en services van BIMcollab. In je rol als lead developer zoek je als vanzelf op een creatieve manier naar het optimum tussen benodigde implementatie-tijd, de performance van de applicatie en een snelle go-to-market van features, aansluitend bij onze geautomatiseerde test- en release train. Hierbij bewaak je in samenwerking met de andere senior ontwikkelaars in je team de architectuur van de applicatie en adviseer je de product owner over noodzakelijke refactoring om de onderhoudbaarheid van het platform te verbeteren. Ons

Bekijk vacature »

Medior/Senior Software Developers gezocht in de Ra

Functie Op dit moment staan er posities open voor de volgende functies: Front-end, Back-End & Fullstack software developer. Als Front-End software developer werk je met JavaScript en de bijbehorende technologieën zoals TypeScript, Angular, React, Vue en Svelte. Als Back-End software developer ben je bezig in NodeJS en doe je dit met behulp van AWS, NoSQL, REST en GraphQL. Je krijgt leuke en uitdagende opdrachten met een gemiddelde duur van anderhalf jaar. Hier werk je in een team met andere IT’ers aan het ontwikkelen en verbeteren van software. Je wordt begeleid door een accountmanager die fungeert als jouw aanspreekpunt. Het team

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een uitdagende werkgever in regio Breda zijn wij op zoek naar een Full Stack C#.NET programmeur. Je bent verantwoordelijk voor het ontwikkelen van apps, webapplicaties en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines te scannen en vervolgens de data om te zetten in management informatie voor de klanten. Taken en verantwoordelijkheden: Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks, HTML, TypeScript, SQL & C++, CSS. Geen ervaring met één van deze technologieën is dan ook geen enkel probleem! Deze werkgever biedt

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen voor

Bekijk vacature »
Robert Jansen

Robert Jansen

22/10/2017 13:28:03
Quote Anchor link
hallo,

ik ben bezig met het maken van een script om geavanceerd te kunnen zoeken.
er zijn drie kolommen: titel, jaar en vol_naam (dit zijn dus ook drie invoervelden in het formulier)
Als je alle drie de formulierenvelden invuld en dan uitvoert dan werkt de zoekfunctie.
Maar als je alleen op titel zoekt en de andere twee velden niet invuld dan krijg ik de foutmelding: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given.

ik heb geprobeerd dit op te lossen door een nieuwe case te maken en met een multiquery maar dit werkt dus ook niet.

mijn vraag is: hoe kun je, als je alleen het titel veld invuld dat je dan alleen op titel zoekt en de andere velden 'negeert'?

de code is:
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
23
24
25
26
27
28
29
30
31
32
if(isset($_POST['zoeken'])){

$zoekwoord = $_POST['zoekwoord'];
$beginjaar = $_POST['beginjaar'];
$eindjaar = $_POST['eindjaar'];

if(isset($_POST['criteria'])){
    $select1 = $_POST['criteria'];
    $bijdrager = $_POST['bijdrager'];
    switch ($select1) {
        case 'titel':
        $bijdr_id = $_SESSION['bijdr_id'];
            echo $bijdr_id;
            $sql = "SELECT f.titel, f.jaar, b.vol_naam FROM tblfoto_info f, tblbijdrager b WHERE (b.bijdr_id = f.bijdr_id OR titel LIKE '%" . $zoekwoord .  "%' OR jaar BETWEEN $beginjaar AND $eindjaar) AND b.bijdr_id = $bijdr_id";
            
                    $result = mysqli_query($conn, $sql);

                   while($row = mysqli_fetch_assoc($result)) {
                     $titel = $row['titel'];
                     $jaar = $row['jaar'];
                     $bijdrager = $row['vol_naam'];
                     // $info = $row['info'];
                      echo "<ul>";
                       echo "<li> $titel</li>";
                       echo "<li>$jaar</li>";
                       echo "<li>$bijdrager</li>";
        //echo "<li>$info</li>";
                echo "</ul>";
              }
            break;

}}}
 
PHP hulp

PHP hulp

08/12/2024 12:50:01
 
Ben van Velzen

Ben van Velzen

22/10/2017 13:49:25
Quote Anchor link
Waar is de foutafhandeling voor de query? De reden is eenvoudig genoeg, als je beginjaar en eindjaar niet invult krijg je een query die niet klopt.
 
Robert Jansen

Robert Jansen

22/10/2017 14:10:18
Quote Anchor link
ok, maar hoe kun je dit het beste afhandelen?
 
Ben van Velzen

Ben van Velzen

22/10/2017 14:24:28
Quote Anchor link
Door te controleren of de velden ingevuld zijn, en als dat niet zo is een andere query draaien. Maar begin eens met het inbouwen van foutafhandeling, dan had je dat ook meteen gezien.
Gewijzigd op 22/10/2017 14:25:17 door Ben van Velzen
 
Thomas van den Heuvel

Thomas van den Heuvel

22/10/2017 19:18:15
Quote Anchor link
Wat je in feite moet doen -als niet alle invulvelden verplicht zijn- is de query stap voor stap opbouwen.

Als je enkel een beginjaar invult zul je dus bijvoorbeeld moeten kijken vanaf dat jaar, als je enkel een eindjaar invult zul je moeten kijken tot (en met of tot en zonder) dat jaar. Als je beide invult zul je hiertussen moeten zoeken.

De vorm van je uiteindelijke query hangt dus direct af van de al dan niet ingevulde velden.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/10/2017 20:19:46
Quote Anchor link
Voorbeeldje over wat Thomas zegt:

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
23
24
25
26
27
28
29
30
31
32
<?php
// initialisatie
$titel = null;
$beginjaar = null;
$eindjaar = null;

/* overschrijf de variabelen met de POST variabelen, bijvoorbeeld: */
if(isset($_POST['titel'] && !is_empty($_POST['titel'])) {
    $titel = $_POST['titel'];
}


// en zo het zelfde voor beginjaar en eindjaar

$sql = 'SELECT * FROM tabel';
$whereParts = array();

if($titel !== null) {
    $whereParts[] = "titel LIKE '%" . $titel .  "%'";
}

if($beginjaar !== null) {
    $whereParts[] = "jaar >= $beginjaar";
}

if($eindjaar !== null) {
    $whereParts[] = "jaar <= $eindjaar";
}

if(count($whereParts)) {
    $sql . = ' WHERE ' . implode(' AND ', $whereParts);
}


$result = mysqli($conn, $sql);
// ...
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

23/10/2017 00:13:32
Quote Anchor link
Belangrijke kanttekening bij @Frank zijn verhaal (ik snap dat dit enkel bedoeld was om te illustreren hoe het opbouwen verloopt, zonder het voorbeeld verder ingewikkelder te maken).

Wat je dus in feite hebt is dus een SQL-string met afwisselend SQL en (USER) DATA van buitenaf:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
[SQL][DATA][SQL][DATA][SQL]

Het is heel erg belangrijk dat de DATA in de SQL-query niet geïnterpreteerd kan worden als SQL-code. Hiermee zou iemand effectief de werking van de query kunnen aanpassen die in het meest vervelende geval lijdt tot manipulatie of diefstal van gevoelige informatie. Dit (DATA die als SQL geïnterpreteerd wordt) staat beter bekend als SQL-injectie.

Wat je hier enerzijds tegen zou kunnen doen is je invoer filteren: jaartallen zouden numeriek moeten zijn.

Maar wat misschien nog veel belangrijker is is het escapen (en daarmee onschadelijk maken) van uitvoer. Hiermee zorg je ervoor dat DATA niet als SQL geïnterpreteerd kan worden en hierdoor is SQL-injectie niet meer mogelijk.

Je escaped uitvoer (USER DATA) door middel van het toepassen van de escaping-functie real_escape_string() IN COMBINATIE MET het quoten (voorzien van quotes) van de ge-escapete string. Het een is NIET VEILIG zonder het ander.

Wat je moet begrijpen is dat real_escape_string() enkel speciale karakters (die een speciale betekenis binnen SQL hebben) onschadelijk maakt. real_escape_string() is dus geen wondermiddel. Het volgende stuk tekst (dit zou dus een ingevoegd stuk DATA kunnen zijn) bevat informatie die een speciale betekenis in SQL heeft, maar die verder ongemoeid wordt gelaten door real_escape_string():
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
OR 1=1

Dit zou catastrofale gevolgen kunnen hebben die (bijvoorbeeld) securitychecks bypassen. Zorg dus dat je ALTIJD quotes om de ge-escapete DATA-passages zet.

Wees dus altijd zeer voorzichtig wanneer je USER DATA gebruikt en een goede gewoonte is om deze NOOIT te vertrouwen.
Gewijzigd op 23/10/2017 00:17:48 door Thomas van den Heuvel
 
Robert Jansen

Robert Jansen

23/10/2017 14:18:49
Quote Anchor link
ok, bedankt voor de info.
Ik heb een vraag over de real_escape_string().
Als je OR 1=1 uitvoert in een form veld, heb je dus een sql injectie, ook maak je gebruik van real_escape_string().
Maar als je nu gebruik maakt van prepared statement, is dit dan wel waterdicht?
zie http://php.net/manual/en/mysqli-stmt.bind-result.php

Hoe kun je dan het beste beschermen tegen sql-injecties?
 
Thomas van den Heuvel

Thomas van den Heuvel

23/10/2017 14:40:55
Quote Anchor link
Quote:
Als je OR 1=1 uitvoert in een form veld, heb je dus een sql injectie, ook maak je gebruik van real_escape_string().

Nee, dat is niet wat ik zeg. Wat ik bedoel is dat je real_escape_string() altijd moet gebruiken in combinatie met quotes. Alleen deze combinatie is veilig. Enkel (enkele) quotes om invoer zetten is niet veilig. Enkel real_escape_string() gebruiken is niet veilig. Alleen de combinatie.

Quote:
Maar als je nu gebruik maakt van prepared statement, is dit dan wel waterdicht?

Geen enkel verkeerd gebruik van een methode is veilig :). Als je bijvoorbeeld de DATA nog steeds concateneert in een string in een opzet waarbij je prepared statements zou gebruiken ben je nog steeds nat (dit is dus een verkeerd gebruik). Daarnaast is -in ieder geval in MySQLi- het gebruik van prepared statements nogal omslachtig. Ik gebruik dit in ieder geval niet, teveel moeite om data uit de database op te hoesten. Tenzij je wellicht een wrapper schrijft die je het leven wat aangenamer kan maken. Nee, met enige discipline kun je best zonder prepared statements.

Quote:
Hoe kun je dan het beste beschermen tegen sql-injecties?

Je kunt je het beste wapenen tegen SQL-injectie door de principes die dit mogelijk maken te begrijpen, en hier vervolgens op te acteren. In mijn vorige bericht doe ik beide uit de doeken.

Daarnaast moet je in alles wat je doet je bewust zijn van input (stel jezelf de vraag: kan ik deze DATA vertrouwen (spoiler: het antwoord is bijna altijd NEE, zelfs als de data in je database zit, als je deze weer uitleest zou je deze nog steeds niet moeten vertrouwen want deze is afkomstig uit een externe bron)) en output.

Input zou je altijd moeten filteren als deze aan een bepaald formaat zou moeten voldoen en output zou je altijd moeten escapen binnen de context (HTML, SQL et cetera) waarin je werkt, tenzij je hier een speciale -en gedocumenteerde- reden voor hebt om dit niet te doen. Kort gezegd is dit de aloude vuistregel filter input, escape output. In alles wat je doet.

Daarbij moet gezegd worden dat (een correcte werking van) escaping-functionaliteit (direct) afhankelijk is van de gebruikte character encoding. Dus zorg ook dat je daar kaas van gegeten hebt. Want There Ain't No Such Thing As Plain Text.
Gewijzigd op 23/10/2017 14:55:32 door Thomas van den Heuvel
 



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.