Hacker-aanval

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end Developer

Onze klant is sinds 2 jaar actief als adviseur en bemiddelaar in de verzekeringsmarkt. Sindsdien proberen zij deze slapende markt flink wakker te schudden. Dit willen zij doen door het bouwen van slimme vergelijkers op hun eigen website en die van partners. Het bedrijf wil continu voorop lopen, zodat consumenten eenvoudig de verzekeringen kunnen vinden die het beste bij ze past. Functieomschrijving Als Front-end Developer werk je aan vergelijkingsmodules die consumenten dagelijks gebruiken bij het vergelijken en afsluiten van verzekeringen. Je vindt het leuk om samen te werken met de product owner, bestaande modules te verbeteren en nieuwe vergelijkers "from

Bekijk vacature »

PHP Software Developer

Functie omschrijving Op zoek naar een nieuwe uitdaging binnen PHP? Lees dan snel verder! Wij zoeken een ervaren PHP developer die binnen een organisatie gaat functioneren als verlengstuk van de klant. Wij zoeken voor deze iemand die technisch complexe zaken met enthousiasme en plezier aanvliegt. Verder moet je instaat zijn om je tijd goed te managen omdat je aan meerdere projecten tegelijkertijd werkt. Je werkt met de nieuwste technieken en tijdens deze uitdaging werk je veel samen met de front-end developers van deze organisatie. Wij zoeken iemand die zichzelf graag uitdaagt en altijd de beste wilt zijn. Bedrijfsprofiel Waar ga

Bekijk vacature »

Product Developer (M/F), Fulltime 40 h/week

A global Plantbased revolution – that is our dream. Maximising the protein transition – that is our mission. Producing and developing sustainable and delicious products – that is what we do. Ojah is a fast growing company with a mission and has the ambition to be the world leader in its field. To support this growth we are hiring new colleagues. People that would like to make a difference and dare to dream big. With currently a 150 colleagues proudly working on our exceptional products. Working in a dynamic surrounding that runs full speed ahead. We need you! Product Developer

Bekijk vacature »

Lasrobotprogrammeur/operator

Heb je interesse in trekkers en beschik je overvlijmscherpse precisie? Solliciteer dan op deze vacature! Als Lasoperator ben je vooral bezig met het maken van nieuwe lasrobotprogramma’s en het optimaliseren van bestaande programma’s, zowel online als offline (incl. het bedienen van de Lasrobots). Daarnaast draag je bij aan een optimaal rendement van de las robots. Verder heb je de volgende werkzaamheden: Het meewerken als operator c.q. Robotlassen niveau 2 (van complexe samenstellingen/halffabricaten), het om- en instellen van de diverse stations van lasmallen (productdragers), het afwerken van laswerk (verwijderen lasspetters en oxiden), het bewaken van de machineplanning (op bewerkingen) incl. de

Bekijk vacature »

.NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. 50% van jullie werkzaamheden is maatwerk en de overige 50% is

Bekijk vacature »

Junior Java Developer

Dit ga je doen Full stack web- en appdevelopment; Vertalen van de functionele wensen naar de technische specificaties; Sturing geven aan/klank board zijn voor de software teams; Trainen van de software teams; Sparren met klanten; Meedenken over architectuur. Hier ga je werken De organisatie is een bureau welke websites en mobiele applicaties bouwt voor verschillende toonaangevende organisaties. Hierbij richten zij zich voornamelijk op de sectoren leisure, overheid en zorg. De sfeer intern kenmerkt zich door informaliteit, gezelligheid en ambitie. Ze werken dag in dag uit samen om mooie producten op te leveren voor hun klanten. Op dit moment zijn er

Bekijk vacature »

Junior Java Developer

Dit ga je doen Je ontwikkelt innovatieve, maatschappelijk belangrijke applicaties; Je implementeert nieuwe features; Je gaat in gesprek met eindgebruikers en designers om de applicaties continu te finetunen; Je draait mee in een professionele Agile/Scrum omgeving. Hier ga je werken Onze klant is een internationale organisatie gevestigd in de omgeving van Amsterdam. Ze staan zeer goed bekend in de markt door hun innovatieve dienstverlening op IT gebied en hun gepassioneerde werknemers. Voor hun inspanningen op het gebied van IT hebben ze meerdere prijzen gewonnen! Onze klant is onderdeel van een Corporate werkgever en heeft zelf 300 mensen in dienst. Om

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe stap? Voor een softwarebedrijf in regio Oosterhout zijn wij op zoek naar een back-end developer met kennis of ervaring met C# en SQL. 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 vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

Senior Cobol Applicatieontwikkelaar

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving In de applicatie ETM

Bekijk vacature »

Front-End React Developer

Als Front-End React Developer verbeter je de user experience van onze eigen webapplicaties voor onze collega's binnen Coolblue. Wat doe je als Front-End React Developer bij Coolblue? Als Front-end React Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten met React.js. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end React Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop

Bekijk vacature »

Java Developer (Training And Simulation)

Wat jij doet Je zou onze Java Developer zijn en nauw samenwerken met je Product Owner, Software System Engineer, Scrum Master en andere Developers. Samen draag je bij aan een multidisciplinair en zelf organiserend Agile team. De rol is zeer afwisselend en bestaat uit, maar is zeker niet beperkt tot: de-risk en prototype onbewezen simulatietechnologieën; simulatiekaders ontwikkelen voor gebruik door andere teams; je bent goed in het begrijpen van ingewikkelde ideeën; heeft de mogelijkheid om nauw samen te werken met grote internationale klanten, leveranciers en overheden om onze oplossingen, vastleggingsvereisten, enz. te definiëren en te presenteren. Ben jij het? Wij

Bekijk vacature »

SAP Integratie Ontwikkelaar

Ben jij ambitieus in de verdere ontwikkeling van SAP binnen HANOS, en heb je kennis van SAP PI, CPI (SAP integration suite) en of andere middleware tooling? Dan ben jij mogelijk onze nieuwe SAP Integratie (middleware) Ontwikkelaar! Lees snel verder en solliciteer! Wat ga je doen? Als SAP Financieel Consultant ben je, als deel van een gedreven team van interne SAP consultants, de schakel tussen de gebruikersorganisatie en ICT. Je draagt proactief bij aan een optimale aansluiting van de SAP-functionaliteit (een applicatielandschap met o.a. Suite on HANA, Fiori, Hybris, C4C en BO), op de bedrijfsprocessen. Verder ondersteun je de HANOS

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 »

Software developer (Python)

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 houden ze zo nu en dan pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Je hebt in je werk oog voor kwaliteit, risico’s en het klantbelang. Communicatie met

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 08:16:32
 
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.