Hacker-aanval

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

(Lead) PHP Software Developer

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een PHP software developer met een aantal jaar werkervaring. Je krijgt een plek in een klein team met 2 andere software developers. Wil jij graag werken met de nieuwste technieken bij een bedrijf waar jij de lead gaat nemen in de verder ontwikkeling en modernisering van een eigen software pakket? Dan ben je hier aan het juiste adres! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "in-house" ontwikkelde multimedia platform. Je neemt de lead in

Bekijk vacature »

Front end developer

Functie Qua type opdrachten is er echt een verscheidenheid aan afnemers, zo werken ze met grote multinationals, maar ook met startups. Zo kom je te werken in een gevarieerde omgeving en kan je ook schakelen tussen verschillende culturen. De projecten variëren van greenfield projecten tot langdurige ontwikkeltrajecten. Hier wordt alleen maar gewerkt met aan front end projecten. Daarom maakt het onze partner niet uit waar jij kennis van hebt, als je maar gedegen kennis hebt van Javascript frameworks, Unit testing en ook bekend bent met de scrum methodiek. Eisen Minimaal 4 jaar relevante werkervaring Kennen en ervaring van Javascript frameworks

Bekijk vacature »

Outsystems Developer Medior

Dit ga je doen Bouwen aan nieuwe en innovatieve applicaties; Maken van koppelingen tussen Outsystems en het bestaande applicatielandschap; Troubleshooting op bestaande software. Hier ga je werken De organisatie is internationale speler binnen de bouwbranche en richt zich op de infrastructuur, zowel boven als onder de grond. Ze zijn ruim 1100 man groot en maken op IT vlak een mooie groei door. Als ervaren Developer kom je te werken op een IT-afdeling van zo'n 25 man groot. Een aantal jaar geleden hebben ze de keuze gemaakt om zich meer te gaan richten op ontwikkeling en door de groei van de

Bekijk vacature »

Software Developer .NET

Functie omschrijving .NET developer gezocht! Wij zoek op zoek naar een .NET Developer die zich niet uit het veld laat slaan voor een software bedrijf in de regio Veenendaal. Je gaat in deze functie aan de slag met het door ontwikkelen van bestaande producten en het ontwikkelen van nieuwe producten. Dit bedrijf ontwikkeld SaaS applicaties die zowel intern als extern gebruikt worden. Verder bestaat je functie uit: Het ontwikkelen en bouwen van webapplicatie, mobiele applicaties en websites vallen onder jouw verantwoordelijkheden; Werken met onder andere .NET, C#, HTML/CSS, Javascript en MSSQL/Oracle Databases; Hierin werk je samen met andere developers en

Bekijk vacature »

Laravel / PHP developer

Functie omschrijving Wij zijn op zoek naar een Medior PHP / Laravel Developer voor een IT-consultancy in de omgeving van Hoofddorp! Ben jij op zoek naar een leuke nieuwe uitdaging binnen een veelzijdige werkomgeving? Lees dan snel verder! Binnen dit bedrijf werk je in een ontwikkelteam, waarin je zeer betrokken bent en meedenkt over softwareoplossingen. Binnen dit Team hou je je bezig met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken;

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP / Laravel developer zal je in een klein team terecht komen. Wij zijn op zoek naar een echte specialist, iemand die de balans weet te vinden tussen techniek en perfectie. In de aankomende jaren wilt dit bedrijf flink groeien en daarom zijn ze op zoek naar jou! Wat ga je doen? Je draagt bij aan het ontwikkelen en onderhouden van bestaande webapplicaties die boordevol functionaliteit zitten. Deze applicaties worden gebruikt door de organisatie zelf en ook door de klanten. Inmiddels wordt er gewerkt met Laravel 8 en zijn er diverse koppelingen naar externe leveranciers. Verder zal

Bekijk vacature »

Java developer - procesoptimalisatie (Inhouse)

Functie Wat ga je doen als Java developer? Jij als back end developer hebt al enige ervaring opgedaan in jouw vakgebied. Voornamelijk het werken met Java en Spring spreekt jou aan. Jij wordt samen met je collega developers in het team verantwoordelijk voor de gehele back end van de applicatie. Hierdoor heb jij veel zelfstandigheid in je rol en zul je ook zelf beslissingen samen met de PO maken. Er wordt gewerkt volgens de SCRUM methodiek, om zo structuur te creëren in de werkzaamheden. Binnen de 2-wekelijkse sprints pak jij je taken op die samen met de PO afgestemd zijn.

Bekijk vacature »

Back-end developer

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een gemotiveerde SQL Developer/ functioneel consultant. Jij wordt verantwoordelijk voor zowel het ontwerpen en implementeren van SQL-databases als voor het in kaart brengen van de bedrijfsprocessen van een organisatie en het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Ontwerp en implementatie van SQL-databases: Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Analyse van bedrijfsprocessen: Je analyseert de bedrijfsprocessen van de organisatie om de behoeften van de klant te begrijpen en te vertalen naar

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Boskoop dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat technische klussen uitvoeren op locatie bij klanten.Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat software en webapplicaties ontwikkelen met behulp van de talen

Bekijk vacature »

Front-end Developer

Functie omschrijving Wij zijn op zoek naar een Front-end Developer! Als Front-end Developer binnen dit softwarebedrijf ga je de frontends voor zowel je eigen interne projecten als die voor klanten opzetten, onderhouden en uitbreiden. Je zet ideeën om naar mooie successen voor de klanten. Dat is in een notendop wat je gaat doen! Wat kun je verwachten? Je werkt aan de doorontwikkeling van bestaande maatwerkapplicaties. Bijvoorbeeld wanneer de klant de applicatie wil uitbreiden met een nieuwe feature; Samen met het team van backenders en desginers zet je nieuwe ideeën van klanten om naar mooie oplossingen; Je werkt met verschillende frameworks.

Bekijk vacature »

Medior Front-end Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Medior Front-end Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

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 »

Senior .NET developer

Functie As a Senior .NET developer you will work in our Research & development team. Our team consists of 17 colleagues! We are currently busy setting up a completely new architecture for a new product. We use VS2022 and .NET 6.0 for our new product. Your function is therefore mainly backend oriented. Since we develop measuring equipment for the chemical industry, it is also very important to develop high-quality software for its control. You are also responsible for designing, implementing and testing new features. For this position its also very important to ensure future-proof and sustainable architecture. Eisen - A

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een software bedrijf in omgeving Breda zijn wij op zoek naar een SQL database ontwikkelaar. Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het huidige team developers zijn wij op zoek naar een SQL database ontwikkelaar. De klanten van dit groeiende bedrijf zitten door heel Europa en jouw werkzaamheden zullen er als volgt uitzien: Het samenstellen van de software op basis van de input vanuit de klant (T-SQL & C#.NET). Het bezoeken van klanten om de processen en mogelijkheden in kaart te brengen. Het ontwerpen van databases met T-SQL als programmeer laag.

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

22/12/2024 07:41:44
 
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.