Beschermen tegen injections

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Fullstack Developer

Functie omschrijving Heb jij je universitair diploma Informatica afgerond en ben jij op zoek naar een startersfunctie waar jouw ontwikkeling in een hoog vaandel staat? Voor een softwarebedrijf in Amsterdam zijn wij op zoek naar een Junior Fullstack Developer. Je begint met een op maat gemaakte training om de kennis bij te spijkeren die jij nog mist. Uiteraard leer je het meeste tijdens je werk, maar de training geeft je hiervoor alvast de juiste handvatten. Je kunt het volgende verwachten! Jij ontwikkelt in technieken als Java, Javascript en SQL. Je werkt hierbij volgens de Agile/Scrum methode; Na het afronden van

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

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 »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

Back-end developer (Magento2)

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 .NET Developer

Functie omschrijving C# / .NET Developer gezocht voor een dynamische organisatie in de regio Houten! Voor een leuke organisatie in de regio Houten zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. In deze functie werk jij aan verschillende projecten en ga je vaak bij klanten op bezoek. Binnen deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid treffen. Bedrijfsprofiel Waar ga je werken? Het bedrijf waar je gaat werken is gespecialiseerd in het ontwerpen en implementeren van procesautomatisering en procesinformatisering. Zij doen dit onder andere voor de (petro)chemie, pharma, infra,

Bekijk vacature »

Freelance JAVA / C# Developer

Functieomschrijving Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Voor een opdrachtgever in omgeving Delft zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid

Bekijk vacature »

Software Developer

Functie omschrijving Heb jij affiniteit met ICT en een WO diploma in de pocket? Dan ben je hier aan het juiste adres. Voor een opdrachtgever in Amsterdam zijn wij op zoek naar kandidaten die (enige) ervaring hebben met Java, Javascript, C of C++. Je zal door middel van trainingen worden opgeleid tot een volwaardige Software Developer. Er wordt tijdens de training natuurlijk veel aandacht besteedt aan de vaktechnische aspecten, maar er gaat ook veel aandacht uit naar jouw persoonlijke ontwikkeling. Bedrijfsprofiel Bij deze opdrachtgever in de omgeving van Amsterdam zoeken ze meerdere enthousiaste kandidaten die hun carrière willen starten met

Bekijk vacature »

Full Stack .NET Developer C# ASP.NET

Samengevat: Deze werkgever is gespecialiseerd in het op afstand bewaken en besturen van machines en processen. Ben jij een ervaren Full Stack .NET Developer? Heb je ervaring met C# en ASP.NET? Vaste baan: .Net Developer C# ASP.NET HBO €3.300 - €4.500 Deze werkgever is een snel groeiende onderneming gespecialiseerd in het op afstand bewaken en besturen van machines en processen, IoT (Internet of Things). Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wil jij bij de top specialisten horen? Ben jij op zoek naar een

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Als PHP developer (Symfony) bijdragen aan betere z

Functie Als Medior/Senior PHP developer wordt er een mate van zelfstandigheid verwacht, maar ook dat je goed in een team kunt opereren waar kennis wordt gedeeld en er bijvoorbeeld codereviews plaatsvinden. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden geactualiseerd.

Bekijk vacature »

Traineeship IT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »

Pagina: « vorige 1 2

- Ariën  -
Beheerder

- Ariën -

05/12/2016 15:30:31
Quote Anchor link
In dat geval is er gewoon sprake van een DoS-attack, maar dat kan ook buiten de brute-force om door massaal te refreshen op een willekeurige page die zwaar lijkt te zijn (een brute-force check is dat niet).
Je kan ook gewoon het IP voor 5 minuten in de iptables van Linux gooien en nullrouten.

Dus ik zou niet inzien waarom mijn gestelde brute-force beveilging niet handig is? Je denkt gewoon te ver door naar doem-scenario's ;-).
 
PHP hulp

PHP hulp

02/01/2025 15:30:29
 
Thomas van den Heuvel

Thomas van den Heuvel

05/12/2016 15:32:26
Quote Anchor link
Zucht, hier gaan we weer.

Goed, je kunt SQL injection voorkomen door een hele community je code te laten auditten maar dit kun je zelf alleen voorkomen door anders naar code te gaan kijken. Specifiek door te letten op alle data die van buitenaf komt, ook wel user data (of user input) genoemd. Het komt eigenlijk op het volgende neer:

Do Not Trust User Data

Het is een vergissing om te denken dat user data alleen voorkomt in $_GET en $_POST enzo. Nadat user data in de database is opgeslagen is dit nog steeds user data en is deze nog steeds potentieel gevaarlijk.

Vervolgens moet je je afvragen: wat maakt een website onveilig. Simpel antwoord: alles wat de normale werking van een website kan manipuleren of breken. User data kan daar een groot aandeel in spelen, immers, je kunt daarmee data invoeren die in een bepaalde context een bepaalde betekenis heeft. En daarmee raak je precies de kern van de zaak: het is jouw taak als programmeur om deze data te ontdoen van haar speciale betekenis binnen die bepaalde context.

En dit doe je weer met escaping-functies voor de bijbehorende context: real_escape_string() (in combinatie met quotes, het een is niet veilig zonder het ander) voor de DATA-delen in je SQL, htmlspecialchars() voor alles wat je in (een) HTML(-document) doet, urlenocde() voor querystring-parameters in URLs et cetera. Ook zou je invoer aan syntactische controles moeten onderwerpen nog voordat je deze ergens gaat gebruiken. Kort samengevat:

Filter Input, Escape Output

Bij elk stukje data moet je je afvragen: WAAR komt dit vandaan en HOE behandel ik deze. Pas als je dit en de bovenstaande principes ALTIJD en OVERAL toepast heb je enige garantie dat je code redelijk veilig kan omgaan met user data...

... behalve nog het volgende. Escaping-functionaliteit is afhankelijk van character encoderingen. Deze werkt alleen goed indien de character encoding van de data die je escaped overeenstemt met de character encoding die je hanteert bij het escapen.

Bij het maken van je database connectie selecteer je nergens een character encoding (middels set_charset()), dus grote kans dat deze latin1 is. En zelfs al is deze toevallig utf8, dan nog zou je deze expliciet in moeten stellen. Ook grote kans dat er op dit moment dubbel utf8 ge-encodeerde data in je database zit (als je tabellen utf8 zijn) omdat MySQL de vertaling latin1 -> utf8 automatisch voor jou probeert uit te voeren. Wees altijd expliciet met het opgeven van character encoderingen of andere cruciale instellingen, neem hierbij niets aan. No zo eentje voor aan de muur:

Assume Nothing

Overigens: als jij het filter-input-escape-output principe goed zou toepassen zouden dus ook alle $_SERVER en $_CONFIG directives (en wat nog meer) in je HTML-document ge-escaped moeten worden.

Oh, en na een header('Location: ...') hoort altijd een exit te staan, anders is je code mogelijk onveilig.

En zo kan ik nog wel even doorgaan. Je hebt dit niet in een dag onder de knie, simpelweg omdat je (nog) niet weet wat er allemaal speelt of wat van invloed kan zijn.

Een maintenance mode zou ik niet af laten hangen van je database. Maak een config-var aan die aangeeft of de site toegankelijk is (site_online) ofzo en maak een whitelist met developer IP's. Controleer allereerst of de site online is en/of het IP voorkomt in een whitelist, serveer anders een statisch document middels een include.
Gewijzigd op 05/12/2016 16:15:29 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

05/12/2016 15:49:38
Quote Anchor link
Thomas van den Heuvel op 05/12/2016 15:32:26:
Zucht, hier gaan we weer.

Als je er zo moe van wordt. Waarom maak je dan niet een tutorial hier op PHPhulp aan en verwijs je daarnaar toe? Zomaar een ideetje. ;-)
Gewijzigd op 05/12/2016 15:50:01 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

05/12/2016 16:00:15
Quote Anchor link
- Ariën - op 05/12/2016 15:49:38:
Als je er zo moe van wordt. Waarom maak je dan niet een tutorial hier op PHPhulp aan en verwijs je daarnaar toe? Zomaar een ideetje. ;-)

Ik kan net zo goed naar een post wijzen als naar een tutorial. Enne, ik dacht dat het doen van herhalingen van zetten hier ingeburgerd was (zoals het oproepen tot het aanzetten + weergeven van foutmeldingen).

Waarom zou ik nog meer moeite spenderen aan het maken een tutorial? In beide gevallen is het water naar de zee dragen.

Je zou zelfs een soort van beslisboom kunnen maken voor eenieder die hier een vraagstuk plaatst. Grote kans dat een groot deel dan meteen opgelost is.

Zoiets dus:
Gewijzigd op 05/12/2016 16:02:06 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

05/12/2016 16:03:50
Quote Anchor link
Misschien is een 'relevante topics' wel een leuke aanvulling als je een topicstart maakt. Ik zal het op de backlog zetten.

Zullen we weer terug naar het onderwerp gaan?
 
- Rob -

- Rob -

05/12/2016 16:31:17
Quote Anchor link
Rob Chesture op 05/12/2016 14:40:22:
Ivo P op 05/12/2016 09:55:29:
ik mis nog de inhoud van het script waar je op komt na header('Location: /dashboard')

Check je daar ook of de gebruiker ingelogd is? (en zo nee, stuur je hem dan terug naar het inlogscript).

en op regel 12 en 15 van je inlogfunctie voer je dezelfde query uit.

Op regel 13 zit het id dus in $result['id']
beetje zinloos om dat nog een keer uit te voeren om in $id['id'] dezelfde waarde te stoppen.

Daar check ik of de gebruiker ingelogd is. als dat niet zo is wordt hij/zij teruggestuurd.



Toevoeging op 05/12/2016 15:24:46:

Quote:
Bij elke foutieve inlog sla je het IP op, de userID van het account en het aantal keer dat er geprobeerd is. Als dat gelijk of hoger is dan 5 bijvoorbeeld, dan blokkeer je het account op dat IP.

Is niet al te handig, hiermee wordt elke keer als je page reload de query uitgevoerd. Dus als ze dan ook nog page_reload in brute_force zetten, kan de server nog steeds overbelast worden.


Nog enige andere ideeën?
 
- Ariën  -
Beheerder

- Ariën -

05/12/2016 16:58:45
Quote Anchor link
Op deze pagina van OWASP (Open Web Application Security Project) staan nog diverse tips en truuks uitgelegd over beveiliging in het algemeen:
https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet

Probeer eerst maar eens je script uit te bouwen.


Als je 2 Factor Authentication wilt wilt inbouwen:
https://github.com/PHPGangsta/GoogleAuthenticator
Als ik mij niet vergis is het iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$secret
= "12341234"; // komt uit $ga->createSecret() en sla je dus op in de database.
$checkResult = $ga->verifyCode($secret, $_POST['code'], 2);
if($checkResult) {
    echo "Challenge accepted";
}
else {
    echo "Fout, niet ingelogd!";
}

?>
Gewijzigd op 05/12/2016 17:07:18 door - Ariën -
 
- Rob -

- Rob -

05/12/2016 19:27:28
Quote Anchor link
Thnx, ik heb er naar gekeken :D. Hoe kan ik btw in een .ini file meerdere keren iets posten, dus dat ik zeg maar uit 2 verschillende pagina's, in de zelfde .ini file iets kan posten zonder dat de data die je het eerste hebt gepost weg gaat?

Edit:
Het is niet nodig om het vorige bericht te quoten.
Gewijzigd op 05/12/2016 19:44:25 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

05/12/2016 19:47:50
Quote Anchor link
Daarom moet je eerst alle data ophalen met de genoemde parse_ini_file() functie. Dan mis je geen data.
 

Pagina: « vorige 1 2



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.