Hacker-aanval

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Developer eMagiz

Ben jij een zelfstandige (liefst Full Stack) Developer die zich op een volwassen manier verantwoordelijk voelt voor zijn eigen doelstellingen en daarnaast blij wordt van de teamdynamiek in je scrumteam en daar een actieve en kritische rol heeft? En word jij enthousiast van een zeer complexe ontwikkelomgeving waar je wordt uitgedaagd abstract te denken? Word dan lid van ons R&D team zodat jij een bijdrage levert aan onze zeer geavanceerde softwaremodellen en zo onze Enterprise integration Platform as a Service verder verbetert. Jouw uitdaging als Software Developer eMagiz eMagiz is een modelgedreven platform en wordt door klanten en partners gebruikt

Bekijk vacature »

Junior Developer Fullstack Java DevOps Cloud

Bedrijfsomschrijving Onze klant is een grote organisatie en is actief in de financiële sector. Binnen Europa bieden zij veel verschillende producten en diensten aan. De afdeling waar je komt te werken richt zich op het digitaliseren van primaire digitale processen. Wat digitale processen betreft lopen wij in Nederland ver voor op andere landen in Europa! Deze services wil de organisatie ook aanbieden aan hun collega’s en klanten in landen zoals België, Frankrijk en Duitsland. Jij en je team zijn verantwoordelijk voor de digitalisatie van de primaire processen en deze vervolgens te optimaliseren & automatiseren. Binnen het team zal je end-to-end

Bekijk vacature »

PHP/JAVA Developer

Wie zijn wij? Wireless Value ontwikkelt, produceert en verkoopt producten waarmee meetwaarden van sensoren draadloos kunnen worden overgestuurd naar plaatsen waar verdere bewerking en bewaking kan plaatsvinden. Wireless Value levert een familie van draadloze sensoren, basisstations (ontvangers) en toepassingen voor bediening en monitoring van processen en richt zich op de marktsegmenten industrie, utiliteit, energie en agri. Wie ben jij? Jij weet als geen ander wat je doet als je als PHP/JAVA ontwikkelaar aan de slag gaat, maar deze functie heeft bij ons ook andere verantwoordelijkheden en bevoegdheden. Natuurlijk ben jij het merendeel van je tijd bezig met applicatie ontwikkeling zoals

Bekijk vacature »

Mobile App Developer

Ons Mobile ontwikkelteam zoekt een fanatieke Mobile App Developer. Ben jij creatief en heb je passie voor het ontwikkelen van apps? Dan zijn wij op zoek naar jou! Jouw baan ChipSoft heeft al diverse apps uitgebracht en het aantal gebruikers hiervan neemt snel toe. De apps doen het erg goed bij de zorginstellingen. Je kunt hierbij denken aan apps verpleegkundigen, thuiszorgmedewerkers, de logistieke dienst en - natuurlijk - de artsen zelf. Door jouw hands-on mentaliteit, eigenwijsheid en technisch inzicht kun je nauwkeurig herbruikbare software schrijven. Die software sluit naadloos aan op onze ‘back end’ (HiX, onze ICT-totaaloplossing voor de zorg).

Bekijk vacature »

Cloud Engineer Welkomstbonus € 5.000,-

Cloud Engineer medior Welkomstbonus van € 5.000,- Bij T2 zorgen we goed voor elkaar en doen wij leuke dingen met leuke mensen. We zorgen voor uitdagende opdrachten zodat jij jezelf onbeperkt kan blijven ontwikkelen. Ben jij een ervaren systeembeheerder Cloud en wil je het beste uit jezelf halen? Dan ben je van harte welkom bij T2 en ontvang je onze welkomstbonus ter waarde van €5.000,-. Er werken leuke mensen bij T2, die op een professionele en informele wijze met hun carrière en collega’s omgaan. Dat is de basis voor succes! Het is vanzelfsprekend dat je met de nieuwste technieken werkt.

Bekijk vacature »

Medior PHP Developer

Bedrijfsomschrijving De organisatie is een marktleider op het gebied van Software ontwikkeling omtrent medewerker applicaties. Hiermee helpen ze klanten om het optimaliseren van bedrijfsprocessen en verduurzamen van de bedrijfsvoering. Innovatie en ontwikkeling staat hierom dan ook hoog in het vaandel. Je collega's hebben een open, informele werksfeer gecreëerd waar de dialoog altijd aangegaan kan worden. Als PHP developer ga je aan de slag met het realiseren van web applicaties on-premise en in de Cloud. Je schrijft innovatieve, maar ook robuuste codes en houd hierbij rekening met Security aspecten. De codes die je schrijft en de koppelingen die jij realiseert hebben

Bekijk vacature »

Mendix Advanced Developer (NL)

Mendix Advanced Developer (NL) Den Haag HBO/WO IT Professional "Als Mendix Advanced Developer impact maken op de groeiende E-commerce markt met onze logistieke software en onze kritieke logistieke keten. Je doet dit door ontwikkeling en uitbreiding van onze Mendix Cloud omgeving, waarbij je complexe business processen vertaalt naar kritieke Mendix applicaties.". Wat ga je doen? PostNL is becoming a postal tech company Als Mendix Advanced Developer ben je onderdeel van een multidisciplinair Business-IT-team bestaande uit onder andere een Lead, Mendix Developers en Solution Consultants. Wij zetten Mendix in voor kritieke processen waarbij applicaties optimaal moeten performen om dagelijks rond de

Bekijk vacature »

OutSystems Developer / International environment /

Bedrijfsomschrijving For our international client based in Eindhoven area, we are looking for a junior OutSystems Developer. This company is a listed company with offices and plants all over the world. The company offers great experiences and exposure with people from different and unique cultures. They describe themselves as an innovative, professional and sustainable firm. Their goal is to provide for the generations to come. As Outsystems Developer you will be working in an international environment with approximately 15 direct colleagues, consisting of developers, integration specialists and application engineers. This Applications team is a very close and hard working team,

Bekijk vacature »

Senior Java developer (payroll/dienstverband CF)

Opdrachtomschrijving Onze opdrachtgever heeft ruimte voor een extra java developer. Je komt dan bij ons op de payroll (!). De stack (lees gewenste ervaring): Backend: Java microservices Frontend: React Dit draaiende in de cloud, in Docker op Kubernetes. Daarnaast heb je ervaring met: SpringBoot, Kotlin (pre) CI/CD Agile werken aan digitale producten. Locatie vooralsnog vanuit huis, locatie opdrachtgever is Rotterdam 32-36 uur per week. Bij interesse hoor ik je graag! Liesbeth Dijkers 010 2069800

Bekijk vacature »

TVD Developer

Data Management Developer For one of our clients we are looking for a highly-motivated application specialist with proven relevant knowledge of and experience within the area of Data Management Development. This is going to be your job Are you a highly-motivated application specialist with proven knowledge of and experience with applying to the Tibco Data Virtualization domain in the area of Data Management Development? Do you have generic knowledge of and experience with data management capabilities? You are an enthusiastic T-shaped team player that will manage the environment and where you take ownership for the continuity of our solutions and

Bekijk vacature »

Microsoft BI Developer Azure

Bedrijfsomschrijving Je komt te werken binnen een financiële organisatie die diensten levert binnen de non-profit sector. Hierbij kun je denken aan overheden en instellingen met een maatschappelijk belang. Duurzaamheid en betrouwbaarheid zijn termen die deze organisatie kenmerken. Er heerst een informele sfeer binnen het bedrijf en er zijn korte lijnen tussen de verschillende lagen. Het team waar je terecht zult komen is elk project verschillend, doordat ze werken middels de Scrum methodiek. Per project ben je samen met 6 tot 8 man verantwoordelijk voor het juist afronden hiervan. Dit zorgt voor veel afwisseling en uitdaging binnen je werk! Momenteel zijn

Bekijk vacature »

.NET Developer PACS / Multimedia

Wil jij met jouw ontwikkelskills medisch specialisten het optimale uit beeldmateriaal laten halen? Dan is dit jouw droombaan! Ter versterking van ons PACS-team in Amsterdam zoeken wij een ontwikkelaar die verantwoordelijkheid krijgt over zijn ‘eigen’ software. Jouw baan In deze functie ga je medische apparatuur (ECG\echo\OCT\MRI\Etc) integreren in ons EPD. Jij houdt je daarnaast bezig met het maken van software om de verschillende output-formaten van de apparatuur te ondersteunen en te presenteren aan medische specialisten. Tevens ben je verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van je eigen PACS-tools (Picture Archiving and Communication System). Die tools integreer je feilloos

Bekijk vacature »

Software Developer / C# en .Net / Databases

Bedrijfsomschrijving Onze klant is een mooie en innovatieve multinational in de regio Utrecht. Ze staan bekend om de hoge kwaliteit van dienstverlening en streven ernaar dit continu te verbeteren. Om dit te kunnen doen zijn zij opzoek naar een Software Developer. Als Software Developer ga je aan de slag met het ontwikkelen van bedrijfskritische software en applicaties. Zo zijn er applicaties en software die van belang zijn voor de bedrijfsvoering, de medewerkers van de organisatie, maar ook voor het klantenbestand van de organisatie. Het landschap is zowel functioneel als technisch en daarmee erg breed. Je komt te werken in een

Bekijk vacature »

Software Engineer C++ / Software Developer C++

Software Engineer C++ / Software Developer C++ (Bsc, MSc, Computer Science, Information Technology, Mathematics, C, C++, Linux, Algorithms) General Do you find great joy in software development, which is then used worldwide, and are you familiar with C++ and with algorithms… read on! Organization For our business client, a fast dynamic technical company which gathers and processes huge amounts of data, we are looking for several Software Engineers. You will be part of a team consisting of about 25 software developers working on a suit of advanced software tools. These software tools are then used further on in the company

Bekijk vacature »

Software Architect / Developer / C# / Azure / CQRS

Bedrijfsomschrijving Als Software Architect/Senior Developer kom je te werken bij een organisatie in regio Veenendaal wiens core business software development is voor oplossingen voor de vastgoed branche. Deze applicaties vormen de basis voor financiële processen en planningen en worden door een groot tal gerenommeerde organisaties in Nederland gebruikt. Samen met een team van 15 collega's (bestaande uit ontwikkelaars, testers, UX/UI Designer en een Product Owner), verdeeld over Nederland en een andere locatie in Europa, ga je als Software Architect / Senior Developer aan de slag om het gehele platform te moderniseren. Hiervoor maakten ze gebruik van Delphi en is het

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

26/11/2020 19:52:13
 
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.