Hacker-aanval

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer C#

Dit ga je doen Als developer nieuwe gave features implementeren; Werken met technieken als C# .NET en (REST) API's webservices; Ontwikkelen van koppelingen middels API's; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken Als C# .NET Developer wordt je verantwoordelijk voor het ontwikkelen van applicaties voor belangrijkste product van deze organisatie. Dit product is een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Er

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

Bekijk vacature »

Grafisch vormgever

Standplaats: Maasland Aantal uren: 32 – 40 uur per week Opleidingsniveau: HBO werk- en denkniveau Ben jij een ambitieuze grafisch vormgever met een passie voor creativiteit en oog voor detail? Vind jij het daarnaast leuk om ook marketingactiviteiten op te pakken? Dan zijn wij op zoek naar jou! Bedrijfsinformatie Westacc Group BV is het zusterbedrijf van HABA en specialiseert zich in (maatwerk) oplossingen voor (elektro) techniek en verlichting in de kampeerbranche. Zij produceren en assembleren onderdelen voor caravans, campers en boten. Voor een groot aantal caravan- en campermerken leveren wij producten als zekeringkasten, invoerdozen, acculaders, schakelmateriaal en verlichting. De producten

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Amersfoort gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Back-end developer

Dit ga je doen Development d.m.v. XQuery, JSON/XML en REST API's; Ontwikkelen aan een tof en complex zorgplatform; Koppelingen maken met de NoSQL database; Testen en documenteren van de ontwikkelde functionaliteiten; Samenwerking met andere front- en back-end ontwikkelaars. Hier ga je werken Voor een vooruitstrevende organisatie binnen de zorg in Den Haag zijn wij opzoek naar een Back-end Developer die ervaring heeft met o.a.XQuery en Vue.JS of daarin graag zou willen ontwikkelen. Je zal ontwikkelen aan een tof en complex zorgplatform en koppelingen maken met de NoSQL database. Ook het testen en documenteren van de ontwikkelde functionaliteiten behoort tot jouw

Bekijk vacature »

Magento developer

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij recent jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een erkende werkgever in regio Waalwijk zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze

Bekijk vacature »

Medior/Senior Python developer (Django)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en werken ze met pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Er is een kwaliteitsfocus en dan biedt ruimte om verbeteringen echt door te voeren binnen de gehele

Bekijk vacature »

Belastingdienst - Freelance Senior Applicatie ontw

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: We verwachten van je, dat je: Brede ervaring hebt als JAVA-ontwikkelaar; Ervaring hebt met Agile/Scrum-werken en je thuis voelt in een Agile omgeving; Een aandeel levert aan het scrumproces en in de SAFe-releasetrain; Zelfstandig werkt in een scrumteam en intensief de samenwerking op zoekt met je directe collega’s en je omgeving; Ervaring meebrengt met het schattten en inplannen van taken tot en met het testen en demonstreren van de opgeleverde functionaliteit; Collega’s in je

Bekijk vacature »

3D BIM Add-on Developer

Als 3D BIM add- on ontwikkelaar bij KUBUS ontwikkel je add-ons (BCF Managers genaamd) voor de toonaangevende building information modeling (BIM) programma's Revit, Navisworks, Archicad, AutoCAD en Tekla Structures. BCF Managers maken gegevensoverdracht mogelijk tussen BIM-software en BIMcollab. Je werkt zowel aan de front- als aan 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

Bekijk vacature »

PHP Back-end Developer

Vacature details Vakgebied: Software/IT Opleiding: Starter Werklocatie: Nijmegen Vacature ID: 13633 Introductie OUr client develop websites, webshops, and digital environments that are used by many visitors daily. They are seeking an experienced PHP-Developer Back-end to join the team. If you're looking for a position where you can tackle challenging, innovative, and multidisciplinary ICT projects and make a difference, this vacancy might be for you! Functieomschrijving As a PHP developer, you'll develop websites and digital environments used by many visitors daily. You'll work as a back-end developer and want to continuously develop in this field. You can work independently and efficiently,

Bekijk vacature »

.NET Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een .NET Developer! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans en kijk snel of jouw vaardigheden aansluiten bij onderstaand profiel! Je kunt een uitdagende rol gaan vervullen als .NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving Bergen. Dit bedrijf is zeer vooruitstrevend en verricht betekenisvol werk. Binnen dit bedrijf wordt gewerkt aan de productie en ontwikkeling van medische middelen. Als .NET Developer ga jij je bezig houden met het volgende: Je wordt betrokken bij alle fasen van software

Bekijk vacature »

.NET Software Developer

Dit ga je doen Als .NET Software Developer zul jij je voornamelijk bezig houden met: Het van scratch af aan bouwen van applicaties (.NET, C#, Bootstrap, KnockoutJs en WebAPI2); Het testen van jouw code d.m.v. het uitvoeren van unittesten; Het oplossen van bugs in de code; Het onderhouden van contact met collega's betreffende de door jouw ontwikkelde applicaties; Het verbeteren en doorontwikkelen van maatwerkapplicaties. Hier ga je werken Jij gaat aan de slag als .NET Software Developer en gaat je focussen op het bedenken, ontwikkelen en testen van maatwerkapplicaties in voornamelijk C#. Dit ga je doen bij een grote, internationale

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 »
George van Baasbank

George van Baasbank

12/11/2013 15:52:07
Quote Anchor link
Hallo allemaal,

Zojuist is een van mijn websites slachtoffer geworden van wellicht een hacker. Gelukkig hebben we een back-up van onze database want een van de tabellen is massaal overschreven met onzin.

Om dit in de toekomst te voorkomen vraag ik jullie hulp aangaande de code die ik hanteer om mijn database bij te werken. Ik weet nl via welke pagina dit is gebeurd.

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
if($cKnop == $cKnoptekst2a) {   // Invullen adresgegevens
        $cExtra = "Invullen adresgegevens";
        
        // Systeem inlezen
        include "include/connectie_nw.inc.php";
        $cSub = "Afronden bestelling";
        include "include/systeem_nw.inc.php";  
        
        $lIngevuld = TRUE;
        $_SESSION['ingevuld'] = $lIngevuld;
    
        // Gegevens klant verzamelen en opslaan
        $cVoorletters   = TekstInKapitaal($_POST['voorletters']);
        $cTussenvoeg    = TekstinOndercast($_POST['tussenvoeg']);
        $cNaam          = ucwords($_POST['naam']);
        $cFactuuradres  = ucwords(strtolower($_POST['factuuradres']));
        $cFactuurcode   = ConverteerPostcode($_POST['factuurcode']);
        $cFactuurplaats = TekstInKapitaal($_POST['factuurplaats']);
        $cTelefoon      = $_POST['telefoon'];
        $cEmailadres    = TekstinOndercast($_POST['emailadres']);
        
        // Controle op PUNT achter voorletter
        if(substr($cVoorletters,-1,1) != ".") {
            $cVoorletters .= ".";
        }
        
        // Testen op e-mailadres van klant al in database voorkomt
        include "include/connectie_nw.inc.php";
        $sql = "SELECT email FROM shop__klanten WHERE email = '$cEmailadres' AND wismarkering = 0";
        $cResultTestEmail = mysqli_query($verbinding,$sql);
        $nAantalRecords = mysqli_num_rows($cResultTestEmail);
        if($nAantalRecords == 0 ) { //   E-mailadres komt niet voor, voeg klantnaam toe
            if(isset($_SERVER['REMOTE_ADDR'])) {
                $cIpadres = $_SERVER['REMOTE_ADDR'];
            } else {
                $cIpadres = "Onbekend";
            }
            $sql = "INSERT INTO
                        shop__klanten
                        (
                            voorletters,
                            tussenvoeg,
                            achternaam,
                            adres,
                            postcode,
                            woonplaats,
                            telefoon,
                            email,
                            klantnummer,
                            ipadres)
                        VALUES
                        (
                            '$cVoorletters',
                            '$cTussenvoeg',
                            '$cNaam',
                            '$cFactuuradres',
                            '$cFactuurcode',
                            '$cFactuurplaats',
                            '$cTelefoon',
                            '$cEmailadres',
                            'nieuw',
                            '$cIpadres'
                        )";
            $cResultInvoer = mysqli_query($verbinding,$sql);
            
            // ID-nummer ophalen voor toekenning aan klantnummer
            $sql = "SELECT id FROM shop__klanten WHERE klantnummer = 'nieuw' AND wismarkering = 0 LIMIT 1";
            $cResultKlantnummer = mysqli_query($verbinding,$sql);
            $row = mysqli_fetch_array($cResultKlantnummer);
            $cKlantnummer = $row['id'];
            $sql = "UPDATE shop__klanten SET klantnummer = '$cKlantnummer' WHERE id = '$cKlantnummer'";
            $cResultUpdate = mysqli_query($verbinding,$sql);
            $_SESSION['klantnummer'] = $cKlantnummer;
            
            mysqli_close($verbinding);
        } else {   // E-mailadres komt al voor in database
            include "include/connectie_nw.inc.php";
            $sql = "UPDATE
                        shop__klanten
                    SET
                        voorletters = '$cVoorletters',
                        tussenvoeg = '$cTussenvoeg',
                        achternaam = '$cNaam',
                        adres = '$cFactuuradres',
                        postcode = '$cFactuurcode',
                        woonplaats = '$cFactuurplaats',
                        telefoon = '$cTelefoon'
                    WHERE
                        email = '$cEmailadres'";
            $cResultUpdate = mysqli_query($verbinding,$sql);
            // ID-nummer ophalen voor toekenning aan klantnummer
            $sql = "SELECT klantnummer FROM shop__klanten WHERE email = '$cEmailadres' AND wismarkering = 0 LIMIT 1";
            $cResultKlantnummer = mysqli_query($verbinding,$sql);
            $row = mysqli_fetch_array($cResultKlantnummer);
            $cKlantnummer = $row['klantnummer'];
            $_SESSION['klantnummer'] = $cKlantnummer;
            
            mysqli_close($verbinding);
        }



Hoe kan ik de code beter maken zodat alles in het werk is gesteld om meer ellende te voorkomen?
 
PHP hulp

PHP hulp

19/04/2024 21:45:53
 
Michael -

Michael -

12/11/2013 15:55:13
Quote Anchor link
Je controleert totaal geen gebruikers input. Elke willekeurige code kan dus worden ingevoerd.
Kijk eens naar functies als myqli_real_escape_string() htmlentities() htmlspecialchars()
 
Kris Peeters

Kris Peeters

12/11/2013 16:08:45
Quote Anchor link
Wel, we weten niet wat functies als TekstInKapitaal() doen.
Ik veronderstel dat dit van de eerste letter een hoofdletter maakt, of zo.

[een beetje off topic] Je zou dit trouwens niet mogen doen. Jij mag geen gegevens, die jouw gebruikers invullen, veranderen. [/een beetje off topic]

Wat zo'n functie zou moeten doen, is escapen.

$cVoorletters = mysql_real_escape_string($_POST['voorletters']);
$cTussenvoeg = mysql_real_escape_string($_POST['tussenvoeg']);
...

Escapen houdt aanvallen met SQL-injection tegen.


(Ik merk trouwens dat je al meerdere vragen stelde ivm. SQL, maar nooit iets gepost hebt waar je de SQL en de PHP-code samen toont. Anders hadden we jou daar al heel lang over aangesproken)
Gewijzigd op 12/11/2013 16:19:33 door Kris Peeters
 
Ward van der Put
Moderator

Ward van der Put

12/11/2013 16:52:27
Quote Anchor link
Niet alleen de code is onveilig, maar ook de logica. Vanaf de else op regel 76 overschrijf je bestaande klantgegevens in een UPDATE zodra een e-mailadres al voorkomt in de database. Daarmee kan iemand alle klantgegevens overschrijven door, per ongeluk of expres, een bestaand e-mailadres op te geven.

Alleen SQL-injectie tegengaan, zal hier niet helpen. De database vullen met onzin blijft door dit soort logicafouten mogelijk.
 
George van Baasbank

George van Baasbank

12/11/2013 17:16:23
Quote Anchor link
Als ik Kris goed begrijp moet ik alle POST-variabelen via een mysqli_real_escape_string inlezen

Ga ik eerst doen. Op de opmerkingen van Wart kom ik later terug.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
// Gegevens klant verzamelen en opslaan
$cVoorletters   = TekstInKapitaal(mysqli_real_escape_string($verbinding,$_POST['voorletters']));
$cTussenvoeg    = TekstinOndercast(mysqli_real_escape_string($verbinding,$_POST['tussenvoeg']));
$cNaam          = ucwords(mysqli_real_escape_string($verbinding,$_POST['naam']));
$cFactuuradres  = ucwords(mysqli_real_escape_string(strtolower($verbinding,$_POST['factuuradres'])));
$cFactuurcode   = ConverteerPostcode( mysqli_real_escape_string($verbinding,$_POST['factuurcode']));
$cFactuurplaats = TekstInKapitaal(mysqli_real_escape_string($verbinding,$_POST['factuurplaats']));
$cTelefoon      = mysqli_real_escape_string($verbinding,$_POST['telefoon']);
$cEmailadres    = TekstinOndercast(mysqli_real_escape_string($verbinding,$_POST['emailadres']));



Toevoeging op 12/11/2013 17:22:13:

De logica-fout waarop Ward mij aansprak heb ik onderkend en als volgt gewijzigd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
} else {   // E-mailadres komt al voor in database
            include "include/connectie_nw.inc.php";
            // ID-nummer ophalen voor toekenning aan klantnummer
            $sql = "SELECT klantnummer FROM shop__klanten WHERE email = '$cEmailadres' AND wismarkering = 0 LIMIT 1";
            $cResultKlantnummer = mysqli_query($verbinding,$sql);
            $row = mysqli_fetch_array($cResultKlantnummer);
            $cKlantnummer = $row['klantnummer'];
            $_SESSION['klantnummer'] = $cKlantnummer;
            
            mysqli_close($verbinding);
        }


Toevoeging op 12/11/2013 17:23:45:

In mijn geval heeft de ongewenste bezoeker alle namen en adressen gewijzigd in de klantentabel. Hoe kan ik zoiets voorkomen?

Toevoeging op 12/11/2013 18:08:22:

Nu heb ik dus de $_POST-variabelen via een mysqli_real_escape_string opgeslagen maar moet dit ook voor het onderstaande voorbeeld?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
//Koop definitief
        $sql = "UPDATE shop__winkelwagen SET koopdefinitief = 'Ja', koopmoment = NOW() WHERE ordernummer = '$cOrdernummer'";
        $cResultKoop = mysqli_query($verbinding,$sql);


In dit voorbeeld wordt een veld dus met de waarde van een variabele gevuld. Een ander voorbeeld staat hieronde:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
while($row = mysqli_fetch_array($cResultWinkelwagen)) {
            $cArtikelnummer = $row['productnummer'];
            $_SESSION['artikelnummer'] = $cArtikelnummer;
            $cPrijs = $row['prijs'];
            $cOpmerking = $row['opmerking'];
            $nAantal = 1;
            $nBTW = $cPrijs-(100/(100+$_SESSION['btw']) * $cPrijs);
            // Toevoegen aan bestellingen
            $cKlantnummer = $_SESSION['klantnummer'];
            $sql = "INSERT INTO shop__bestellingen (artikelnummer,klantnummer,aantal,factuurbedrag,btw,besteldatum,ordernummer,factuurdatum,opmerking)
                       VALUES('$cArtikelnummer','$cKlantnummer','$nAantal','$cPrijs','$nBTW',NOW(),'$cOrdernummer',NOW(),'$cOpmerking');";
            $cResultBestelling = mysqli_query($verbinding,$sql);
        }


Voorbeeld 1 was via een UPDATE en voorbeeld 2 via een INSERT
Gewijzigd op 12/11/2013 18:24:59 door George van Baasbank
 



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.