Beschermen tegen injections

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Programmeur

Functie omschrijving Ben jij op zoek naar een organisatie waar je samen met een team werkt aan iets moois en waar je naast hard werken ook hard kunt lachen? Dan ben je hier aan het juiste adres! Voor een informeel IT-bedrijf in omgeving Wassenaar zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed

Bekijk vacature »

Fullstack Developer

Functieomschrijving Voor een erkende werkgever in regio Etten-Leur zijn wij op zoek naar een Fullstack Developer met PHP/Laravel ervaring. Je gaat aan de slag met het bouwen van maatwerk software voor klanten die actief zijn in een specifieke markt. Als fullstack developer ben je samen met een enthousiast team van 7 collega’s verantwoordelijk voor de ontwikkeling, beheer en innovatie van informatiesystemen voor klanten in een specifieke branche. Verder ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Ervaring met Laravel is een must. Om de klant zo goed mogelijk te

Bekijk vacature »

Frontend Developer

Dit ga je doen Door ontwikkelen van het online platform Deel uitmaken van verschillende ontwikkelteams Meedenken over UI/UX vraagstukken Uitdragen van Front-end binnen de organisatie Hier ga je werken Deze organisatie, gevestigd in de omgeving van Amsterdam, is een grote onderwijs instelling met meerdere vestigingen en een groot aantal studenten. Zo telt deze organisatie +/- 35.000 gebruikers. Bij deze organisatie staat jouw ontwikkeling centraal en is er veel ruimte voor eigen initiatieven. In samenwerking met jouw team ga jij de online omgeving verder ontwikkelen. In de rol van Front end Developer zal jij 50% van jouw tijd werken in het

Bekijk vacature »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net 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. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Web Application Developer

Dit ga je doen Samen met het team werk je aan de visualisatie functionaliteiten en hoe dit gebruikt kan worden in een operationele setting; Het ontwerpen, ontwikkelen, onderhouden en leveren van support betreft het Warehouse Management Systeem en de bijbehorende web visualisaties; Je gebruikt hierbijde tools WebGL en ASP.net; Het meewerken in implementatieprojecten; Het leveren van Go-Live Support; Sparren met jouw Amerikaanse collega's. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Web Application Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

.NET developer

Functie Als senior .NET ontwikkelaar en aankomend lead developer ben jij in één van de drie development teams verantwoordelijk voor het volgende: • Jij hebt een oogpunt op modernisering en bent verantwoordelijk voor de technische staat en architectuur van de applicatie; • Jij bent verantwoordelijk voor het reviewen van de technische haalbaarheid van verschillende onderwerpen; • Jij bent verantwoordelijk voor een goede aansluiting binnen het multidisciplinaire team en de bijbehorende taken; • Jij bent verantwoordelijk voor het aandragen van verbetervoorstellen en ontwikkelstandaarden in zowel de techniek als architectuur; • Jij bent meewerkend voorman en ondersteunt en coacht jouw team op

Bekijk vacature »

Java Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Front-end developer

Functie Jij komt te werken in een team van 5 developers. het product is continue in beweging. Nieuwe en bestaande klanten vragen om vaak nieuwe features. Hierin ben jij zeer belangrijk om te zorgen dat de functionaliteiten goed opgezet worden op technisch vlak. Designs krijg je aangeleverd van een externe partij zodat jij je primair kan focussen op de techniek! Je hebt daarbij alle vrijheid om je eigen creativiteit toe te passen en mee te denken over de gebruikte technieken. Het gezamenlijke doel is een product dat functioneel zeer gebruiksvriendelijk is en het bedrijfsproces van de gebruikers versneld en kwalitatief

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net 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. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Randstad B.V.- Freelance Senior Fullstack Develope

Startdatum: 01.05.2023 Richttarief: € 75,00 - €85,00 Duur van de opdracht: 1 jaar Uren per week: 40 Werkmodel: Hybride, dinsdag en donderdag aanwezig op kantoor in Diemen en meer wanneer dit nodig is. Functieomschrijving: De ideale kandidaat gaat onderdeel uitmaken van een junior team binnen het foundation domein. Vanuit het foundation domein werkt dit team samen met andere foundation teams en teams uit het online domein (professionals B2B en B2C) voor het bouwen en integreren van HRM functionaliteiten (verlof en benefits) in de persoonlijke portal van Interim Professionals. Er is meer backend werk dan frontend, maar kandidaat moet beiden leuk

Bekijk vacature »

C# .NET Developer

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf. Lees dan snel verder! Voor deze functie zoeken wij een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Daarnaast begeleid je complexe projecten, wij zoeken iemand die altijd kansen ziet en waarbij het glas altijd half vol is. Voor deze functie zoeken wij een Developer met ervaring op het gebied van .NET die deze organisatie gaat versterken. Binnen de organisatie ga jij je vooral bezighouden met het verbeteren van

Bekijk vacature »

(Junior) Back-end Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Altijd al willen werken bij een organisatie, die maatwerk applicaties bouwt, die echt impact hebben in de maatschappij? Dit is je kans. Voor een kleine organisatie in de regio van Eindhoven ben ik op zoek naar een C# Ontwikkelaar. Jij gaat aan de slag met de ontwikkeling van maatwerk software en applicaties. Deze organisatie werkt voor grote organisaties in Nederland, maar ook voor het MKB. De projecten waar je aan gaat werken zijn erg divers, waardoor je werk uitdagend blijft en je erg veel kan leren. Verder ga je aan

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

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 »

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

28/04/2024 21:14:31
 
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.