Veiligheid loginsysteem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

IT-traineeship junior software developer

Zoek jij een stevige uitdaging en de mogelijkheid om veel nieuwe dingen te leren in een dynamisch vakgebied? Doe mee aan ons IT Professional Program en ontwikkel jezelf tot software engineer! Je begint met een opleidingstraject van ongeveer 4 maanden. Hierin ga je aan de slag met verschillende technieken die je op conceptueel niveau leert te overzien en interpreteren. Onderwerpen die aan bod komen zijn o.a. programmeren (Java/C#/Python), Object Oriëntatie, Databases, Webservices & webtechnologieën, Domain Driven Design en Continuous Integration/Continuous Delivery. Sommige van deze onderdelen sluit je af met een examen en bijbehorende certificering. Het opleidingstraject zelf sluit je af

Bekijk vacature »

Application Developer Tech Lead

We’re Hiring! A UPS Application Developer Tech Lead *REMOTE WORK POSSIBLE FOR THIS ROLE As a Tech Lead Developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life cycle activities, e.g. analysis, technical requirements, design, coding, testing and the implementation of software. Working in our Europe development center in Eindhoven means working in an international team with onsite people as well as

Bekijk vacature »

Senior C# Developer IoT Platform (NL)

Senior C# Developer IoT Platform (NL) Den Haag HBO/WO IT Professional Om alle Unique Loading Devices (ULD's) real-time te kunnen volgen, hebben we een IoT landschap gecreëerd dat ons continu update met de locatie en sensor informatie van de ULD's. Het IoT platform is volledig ontworpen met behulp van AWS serverless componenten en Serverless Architecture staat in het middelpunt van al onze ontwerpen. Enkele van de componenten die we gebruiken zijn AWS IoT services, Amazon Location Services, AWS Lambda enzovoort. Op ons platform vertalen we alle detecties van ULD's, vanuit AWS IoT Core naar relevante informatie over wanneer een ULD

Bekijk vacature »

Senior Front-end Developer (Angular/Typescript)

Bedrijfsomschrijving Onze klant is een zeer gerenommeerde organisatie binnen software development. Ze zoeken een ervaren Front-end koning die hun team gaat versterken. Bij deze organisatie werken 70 mensen op diverse afdelingen met ieder hun eigen specialismen. Ze hebben diverse teams die bezig houden met onder andere, innovatie, development en testing. Hier hangt een laagdrempelige cultuur er de sfeer kun je bijna omschrijven als huiselijk. Deze sfeer wordt gecreëerd door hele prettige collega's die er vaak al lang zitten of lang blijven zitten. Daarnaast zijn de kantoren zo ingericht dat het heel huiselijk overkomt. Hoe komt dat? Dat moet je zelf

Bekijk vacature »

Java Developer

Bedrijfsomschrijving De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen zij met plezier en enthousiasme. De organisatie is te omschrijven als informeel, pragmatisch en dynamisch. Onze klant is opzoek naar een Junior Java Developer. Samen met een team van 8 engineers ben je verantwoordelijk voor alle software-innovaties en -optimalisaties, voor alle facetten binnen de organisatie. Denk hierbij aan back-end processen, apps en diverse widgets. Het

Bekijk vacature »

IT-Traineeship junior software programmeur

Zoek jij een stevige uitdaging en de mogelijkheid om veel nieuwe dingen te leren in een dynamisch vakgebied? Doe mee aan ons IT Professional Program en ontwikkel jezelf tot software engineer! Je begint met een opleidingstraject van ongeveer 4 maanden. Hierin ga je aan de slag met verschillende technieken die je op conceptueel niveau leert te overzien en interpreteren. Onderwerpen die aan bod komen zijn o.a. programmeren (Java/C#/Python), Object Oriëntatie, Databases, Webservices & webtechnologieën, Domain Driven Design en Continuous Integration/Continuous Delivery. Sommige van deze onderdelen sluit je af met een examen en bijbehorende certificering. Het opleidingstraject zelf sluit je af

Bekijk vacature »

Application Developer Tech Lead

We’re Hiring! A UPS Application Developer Tech Lead *REMOTE WORK POSSIBLE FOR THIS ROLE As a Tech Lead Developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life cycle activities, e.g. analysis, technical requirements, design, coding, testing and the implementation of software. Working in our Europe development center in Eindhoven means working in an international team with onsite people as well as

Bekijk vacature »

Functioneel Beheerder bij Centraal Invorderings Bu

Jij hebt een passie voor het slimmer maken van processen met technologie en intelligence en bent zeer gedreven om samen met ons de volgende stappen binnen CIB te maken. Complexe formules en codes zorgen niet voor verwarring, maar eerder voor enthousiasme en nieuwsgierigheid naar een efficiënte oplossing. Je kunt snel schakelen, denkt vanuit de klant en gebruikers en bent een ideale gesprekspartner voor zowel de stakeholders als het Management Team. Je bent proactief en altijd op zoek naar een verbetering in systemen. Je vind het leuk om je mening te geven en informatie uit te vragen bij de stakeholders. Vanuit

Bekijk vacature »

Python Developer / Machinebouw

Bedrijfsomschrijving Deze organisatie is gesitueerd in de regio Barneveld en is wereldwijd actief binnen de High Tech industrie. Daar is zij bedreven in het ontwikkelen van diverse complexe machines die voornamelijk in de wetenschappelijke branche worden gebruikt. De machines worden zowel hardware- als software technisch van A tot Z gebouwd en worden aangeleverd met een Control Systeem dat ontwikkeld is in Python. Dit Control Systeem maakt dataopslag, analyses, automatisering en een user interface mogelijk. Op deze manier wordt belangrijke data uit de machines onttrokken en middels op maat gemaakte Python software gevisualiseerd. Daarnaast zijn er diverse PLC's aanwezig in de

Bekijk vacature »

Fullstack ontwikkelaar

Bedrijfsomschrijving Bij het accepteren van dit aanbod kom je terecht binnen een veelzijdige organisatie waar een goede sfeer hangt. Zij zijn gewend dagelijks met elkaar te lunchen en ruimte is voor een potje Mario. Als Fullstack ontwikkelaar ga je je op projectbasis bezighouden met het ontwikkelen van content voor diverse opdrachtgevers. De projecten waar je aan gaat werken zullen verschillende qua omvang. Hierbij kan je rekening houden met een gemiddelde doorlooptijd van een half jaar, waarbij er meerdere projecten naast elkaar kunnen lopen. De nadruk zal liggen op ontwikkeling aan de front-end, maar ook op het gebied van ontwikkeling aan

Bekijk vacature »

Applicatiebeheerder (beginnend)

NWO-I zoekt een beginnend functioneel applicatiebeheerder financieel systeem (minimaal 32 uur per week) Voor het beheren, optimaliseren en (door)ontwikkelen van de aanwezige financiële applicaties, teneinde het gebruiksgemak en beschikbaarheid te waarborgen en processen adequaat te ondersteunen. Functioneel Applicatiebeheerder financieel systeem U4ERP Ben jij onze nieuwe, enthousiaste en leergierige, collega, die bij ons het vak van functioneel applicatiebeheerder wil leren en wil uitoefenen? Je leert hoe je eerste- en tweedelijns ondersteuning biedt bij verzoeken en meldingen van (eind-)gebruikers van U4ERP. Deze gebruikers bevinden zich op diverse locaties in het land. Ook beheer je de gebruikersaccounts binnen U4ERP. Op deze wijze laat

Bekijk vacature »

Ontwikkelaar

Wij zoeken een capabele Magento developer, die mee willen werken aan het realiseren van mooie webshops. Wij zoeken een creatief, enthousiast, leergierig, gezellig en capabel persoon. Zelfstandig kunnen werken. Goed kunnen communiceren. De wil hebben om verder te groeien. Als Magento developer werk je samen met je team aan de allerbeste webshops voor onze opdrachtgevers. Wat ga je doen als Magento developer? Ontwikkelen van webshops in Magento Onderhoud plegen aan bestaande webshops Behalve kennis van Magento heb je ook kennis van Javascript, HTML, CSS Je bent in staat om zowel zelfstandig als in teamverband te werken Je bent in staat

Bekijk vacature »

Applicatie ontwikkelaar

LET OP: DIT IS EEN VACATURE OP INTERIM BASIS! Vanwege komende projecten is er een vacature ontstaan voor een functioneel beheerder van de applicatie NIMBUS-T. In deze functie draagt de functioneel beheerder zorg voor functioneel en inhoudelijk correcte informatiesystemen d.m.v. functioneel beheer. wat bieden wij jou een all-in tarief van max. €70 per uur; leuke collega's; 36 uur per week; uitdagende functie. een vaste opdracht; wie ben jij Wie ben jij? jij hebt HBO werk- en denkniveau (vanwege de complexiteit in het gastransportdomein); jij hebt ervaring met het beheer van ICT systemen en techniek; jij hebt ervaring met functioneel systeembeheer;

Bekijk vacature »

C++ Developer (non Embedded)

Senior C++ Software developer (not embedded) with excellent knowledge of and hands on experience with UI Frameworks. In this role, you have the opportunity to Get to know that the average heart beats about 100.000 times daily. And that more than 7 million people each year die from coronary heart disease's so, innovation, prevention, diagnosis and treatment is essential to reduce this number and improve the life of the patient. At Philips IGT-Devices we are working on industry leading solutions helping clinicians on deciding, guiding, treating and confirming the right therapy for each patient in real-time during image-guided therapies (IGT).Are

Bekijk vacature »

Full Stack Developer

Ben jij de full stack developer die de Zorg beter maakt? Zet dan je kwaliteiten in voor CareConnections, een succesvolle onderneming met inmiddels negentien medewerkers. Je collega's zijn jong en ambitieus met een aantal ervaren ontwikkelaars die jou naar een hoger niveau kunnen helpen. De cultuur is informeel en alles is bespreekbaar. Wil je thuiswerken? Dat mag. Wil je tussen de middag even sporten? Lekker doen! Alles gaat op basis van vertrouwen. Als ontspanning een massage na het vele uren ontwikkelen? Die plan je in bij de masseur om de hoek. Bij ons staat de klant op nummer 1, jouw

Bekijk vacature »
Wouter H

wouter H

02/10/2014 22:34:05
Quote Anchor link
Hallo beste mensen en php-ers

Al een flinke tijd gebruik ik onderstaande login systeem, dat ik gedeeltelijk zelf, gedeeltelijk met snippets van het internet geplukt bij elkaar heb gekregen. Ik ben niet helemaal zeker of het veilig is. En ben benieuwd wat jullie er van vinden. Bvd.

Groeten Wouter
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<?php
//login.php

//cleanQuery

function cleanQuery($string)
{

  if(get_magic_quotes_gpc())  
  {

    $string = stripslashes($string);
  }

  if (phpversion() >= '4.3.0')
  {

    $string = mysql_real_escape_string($string);
  }

  else
  {
    $string = mysql_escape_string($string);
  }

  return $string;
}


//salt
function salt($pass, $salt, $str="")
{

    $pass = str_replace(" ", "", $pass);
    $pass = strrev($pass);

    $arr[0] = strlen($pass);
    $arr[1] = strlen($salt);
    
    while($arr[0] > $arr[1] + 1)
    {

        $salt = $salt.$salt;
        $arr[1] = strlen($salt);
    }


    $split_len = floor(max($arr) / (min($arr) - 1));
    
    $salt = explode(" ", chunk_split($salt, $split_len, " "));
    array_pop($salt);
    $salt = array_reverse($salt);
    
    $j = $arr[0] > count($salt) ? $arr[0] : count($salt);
    
    for($i=0; $i<$j; $i++)
    {

        if(isset($pass{$i}))    $str .= $pass{$i};
        if(isset($salt[$i]))    $str .= $salt[$i];
    }

    
    return $str;
}

 
$logingoto = "admin.php";
$validate = "validate.php";
$error = "form.php";

if (isset($_SESSION['visit']))
{

    $_SESSION['user'] = NULL;
    unset($_SESSION['user']);
    $_SESSION['ip'] = NULL;
    unset($_SESSION['ip']);
    $_SESSION['id'] = NULL;
    unset($_SESSION['id']);
    $_SESSION['logged'] = NULL;
    unset($_SESSION['logged']);
    
    session_destroy();
}


if (!isset($_SESSION))
    {
  session_start(); }

require('connections/connection.php');

if (isset($_POST['login']))
{

  
  $username = cleanQuery($_POST['username']);
  $password = hash('sha256', salt($_POST['password'], 'randomnummersencijfers'));
  $ip = cleanQuery($_POST['ip']);
  $ip_check = cleanQuery($_SERVER['REMOTE_ADDR']);

  $query = mysql_query ("SELECT * FROM `users` WHERE username = '$username' ");
  $numrows = mysql_num_rows($query);
  $row = mysql_fetch_assoc($query);
  
  if($row['attempt'] % 3 == 0)  
  {

      if (strtotime("now") < $row['attempt'])
      {

          echo "to soon";
          die ;
      }

      else
      {
        $outtime = strtotime("now + 2 hours");
        mysql_query("UPDATE `users` SET `outtime` = '$outtime' WHERE `id` = " . $row['id']);
        header ("Location: " . root() );
        die;
      }
  }
    
  
  else
  {
      if ($row['emailcheck'] == 1 )
    {

      if ($username && $password)
      {
      
          if ($numrows != 0 and $row['type'] != 0)
          {

              $dbusername = $row['username'];
              $dbpassword = $row['password'];
              $id = $row['id'];
              
              if ($username == $dbusername && $password == $dbpassword)
              {

                  $session_id = rand(100000000,999999999);
    
                  $_SESSION['login'] = TRUE ;
                  $_SESSION['user'] = $row['id'];
                  $_SESSION['id'] = $session_id;
                  
                  $insert_session_id = mysql_query("UPDATE `users` SET `session` = '" . $session_id . "' , `attempt` = 1 WHERE `id` = " . $row['id'] );
                  
                  if (isset($_POST['verify']))
                  {

                      $verify = hash('sha256', salt(cleanQuery($_POST['verify']), 'randomnummersencijfers'));            
                                          
                      $check_query = mysql_query("SELECT * FROM `users` WHERE `id` = " . $id . " AND `verify` = '$verify' ");
                      $numrows_q = mysql_num_rows($check_query);
                      
                      if (isset($numrows_q) and @$numrows_q != 0 and $ip == $ip_check)
                      {

                          $insert_ip = mysql_query("INSERT INTO `userip` (`uid`, `ip`) VALUES (".$id.",'$ip')");                    
                      }

                      
                      else
                      {
                          header("Location: $error");
                          die;
                      }
                  }

                  
                  if ($ip == $ip_check)
                  {

                      $ip_query = mysql_query("SELECT * FROM `userip` WHERE `uid` = " . $row['id'] . " AND `ip` = '$ip' ");
                      @
$ip_row = mysql_fetch_assoc($ip_query);
                      @
$numrowsip = mysql_num_rows($ip_query);
                  
                      if (isset($numrowsip) and @$numrowsip != 0 and $ip_row['logged'] != 1)
                      {

                          //mysql_query("UPDATE `userip` SET `logged` = " . 1 . " WHERE `ip` = '$ip' AND `uid` = " . $id );
                          mysql_query("UPDATE `users` SET `logged` = '$ip', `attempt` = 1 WHERE `id` = " . $id );
                          $_SESSION['ip'] = $ip ;
                          header("Location: $logingoto");
                          die ;
                      }

                      
                      elseif ($ip_row['logged'] == 1)
                      {

                          header ("Location: $error");
                          die ;
                      }

                      
                      else
                      {
                          include('admin/layout/head.php');
                          include('admin/validate.php');
                          die ;
                      }
                  }                
              }

      
              else
                {
                    $max = maximum('attempt', 'users', 'id', $id);
                    @
mysql_query("UPDATE `users` SET `attempt` = " . $max . " WHERE `id` = " . $id );
                    header("Location: $error"); die ;
                }    
          }

      
          else
          {
            $max = maximum('attempt', 'users', 'id', $id) ;
            @
mysql_query("UPDATE `users` SET `attempt` = " . $max . " WHERE `id` = " . $id );
            header("Location: $error"); die ;
          }
      }

      
      else
      {
          $max = maximum('attempt', 'users', 'id', $id);
          @
mysql_query("UPDATE `users` SET `attempt` = " . $max . " WHERE `id` = " . $id );
          header("Location: $error"); die ;
      }    
    }

    
    elseif (isset($_POST['email']))
    {

        $email_ver = mysql_query("UPDATE `users` SET `emailcheck` = 1 WHERE `id` = " . $row['id'] );
        if (isset($email_ver)) { header("location: " . root()."verify"); die; }
        else echo mysql_error();
    }

    else    
    {
        header("Location: $error"); die ;
    }
  }  
}


?>

het formulier:
        <form action="login.php" method="POST">
            <p>Naam:<br /><input type="text" name="username" class="login"></p>
            <p>Wachtwoord:<br /> <input type="password" name="password" class="login" ></p>
            <input type="submit" name="login" class="logbutton" value="Login">
            <input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR'];?>" />
        </form>

- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 06/10/2014 12:15:27 door - Ariën -
 
PHP hulp

PHP hulp

11/04/2021 22:59:11
 
- Ariën -
Beheerder

- Ariën -

02/10/2014 23:14:58
Quote Anchor link
- die() is niet netjes
- Fouten onderdrukken met @ is onnodig
- Gebruik liever de functies van mysqli i.p.v. mysql
- Waarom controleer je boven nog op PHP 4.3.0 of lager? Zo goed als niemand draait deze meer.
 
Phpnuke r

phpnuke r

03/10/2014 00:34:50
Quote Anchor link
Hallo Wouter H,

Goed dat je een code online plaatst om gerated te worden. Onderstaand een aantal tips, hopelijk heb je er wat aan

Om te beginnen zou ik een inlogsysteem maken gebaseerd op cookies. Hiermee heb je iets meer mogelijkheden wat mij betreft. Het is bijvoorbeeld makkelijker om een bepaalde tijd aan te geven hoelang de persoon is ingelogd. Bovendien sla je er erg veel in op. Een id is meer dan voldoende
Quote:
$_SESSION['user'] = NULL;
unset($_SESSION['user']);
$_SESSION['ip'] = NULL;
unset($_SESSION['ip']);
$_SESSION['id'] = NULL;
unset($_SESSION['id']);
$_SESSION['logged'] = NULL;
unset($_SESSION['logged']);


Ten tweede, hoewel ik de code niet helemaal technisch heb gelezen lijkt het mij erg makkelijk om in jouw login systeem te komen. Heb je wel eens gelezen over SQL injection? Dit is een zeer makkelijke methode om op vele sites in te loggen. Er zijn tegenwoordig nog belabberd veel websites waarop het mogelijk is. Probeer er eens wat informatie over te zoeken via google met 'php sql injection'.
'
En ten derde voor nu: Probeer af te komen van die oneindige if constructies. Een if in een if in een if in een if in een if. Reden: je code is nogal lastig om te lezen. ELke keer weer kijken waarvoor die else okal weer is! Probeer alles zo te beperken tot max. 2 if's in een if.

Je hebt bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if (isset($_POST['login'])) { ... ?>

Waarin een hele hoop zooi staat. Hoewel ik betwijfel of je niet gewoon kunt controlleren of username en password er zijn, had je het volgende beter kunnen doen (in geval post['login'] nodig is):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if( ! isset($_POST['login'])){
    Error::render("De variable login is er niet.");  //of maak er een echo van :P
}
//Content wat er in de if stond kan nu er onder worden gezet.
//Dit scheelt toch weer overal een TAB en je hebt direct overzicht.
//Je weet namelijk direct dat deze if GEEN else bevat.
//Bij jouw is dit overal weer een raadsel.
//Je mag overigens best wel een DIE in je code behouden maar je hebt er wel erg veel. Beperk dit tot max 2.

?>


Hopelijk is de uitleg duidelijk, aangezien ik niet al te veel tijd voor heb kunnen nemen.1111111
Gewijzigd op 03/10/2014 00:38:36 door phpnuke r
 
Wouter H

wouter H

03/10/2014 08:50:33
Quote Anchor link
@aar, dankjewel voor de reactie. Ook de code tags zal ik gebruiken.

@phpnuke r, dankjewel. Ik dacht dat door de functie cleanQuery, mysql injectie al werd voorkomen eigenlijk. Verder ga ik er mee aan de slag.
 
Dos Moonen

Dos Moonen

03/10/2014 15:14:19
Quote Anchor link
1) Welke PHP versie draai je?

2) Gebruik ALTIJD prepared statements, dan heb je die baggere (sorry, het is de waarheid) cleanQuery() ook niet meer nodig.
Dit betekend trouwens wel dat je MySQLi/PDO moet gebruiken, niet helemaal waar, maar dit is een goed iets.

3) Gebruik aub de familie van password_* functies. Dus password_hash() voor het hashen van een wachtwoord, password_verify() voor het controleren of een password en hash bij elkaar horen. Het genereert automatisch salts, veel veiliger dan dat jij het doet. De controlle van passwords is beter bestand tegen timing-attacks. Het algemene 'don't roll your own crypto, you are not an expert' verhaal dus...
 
Wouter H

wouter H

06/10/2014 11:18:13
Quote Anchor link
Dankjewel!

En de versie php is: 5.3
Gewijzigd op 06/10/2014 11:23:00 door wouter H
 
- Ariën -
Beheerder

- Ariën -

06/10/2014 12:12:25
Quote Anchor link
Dan is die hele cleanQuery() functie dus niet meer nodig. Verder kan ik zeker aanraden om naar password_hash() en password_verify() te kijken.

Hoewel deze pas vanaf PHP 5.5 werken, is er al wel een compatibiliteitspakket beschikbaar die vanaf 5.3.7 werkt, ervanuitgaande dat je hoger dan deze PHP-versie zit:
https://github.com/ircmaxell/password_compat


- Aar -:
Ik heb de topictitel aangepast van 'login' naar 'Veiligheid loginsysteem'
Gewijzigd op 06/10/2014 12:16:07 door - Ariën -
 



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.