Mijn login veilig maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Developer

Dit ga je doen Je richt je op het doorontwikkelen en herstructureren van het platform; Je werkt in teamverband en zelfstandig aan uitdagende projecten voor verschillende klanten; Softwareontwikkeling middels C# .NET; Je staat in contact met verschillende opdrachtgevers om de klantwensen te bespreken en deze vervolgens te ontwikkelen; Verbeteren van bedrijfsprocessen; Implementaties. Hier ga je werken Als .NET Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet

Bekijk vacature »

Oracle Developer / PL SQL

Dit ga je doen Software ontwikkeling aan een internationaal gebruikt pakket; Werken met technieken als Oracle 19c, Toad, PL/SQL, Oracle Forms, Reports en Designer; Meedraaien in internationale projecten; Meedenken over technisch en functioneel ontwerp; Samenwerken met collega's als Informatie Analisten, Testers en Release Managers; Soms wensen en eisen afstemmen met de business. Hier ga je werken Onze klant, een internationaal bekend bedrijf dat essentiële producten maakt waar iedereen graag gebruik van maakt, zoekt versterking in het Software Development team. Samen met 3 developers, een release manager, een informatie analist en 3 testers werk jij aan een systeem waarmee complexe producten

Bekijk vacature »

Ambitieuze Junior/Medior Low-code Developers gezoc

Bedrijfsomschrijving Transformeer bedrijven met jouw expertise in innovatieve technologie Ben je een bedreven softwareontwikkelaar met ervaring in Low-code platformen, of sta je te popelen om je in deze baanbrekende oplossing te verdiepen? Wij zijn op zoek naar jou! Ons klantenbestand groeit en we willen ons team uitbreiden met deskundige en leergierige Low-code specialisten. Is het jouw passie om organisaties te ondersteunen in hun digitale transformatie en maatwerkoplossingen te bieden met behulp van geavanceerde software? Wij zijn een vooruitstrevend bedrijf dat dagelijks werkt aan het oplossen van complexe vraagstukken om de digitale ambities van onze klanten te realiseren. Functieomschrijving Ontwikkel op

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back

Bekijk vacature »

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

.NET Developer

Functie omschrijving Ervaren .NET Developer gezocht! Wij zoeken een ervaren .NET developer die aan de slag gaat voor een softwarebedrijf in de regio Rhenen. In deze rol ben jij zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Daarnaast houdt jij je bezig met de nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en product specialisten om mooie producten te creëren. Bedrijfsprofiel Waar kom je te werken? Je komt te werken voor snelgroeiende softwareleverancier en allround dienstverlener. Klanten van deze

Bekijk vacature »

Machine Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Machine Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Machine Software Developer ben je verantwoordelijk voor: - Je ontwerpt, ontwikkelt en debugt software voor machinebesturingssystemen en complexe landbouwmachines; - Je stelt gebruikersinterfaces op (cabinedisplays); - Op termijn ga je softwareprojecten leiden voor specifieke machines; - Inclusief planning, documentatie en validatie; - Om specificaties te verifiëren

Bekijk vacature »

Medior Java developer (fullstack)

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 daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

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. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. 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 in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Software Developer

Functie omschrijving Veel begeleiding en de kans om je verder te ontwikkelen als software developer. Dat kunnen wij jou bieden bij deelname aan deze leuke traineeship. Je krijgt een mentor toegewezen die jou alle kneepjes van het vak leert. Heb jij al wat ervaring als software developer? Daar worden wij heel blij van! Lees snel verder! Bedrijfsprofiel Als software developer neem je deel aan een trainings programma in de omgeving van Haarlem waar je persoonlijk wordt begeleidt, zodat je alle kneepjes van het vak leert. Aan de hand van jouw kennis en ervaring krijg je een persoonlijk opleidingstraject. Je gaat

Bekijk vacature »

Fullstack developer (NodeJS, React, AWS)

Functie Als Fullstack developer kom je te werken in het ontwikkelteam, maar zoals gezegd komt er veel meer bij kijken dan alleen maar ontwikkelen. Je bent samen met je collega’s continu bezig om de software uit te breiden maar hiernaast doe je doorlopend onderzoek naar de inzet van bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Maar waar staan ze nu? Na een onderzoeksfase van ruim een jaar zijn

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

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

25/04/2024 14:05: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.