Mijn login veilig maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lead Developer Ray Tracing Technology

Trinamics Lead Developer Ray Tracing Technology (Physics/Electronics/Eindhoven/Automotive/Sensors) Our client Our client is a state-of-the-art company that is active in sensor and LiDAR technology, located in Eindhoven. Job Description A well thought of sensor hardware design and a new sensor fusion concept always starts off with developing a thorough understanding of 1) how a sensor front end interacts and perceives the information coming from its surroundings, and 2) how the system components chosen, affect perception quality. To achieve this goal, specific simulation models are to be made of all components and of the physical interactions seen in the real world. Unfortunately

Bekijk vacature »

Oracle Middleware Developer

Wat je gaat doen: Wij zijn op zoek naar een Oracle Middleware Developer met kennis van/ervaring met onder andere SOA Suite 10G en/of SOA Suite 11G, WebLogic, BPEL Orchestration, Java, SOAP. Je bent bekend met de integratie laag gebaseerd op Oracle SOA Suite 10G. Als Middleware developer ben je verantwoordelijk voor de ontwikkeling van integratie tussen de diverse applicaties in het landschap, en de communicatie tussen de klant en andere stakeholders. Je werkt samen met het applicatie team, zoals functioneel ontwerpers en andere ontwikkelaars om de oplossing verder te ontwikkelen en te implementeren. Je collega’s werken onder andere met technieken

Bekijk vacature »

Oracle SOA-OSB Developer

Ben jij een ervaren Oracle SOA-OSB Developer? Ben jij een gedreven Oracle SOA-OSB developer met ambitie en minimaal 2 jaar ervaring als integratie specialist bij klanten en wil je werken binnen complexe (internationale) opdrachten bij Capgemini? Dan hebben wij een passende vacature voor jou! Integratie is het hart in alle projecten. Als Oracle SOA – OSB developer ben jij onderdeel van dat hart en zorg je dat binnen Oracle implementaties integraties zo efficiënt en onderhoudbaar moegelijk worden gerealiseerd. Je werkt op een prettige manier samen in teams met ervaren professionals van Capgemini middel SCRUM/Agile. Met jouw specialistische integratie kennis voeg

Bekijk vacature »

Junior Software Developer

Over de functie Samen met jouw scrumteam werk je aan de complete ontwikkeling van webapplicaties voor onze klanten en bouw je nieuwe functionaliteiten in bestaande applicaties. Je maakt daarbij gebruik van de nieuwste technieken waaronder o.a. Azure, Angular,.Net core, MS-SQL server en de elastic search stack. Kennis en ervaring met deze technieken is geen vereiste maar wel een hele grote pré. Daar waar nodig word je gecoacht door meer ervaren collega’s. In deze functie zal jij met jouw gedrevenheid, leergierigheid en ervaring direct van waarde zijn. Bij goed functioneren liggen de doorgroeimogelijkheden voor het oprapen! Jouw collega’s Je komt terecht

Bekijk vacature »

Java Full Stack Developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Full Stack Developers om ons development team te versterken. Als Full Stack developer werk je in Agile teams bij onze klanten en ben je verantwoordelijk voor alle lagen van de stack. Ben je beter in de backend, dan helpen we je verder met de front-end en andersom natuurlijk. Je gaat hoogwaardige software maken voor verschillende opdrachtgevers in jouw regio. Je ontwikkelt, adviseert over architectuur en past de nieuwste technologieën toe. Je bent een professional die het IT-vak serieus

Bekijk vacature »

.NET Developer gezocht voor beste Consultancy part

Functieomschrijving Als Consultant voor deze partij kom je terecht in een hecht team van slimme koppen. Je gaat aan de slag met het ontwikkelen van maatwerkapplicaties voor de eindklanten. Dit doe je soms op locatie bij de klant, maar soms ook vanuit het kantoor in Den Haag. Je zal veelal in Scrumverband werken. Omdat het altijd om maatwerkapplicaties gaat, hoef je niet bang te zijn dat je hier in een geestdodend ritme terecht gaat komen. Elke dag is anders en elke dag is een uitdaging. Bovendien doe je dit ook nog eens altijd met de nieuwste technieken. Jouw nieuwe werkgever

Bekijk vacature »

Ondernemende Mobile Developer die functie vrij mag

Functieomschrijving In deze functie ben jij het aanspreekpunt van de Mobile afdeling voor jouw collega's én heb jij dagelijks telefonisch contact met nationale en internationale klanten. Dit alles mag jij vanuit kantoor doen. Jouw taak is om de bestaande apps verder uit te breiden en de apps verder te ontwikkelen naar meer goede, snelle en betrouwbare apps waarbij Javascript een belangrijke taal is welke wordt ondersteund door vele native plugins in Cordova / Phonegap. Er wordt van je verlangd dat je meedenkt en nieuwe functionaliteiten ontwikkelt voor de apps. Onderhoud pleegt aan bestaande apps en een stukje testing op je

Bekijk vacature »

Oracle Apex Ontwikkelaar

Wat je gaat doen: Als Oracle Ontwikkelaar werk je zowel zelfstandig als in teamverband aan het ontwikkelen en ontwerpen van software componenten. Je levert een bijdrage aan de ontwikkeling tot en met de implementatie. Je bent in staat om informatie te verzamelen,te analyseren en te documenteren van wensen en eisen van de eindgebruikers. Je bent in staat om functionele vereisten te vertalen naar technische specificaties, ontwikkelt web applicaties met behulp van Oracle Applicatie Express, door de veranderingen en ontwikkelingen van web formulieren en rapporten. Verbeteren van bestaande Oracle Apex Systemen. Ontwikkelen en veranderen van Oracle 11g database schema’s. Schrijven van

Bekijk vacature »

Software Ontwikkelaar C#.NET

Software Ontwikkelaar C#.NET Zit het ontwikkelen van innovatieve applicaties in C#.NET, JAVA of PHP in jouw bloed en wil jij je kennis toepassen binnen uitdagende projecten in kantoorautomatisering of industrie. Dan kan MA-IT mogelijk iets voor je betekenen, aangezien wij uitbreiding zoeken in ons IT team van Software Engineer voor onze vestigingen in Deventer, Son en Gorinchem. Functie-eise Software Ontwikkelaar C#.NET Dit is wat je gaat doen Als C#, JAVA of PHP Developer ontwikkel je binnen een SCRUM omgeving, het hart van de producten die (inter)nationaal gebruikt worden. Het betreft complexe software waarbij je op een hoog abstractieniveau software ontwikkelt.

Bekijk vacature »

Java Backend Developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java Developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en werk je mee aan de architectuur laag. Daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het software ontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je ondersteunt de software architect en projectleider bij hun werkzaamheden. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak

Bekijk vacature »

ASP.NET MVC Developer Procesindustrie Webapplicati

ASP.NET MVC Developer Procesindustrie Webapplicatie Wat ga je doen als Medior.Net Developer? Als Medior .Net Developer ga jij werken voor software house in Rotterdam. Zij zijn gespecialiseerd in het ontwikkelen van webapplicaties voor de procesindustrie. Daarmee ondersteunen zij bedrijven uit de verzorging & cosmetica branche, chemie & verf branche, voeding & drank branche en de farmaceutische branche. Deze type organisaties managen dagelijks productieprocessen en materiaal-beheersprocessen. Afhankelijk van diverse variabelen en factoren worden processen anders gemanaged. Denk hierbij aan Automatische omrekening naar verschillende hoeveelheid eenheden (bijv. kilo, liter, stuk) onderhouden van meetapparatuur, monsterbeheer, productieplanning en controle van bijproducten. De technieken die

Bekijk vacature »

Functioneel applicatiebeheerder

Wij zoeken een ervaren enthousiaste IT collega Ben jij de ervaren applicatiebeheerder en proactieve teamplayer die gebruikers kan helpen en proactief kan meedenken in de ontwikkeling van ons IT landschap. Dan zijn wij op zoek naar jou! Functioneel applicatiebeheerder 32-36 uur per week Als applicatiebeheerder draag je samen met de collega applicatiebeheerder zorg voor het inrichten, monitoren, analyseren en verbeteren van de technische infrastructuur en procedures rondom beheerde applicaties. Je waarborgt de beschikbaarheid van het systeem, de performance en houdt het toekomstbestendig door het verzorgen van updates en toepassen van bugfixes. Je zorgt dat de medewerkers en zorgverleners van PrivaZorg

Bekijk vacature »

Full stack developer

Voor onze internationale opdrachtgever zoeken wij ter uitbreiding van het team een full stack developer die volledig nieuwe code gaat schrijven voor een cutting edge meetplatform. Innovatieve software die real time inzicht geeft in enorme hoeveelheden data. Wat ga je doen? Werken aan de uitbreiding en verbetering van een online meetplatform voor de olie- en gasindustrie. Dit doe je als full stack software engineer in een goed op elkaar ingespeeld scrum team van 5 collega's, waarmee jullie door continuous improvement tot het beste resultaat komen. Omdat het gaat om een omvangrijk nieuw project - gebouwd op TypeScript, Node.JS en state-of-the-art

Bekijk vacature »

Medior PHP Developer Energy Services Symfony

Medior PHP Developer Energy Services Symfony Wat ga je doen als Medior PHP Developer? Als Medior PHP Developer uit de omgeving Rotterdam, ga jij werken aan een real-time energievoorziening webportal voor in de agrarische sector. De webportal ontzorgt klanten 24/7 volautomatische aansturing van warmtekrachtkoppeling, warmtepompen en netinkoop. Dit op basis van actuele APX in-en verkoopverplichtingen en onbalansmarktprijzen. Deze webportal levert 5 minuten near-time (bron) meetdata, automatisch ingelezen marktprijzen gas en elektriciteit en doorlopend near-time (op kwartierbasis) geactualiseerde financiële en technische performance rapportages (waaronder rookgasreiniging raakgascondensor monitoring). Hiermee bied jij een "energiedashboard" met alle relevante parameters om optimale economische en technische

Bekijk vacature »

Puppet Developer

Deel jij onze visie dat de toekomst van IT ligt in de software, integratie, automatisering en eenvoud? Wil je net als wij af van het denken in infrastructuur en software apart? Lees dan verder! Dit ga je doen Als Puppet Developer bij Itility lever je technische expertise in Puppet implementaties bij internationale enterprise klanten en binnen de Itility inhouse projecten. Dit is je uitdaging: vertalen van business requirements naar design en implementatie van Puppet profiles, manifests en modules ontwikkelen van Puppet manifests en modules in onze DevOps teams leveren van bijdragen aan het ontwikkelen van standaards en richtlijnen voor het

Bekijk vacature »
Jeroen de wilde

Jeroen de wilde

10/08/2018 13:50:22
Quote Anchor link
Hoi,

Ik heb een login-form gemaakt deze werkt perfect.
Maar als ik een sql injectie test doe 'OR'1'='1 werkt de login gewoon.
als ik dan mysqli_real_escape_string gebruik dan werkt de login niet.
Hopelijk kunnen jullie me helpen.

Alvast dank

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
<?php
if (isset($_SESSION['loginId'] )){ // direct doorsturen als men ingelogd is ...
if ($_SESSION['regelment'] == "0") {
header("location: voorwaarden.php");
}
else{
header("location: dashboard.php");
}

}
else{
if (isset($_POST['login'])){
/************ select ******************/
//echo get_magic_quotes_gpc(); // zo kan je checken of magoc quotes aan of af ligt 0 = off - 1 = on
/*** SECURITY !! zorg dat magical quotes aanstaat in de php ini ***/


$login = htmlentities($_POST['login']);

/*md5 versleuteling, unieke string opp basis van een woord */
$paswoord = md5($_POST['paswoord']);

// Maak een query die login en paswoord zoekt
$query ="SELECT * FROM `leden` where `email` = '".$login ."' OR `login` = '".$login ."' AND `paswoord` = '".$paswoord."'";
// resultaat maken door query uit te voeren met onderstaand commando
$result = mysql_query($query) or trigger_error( mysql_error() );
// controle of login en paswoord correct zijn
if( mysql_num_rows( $result ) == 0 || empty($login) || empty($paswoord)){
$error = "Login en paswoord verkeerd!"; // geen records gevonden / login is leeg of paswoord is leeg ...
}else{
// maak een array met de gegevens
$rij = mysql_fetch_array($result);
// Maal session variabelen die blijven standaard 20 minuten bestaan
$_SESSION['loginId'] = $rij['id'];
$_SESSION['loginNaam'] = $rij['voornaam'];

header("location: dashboard.php"); // stuur door naar de overzicht pagina
}
}

?>
 
PHP hulp

PHP hulp

22/03/2019 08:16:40
 
Thomas van den Heuvel

Thomas van den Heuvel

10/08/2018 14:07:35
Quote Anchor link
Haakjes?
(A OR B) AND C
is iets compleet anders dan
A OR (B AND C)

get_magic_quotes() is er allang uit.
htmlentities() helpt niet bij beveiliging in queries - dit is escaping voor de HTML-context, niet voor een SQL-context.

Het makkelijkste is gewoon alle DATA die je invoegt in SQL te voorzien van quotes + een real_escape_string() functie, het een is niet veilig zonder het ander.

Daarbij hoort na een header('Location: ...') eigenlijk altijd een exit;.

En MD5 voor hashing van wachtwoorden is inmiddels ook achterhaald, gebruik password_hash() en password_verify().

Dus, ik weet niet waar je deze ouwe meuk vandaan hebt, maar het wordt waarschijnlijk tijd om wat kennis op te frissen over deze onderwerpen.
 
- Ariën -
Beheerder

- Ariën -

10/08/2018 14:09:16
Quote Anchor link
Als je mysqli_real_escape_string gebruikt moet je natuurlijk ook systematisch overal mysqli functies in PHP gebruiken.

Houd ook rekening dat md5() als hashing-algoritme voor je wachtwoorden niet meer veilig is. Gebruik liever bCrypt met password_hash() een een controle met password_verify().

Ook hoort er na een location-header een exit(). Je script moet ook stoppen.
Gewijzigd op 10/08/2018 16:16:18 door - Ariën -
 
Willem vp

Willem vp

10/08/2018 14:14:22
Quote Anchor link
> Maar als ik een sql injectie test doe 'OR'1'='1 werkt de login gewoon.

Dan werkt je formulier dus niet perfect. ;-)
Waar/waarop heb je de mysqli_real_escape_string gebruikt? Op $query (fout) of op $login en $password (goed)?

Ander dingetje: je query is sowieso niet goed.

SELECT * FROM leden where email = '$login' OR login = '$login' AND paswoord = '$paswoord'

AND precedeert boven OR, dus eigenlijk staat hier dit:

SELECT * FROM leden where email = '$login' OR (login = '$login' AND paswoord = '$paswoord')

Anders gezegd: als je een geldig email-adres opgeeft, kun je inloggen zonder dat je password wordt gecontroleerd.

Je bedoelt waarschijnlijk:

SELECT * FROM leden where (email = '$login' OR login = '$login') AND paswoord = '$paswoord'

En md5 gebruiken om je password te versleutelen: ík zou het niet durven... (hint: password:hash())
 
Jeroen de wilde

Jeroen de wilde

10/08/2018 16:01:19
Quote Anchor link
Bedankt allemaal voor de hulp en het advies.
Ik heb nu de onderstaande code

Enkel als ik de $login = htmlentities($_POST['login']); wijzig in $login = mysqli_real_escape_string($_POST['login']);

Dan werkt mijn login niet.

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
<?php
if (isset($_SESSION['loginId'] )){ // direct doorsturen als men ingelogd is ...
if ($_SESSION['regelment'] == "0") {
header("location: voorwaarden.php");
}
else{
header("location: dashboard.php");
}

}
else{
if (isset($_POST['login'])){
/************ select ******************/

$login = mysqli_real_escape_string($_POST['login']);

/*md5 versleuteling, unieke string opp basis van een woord */
$paswoord = hash($_POST['paswoord']);

// Maak een query die login en paswoord zoekt
$query =" SELECT * FROM leden where (email = '$login' OR login = '$login') AND paswoord = '$paswoord'";
// resultaat maken door query uit te voeren met onderstaand commando
$result = mysql_query($query) or trigger_error( mysql_error() );
// controle of login en paswoord correct zijn
if( mysql_num_rows( $result ) == 0 || empty($login) || empty($paswoord)){
$error = "Login en paswoord verkeerd!"; // geen records gevonden / login is leeg of paswoord is leeg ...
}else{
// maak een array met de gegevens
$rij = mysql_fetch_array($result);
// Maal session variabelen die blijven standaard 20 minuten bestaan
$_SESSION['loginId'] = $rij['id'];
$_SESSION['loginNaam'] = $rij['voornaam'];

header("location: dashboard.php"); // stuur door naar de overzicht pagina
}
}

?>
 
- Ariën -
Beheerder

- Ariën -

10/08/2018 16:09:06
Quote Anchor link
Lees even de reactie nog goed door, merendeel heb je niet of fout toegepast.
Zo is hash geen bestaande PHP-functie, en gebruik je nog de verouderde MySQL-functies in plaats van MySQLi.
En nog een aantal dingen hier in dit topic genoemd zijn.

NB: Het is 'wachtwoord' of 'password', maar geen 'paswoord' ;-)
Gewijzigd op 10/08/2018 16:15:08 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

10/08/2018 16:27:45
Quote Anchor link
Dit wordt ondertussen mijn favoriete aangehaalde passage: header('Location: ...') transporteert je NIET (meteen) automagisch naar de nieuwe locatie (interne link).

Dit kan serieuze veiligheidslekken introduceren. Daarom is het handiger om hier een functie van te maken die meteen alles regelt, zoals ook in die reactie staat uitgelegd.
 
Jeroen de wilde

Jeroen de wilde

10/08/2018 17:50:15
Quote Anchor link
Bedankt,

Ik vervang alles naar mysqli en ik gebruik de functie voor de headers.
Wat zou ik nog moeten toepassen bij $login = htmlentities($_POST['login']);

Nogmaals dank voor de hulp
 
- Ariën -
Beheerder

- Ariën -

10/08/2018 18:07:55
Quote Anchor link
mysqli_real_escape_string natuurlijk gebruiken. Je wilt niet dat iemand met een SQL-injection je database leegtrekt. Lees wel de manual even door van alle mysqli-functies. Want het is vaak niet enkel een 'i' toevoegen, maar in sommige gevallen moet je verwijzen naar je connectie.

Of je moet de object georiënteerde versie gebruiken, welke ik eigenlijk aanraad. Die kan je makkelijker uitbouwen met eigen functies, als je wilt.
Gewijzigd op 10/08/2018 18:14:27 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

10/08/2018 19:51:59
Quote Anchor link
Bepaalde karakters of bepaalde karakterreeksen kunnen in een bepaalde context (in een HTML-document, een SQL-query, in JavaScript, een XML-document et cetera) een speciale betekenis hebben die de werking van zo'n stuk functionaliteit kan manipuleren. Soms op een zodanige wijze dat de werking een ongewenst of zelfs schadelijk effect heeft. Zo'n inbraak op de werking wordt doorgaans ook wel een injectie genoemd.

Een van de bekendere hacks in systemen is de SQL-injectie, waarbij de werking van een query zodanig wordt gemanipuleerd dat het effect van de query rampzalige gevolgen kan hebben voor de administratie of veiligheid (of beide) in een systeem. Een query die verantwoordelijk is voor het inloggen van leden tot een systeem dient dus 100% waterdicht te zijn voor dit soort onzin. Anders bestaat de kans dat het beveiligingsmechanisme wat ervoor moet zorgen om ongewenste individuen buiten te houden volledig omzeild wordt. En je query moet natuurlijk van zichzelf goed in elkaar zitten, als dit niet het geval is gaat fatsoenlijke escaping je niet redden.

Gelukkig zijn daar (contextspecifieke) escaping-functies, die tot doel hebben specifieke speciale karakters of -reeksen binnen een specifieke context onschadelijk te maken. Zo is er voor (My)SQL real_escape_string(), en voor HTML bijvoorbeeld htmlspecialchars() (die eigenlijk de voorkeur verdient boven htmlentities()).

Een functie gebruiken voor een context waarvoor deze niet bedoeld is heeft echter geen enkele zin. htmlentities() is dan ook ongeschikt voor gebruik in een query. Hiervoor gebruik je (enkele) quotes in combinatie met real_escape_string(). Het een is niet veilig zonder het ander.

En dan is er nog een bijkomende aangelegenheid: character encoderingen. Alle tekst die je ooit ergens ziet in code, documenten of op het scherm heeft een character encoding. Heel kort door de bocht is dit de vertaling van specifieke bitreeksen (nullen en enen) naar de symbolen (letters en cijfers) die deze representeren in een bepaalde character encoding.

Omdat alles een character encoding heeft, dien je er dus ook voor te zorgen dat deze in de pas lopen. Door al je "tekst" gelijk te schakelen ban je namelijk problemen uit die (waarschijnlijk onbewust) ontstaan door (automatische) vertalingen hiertussen als deze van elkaar zouden afwijken. Zo heb je bijvoorbeeld:
- de character encoding waarmee PHP-, HTML- etc. bestanden worden opgeslagen
- de character encoding die wordt meegegeven in de header() of meta-tags voor je HTML-document
- de character encoding die wordt gebruikt bij het maken van een verbinding met je database (via set_charset())
- de character encoding van de database, de tabellen en wellicht de individuele kolommen

En dit is zeker relevant voor escaping want escaping-functionaliteit is (naast het feit dat deze altijd bedoeld is voor een specifieke context) sterk afhankelijk van de character encoding.

Van al deze onderwerpen dien je wat kaas gegeten te hebben voordat je uberhaupt overweegt om een loginsysteem in elkaar te flansen zetten.
 
Jeroen de wilde

Jeroen de wilde

11/08/2018 15:37:50
Quote Anchor link
Super bedankt voor de hulp en informatie
 



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.