Fout gedrag custom session object

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.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. 50% van jullie werkzaamheden is maatwerk en de overige 50% is

Bekijk vacature »

Front end developer binnen het onderwijs

Functie Het doel van dit team is om te zorgen dat de studenten altijd op de hoogte zijn van relevante informatie en de mogelijkheid hebben om online vragen te stellen. Hiervoor hebben ze een portal ontwikkeld. De app is echt een greenfield project met een eigen inrichting middels cloud. De ontwikkeling wordt gedaan door gebruik te maken van oa. Javascript, React, CSS, Next.js, GraphQL in een Azure Cloud omgeving. Daarnaast gebruiken ze tooling als Figma, storybook, Jest en Github. De complexiteit in deze rol zit hem in het feit dat data uit verschillende bronsystemen komt waarbij er zowel gekoppeld wordt

Bekijk vacature »

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

.NET software developer

Functie omschrijving Voor een gewilde werkgever in omgeving Roosendaal zijn wij op zoek naar een back-end software developer met een aantal jaar werkervaring. Je krijgt een plekje in het workflow team en je zal betrokken worden bij het bouwen van nieuwe software, en het optimaliseren van bestaande code. Je werkt bij dit bedrijf in een Scrum team waarin je soms klantcontact hebt. Jouw werkzaamheden zullen er als volgt uit zien: Je krijgt een plekje op de in-house IT afdeling. Deze afdeling bestaat uit zo'n 12 collega's, verdeeld over verschillende specialisaties (BI, Beheer, Business software & workflow). De vacature staat open

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 »

Back-end Software Developer

Functie omschrijving Ben jij op zoek naar een uitdagende development functie bij een klein gespecialiseerd softwarebedrijf? Wil jij graag hybride werken (combi tussen thuis + kantoor), loop jij warm voor maatwerk software en voel jij je prettig in een informele cultuur? Zoek dan niet verder! Reageer direct! Voor een gewilde werkgever in omgeving Tilburg zoeken wij een back-end software developer met een aantal jaar werkervaring. Je gaat werken voor een klein softwarebedrijf dat gespecialiseerd is in de ontwikkeling van integratiesoftware. Jouw werkzaamheden zien er als volgt uit: In een klein team met 4 ontwikkelaars houd jij je bezig met afwisselende

Bekijk vacature »

Als Front-end developer bijdragen aan het onderwij

Functie Als front-end developer om je terecht in een team van goede en ervaren developers, en ga je werken aan de software die door miljoenen mensen gebruikt wordt. Je bent in staat om designs effectief te vertalen naar werkende feautures en hebt oog voor een goede UX van het product. Je staat voor clean code en goede documentatie. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit software en code. Je dagelijkse werk bestaat uit het werken aan componenten in de Storybook. Het verbeteren en refactoren van de huidige

Bekijk vacature »

Back end developer Digital Agency

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving Startende Software Ontwikkelaar gezocht met kennis van C# .NET! Ben jij net klaar met je opleiding en ben je op zoek naar je eerste echte werkervaring? Of heb jij al enige werkervaring maar ben toe aan iets nieuws? Dan is dit de perfecte kans voor jou! Wij zoeken namelijk een Junior Software Ontwikkelaar die klaar is voor een nieuwe uitdaging bij een leuke werkgeven in de regio Zeist. In deze functie werk jij vaak aan verschillende projecten en ga je bij klanten op bezoek. Ben jij op zoek naar een functie met uitdaging, diversiteit en verantwoordelijkheid? Dan is

Bekijk vacature »

PHP Developer

Dit ga je doen Je werkt nauw samen met het websitebureau aan de ontwikkeling en optimalisering van het internationale platform; Je ziet nieuwe webshops op en voert optimalisaties door; Je bouwt aan technische, functioneel en commercial resultaat; Je vindt het leuk om zelfstandig binnen een internationale organisatie te werken, maar krijgt ook energie om samen met collega's te werken. Hier ga je werken Voor een bedrijf in de regio Rotterdam zijn wij opzoek naar een PHP Developer. Je wordt onderdeel van het communicatieteam en gaat je bezighouden met het optimaliseren van de website van dit internationale bedrijf. Je schakelt veel

Bekijk vacature »

Front end developer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers met passie voor hun vak. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van ontwerp en ontwikkeling zullen samenkomen in een proof of concept. Nadat is vastgesteld dat de oplossing voldoet aan de belangrijkste behoeftes worden producten of services gevalideerd door middel van korte iteraties. Hiermee zorgen ze ervoor dat het werk voldoet aan de technische vereisten en gebruikersbehoefte. Door het inzetten van de nieuwste technologieën die toekomstbestendig zijn weten ze klanten omver te blazen. Ook geven en organiseren ze veel

Bekijk vacature »

Junior/medior PHP developer Onderwijssector

Functie Momenteel zijn ze op zoek naar een developer die, veelal fullstack, mee gaat werken aan de ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js

Bekijk vacature »

Medior PHP developer

Functie Samen met je development team werk je Agile Scrum en met jullie gezamenlijke kennis en ervaring bepalen jullie samen de beste keuze voor techniek en architectuur. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en denkniveau • Je hebt goede kennis en ervaring met PHP • Je bent niet bang voor complexe projecten • Je werkt graag zelfstandig aan applicaties • Je bent altijd nieuwsgierig naar nieuwe

Bekijk vacature »

C# .NET Developer

Functieomschrijving Voor dit leuke softwarre bedrijf in de omgeving Vught zijn we per direct op zoek naar een C#/.NET Developer. Is development jouw passie en doe je dit graag met C#/.NET? Lees dan snel verder! Jou werkzaamheden zullen zijn: Zorgen voor de optimalisatie van de huidige software en het automatiseren van bedrijfsprocessen. Naar aanleiding van de wensen van de klant ga je, met je collega's op zoel naar passende oplossingen en je werkt dit uit tot een mooi eindproduct. Je gaat webshops, websites en webapplicaties ontwikkelen door middel van ASP.NET, C# en MVC Framework. Bedrijfsprofiel Deze opdrachtgever houdt zich bezig

Bekijk vacature »

OutSystems developer

Dit ga je doen Klanten adviseren over de mogelijkheden van OutSystems; OutSystems oplossingen ontwikkelen en implementeren; Stakeholdermanagement; Kennis en expertise up to date houden en delen met het team. Hier ga je werken Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren.

Bekijk vacature »
Bart Michiels

Bart Michiels

28/05/2016 21:59:24
Quote Anchor link
Hallo,

Ik maak gebruik van een custom session object om sessie te implementeren. De code is gebaseerd op How to Create a Secure Session Management System in PHP and MySQL

De code werk zonder problemen in php v 5.x, in php v7 is er een probleem met het vernieuwen van de id van de sessie ( session_regenerate_id(true); )

De standaard workarounds (zoals dat door gewijzigd gedrag geen waarde een lege string moeten doorgegeven worden door een strengere typecasting van v7 zijn uiteraard reeds toegepast)

Iemand enig idee wat er mis is ?

De klasse is de volgende:

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
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<?php

class session {

    function
__construct() {
       // set our custom session functions.
       session_set_save_handler(array($this, 'open'), array($this, 'close'), array($this, 'read'), array($this, 'write'), array($this, 'destroy'), array($this, 'gc'));
    
       // This line prevents unexpected effects when using objects as save handlers.
       register_shutdown_function('session_write_close');
    }  
  
   function
start_session($session_name, $secure) {
       // Make sure the session cookie is not accessable via javascript.
       $httponly = true;
    
       // Hash algorithm to use for the sessionid. (use hash_algos() to get a list of available hashes.)
       $session_hash = 'sha512';
    
       // Check if hash is available
       if (in_array($session_hash, hash_algos())) {
          // Set the has function.
          ini_set('session.hash_function', $session_hash);
       }

       // How many bits per character of the hash.
       // The possible values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", ",").

       ini_set('session.hash_bits_per_character', 5);
    
       // Force the session to only use cookies, not URL variables.
       ini_set('session.use_only_cookies', 1);            

       // Get session cookie parameters
       $cookieParams = session_get_cookie_params();
       // Set the parameters
       session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
       // Change the session name
       session_name($session_name);
       // Now we cat start the session
      
      
            
       try
       {             
       // This line regenerates the session and delete the old one.
       // It also generates a new encryption key in the database.

        
                    
        session_start();
              
        session_regenerate_id(true);
        
       /* $new_session_id = session_id();
        echo "old_session_id:{$old_session_id} " .  "<br>\r\n";
        echo "new_session_id:{$new_session_id}<br>\r\n";
        echo "<br>\r\n";
       */

       }
       catch(Throwable $t)
       {

            echo $t->getMessage();
            exit;
       }
 
    }
    
    function
open() {
       $host = '***';
       $user = '***';
       $pass = '***';
       $name = '***';
       $mysqli = new mysqli($host, $user, $pass, $name);
       $this->db = $mysqli;
       return true;
    }
    
    function
close() {
           $this->db->close();
           return true;
    }
    
    function
read($id) {
       if(!isset($this->read_stmt)) {
          $this->read_stmt = $this->db->prepare("SELECT data FROM tblSessies WHERE id = ? LIMIT 1");
       }

       $this->read_stmt->bind_param('s', $id);
       $this->read_stmt->execute();
       $this->read_stmt->store_result();
       $this->read_stmt->bind_result($data);
       $this->read_stmt->fetch();
       $key = $this->getkey($id);
       $data = $this->decrypt($data, $key);
       if($data == null) return "";        
         return (string) $data;      
    }
    
    function
write($id, $data) {
       // Get unique key
       $key = $this->getkey($id);
       // Encrypt the data
       $data = $this->encrypt($data, $key);
    
       $time = time();
       if(!isset($this->w_stmt)) {
          $this->w_stmt = $this->db->prepare("REPLACE INTO tblSessies (id, set_time, data, session_key) VALUES (?, ?, ?, ?)");
       }

    
       $this->w_stmt->bind_param('siss', $id, $time, $data, $key);
       $this->w_stmt->execute();
       return true;
    }

    function
destroy($id) {
       if(!isset($this->delete_stmt)) {
          $this->delete_stmt = $this->db->prepare("DELETE FROM tblSessies WHERE id = ?");
       }

       $this->delete_stmt->bind_param('s', $id);
       $this->delete_stmt->execute();
       return true;
    }

    function
gc($max) {
       if(!isset($this->gc_stmt)) {
          $this->gc_stmt = $this->db->prepare("DELETE FROM tblSessies WHERE set_time < ?");
       }

       $old = time() - $max;
       $this->gc_stmt->bind_param('s', $old);
       $this->gc_stmt->execute();
       return true;
    }

    
    private function getkey($id) {
       if(!isset($this->key_stmt)) {
          $this->key_stmt = $this->db->prepare("SELECT session_key FROM tblSessies WHERE id = ? LIMIT 1");
       }

       $this->key_stmt->bind_param('s', $id);
       $this->key_stmt->execute();
       $this->key_stmt->store_result();
       if($this->key_stmt->num_rows == 1) {
          $this->key_stmt->bind_result($key);
          $this->key_stmt->fetch();
          return (string) $key;
       }
else {
          $random_key = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));
          return (string) $random_key;
       }
      
    }


    private function encrypt($data, $key) {
       $salt = '*** some salt ***';
       $key = substr(hash('sha256', $salt.$key.$salt), 0, 32);
       $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
       $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
       $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB, $iv));
       return (string)$encrypted;
    }

    
    private function decrypt($data, $key) {
       $salt = '*** some salt ***';
       $key = substr(hash('sha256', $salt.$key.$salt), 0, 32);
       $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
       $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
       $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($data), MCRYPT_MODE_ECB, $iv);
       return (string)$decrypted;
    }

    function
login($email, $password) {        
        if ($stmt = $this->db->prepare("SELECT id, username, password, salt FROM tblGebruikers WHERE email = ? LIMIT 1"))
        {

            $stmt->bind_param('s', $email);  // Bind "$email" to parameter.
            $stmt->execute();    // Execute the prepared query.
            $stmt->store_result();
            // get variables from result.
            $stmt->bind_result($user_id, $username, $db_password, $salt);
            $stmt->fetch();
            // hash the password with the unique salt.
            $password = hash('sha512', $password . $salt);
            //echo "$password\n<br>";            
            if ($stmt->num_rows == 1)
            {

                // If the user exists we check if the account is locked
                // from too many login attempts

                if ($this->checkbrute($user_id) == true)                                 
                {

                    // Account is locked
                    // Send an email to user saying their account is locked                    

                    return false;
                }
else
                {
                    // Check if the password in the database matches
                    // the password the user submitted.

                    if ($db_password == $password) {
                        // Password is correct!
                        // Get the user-agent string of the user.

                        $user_browser = $_SERVER['HTTP_USER_AGENT'];
                        // XSS protection as we might print this value
                        $user_id = preg_replace("/[^0-9]+/", "", $user_id);
                        $_SESSION['userid'] = $user_id;
                        // XSS protection as we might print this value
                        $username = preg_replace("/[^a-zA-Z0-9_\-]+/",
                                                                    "",
                                                                    $username);
                        $_SESSION['username'] = $username;
                        $_SESSION['login_string'] = hash('sha512',
                                  $password . $user_browser);
                        // Login successful.
                        return true;
                    }
else {
                        // Password is not correct
                        // We record this attempt in the database

                        $now = time();
                        $this->db->query("INSERT INTO tblAanmeldingen(`user_id`, `tijdstip`) VALUES ('$user_id', '$now')");
                        return false;
                    }
                }
            }

            else
            {
                // No user exists.
                return false;
            }
        }

        return false;
    }

    
     

    private function checkbrute($user_id)
    {
    
        // Get timestamp of current time
        $now = time();
        // All login attempts are counted from the past 2 hours.
        $valid_attempts = $now - (2 * 60 * 60);
        if ($stmt = $this->db->prepare("SELECT tijdstip
                                             FROM tblAanmeldingen
                                             WHERE user_id = ? AND tijdstip > '$valid_attempts'"
)) {
            $stmt->bind_param('i', $user_id);
            // Execute the prepared query.
            $stmt->execute();
            $stmt->store_result();
            // If there have been more than 5 failed logins
            if ($stmt->num_rows > 5) {
                return true;
            }
else {
                return false;
            }
        }

        return true;        
    }        
    
    function
userLoggedIn()
    {
    
        // Check if all session variables are set
        if (isset($_SESSION['userid'], $_SESSION['username'], $_SESSION['login_string']))
        {

            $user_id = $_SESSION['userid'];
            $login_string = $_SESSION['login_string'];
            $username = $_SESSION['username'];
 
            // Get the user-agent string of the user.
            $user_browser = $_SERVER['HTTP_USER_AGENT'];
 
            if ($stmt = $this->db->prepare("SELECT password FROM tblGebruikers WHERE id = ? LIMIT 1"))
            {

                // Bind "$user_id" to parameter.
                $stmt->bind_param('i', $user_id);
                $stmt->execute();   // Execute the prepared query.
                $stmt->store_result();
    
                if ($stmt->num_rows == 1)
                {

                    // If the user exists get variables from result.
                    $stmt->bind_result($password);
                    $stmt->fetch();
                    $login_check = hash('sha512', $password . $user_browser);
    
                    if ($login_check == $login_string) {
                        // Logged In!!!!
                        return true;
                    }

                    else
                    {
                        // Not logged in
                        return false;
                    }
                }

                else
                {
                    // Not logged in
                    return false;
                }
            }

            else
            {
                // Not logged in
                return false;
            }
        }

        else
        {
            // Not logged in
            return false;
        }
        
        return false;
    }

    
}


?>
Gewijzigd op 28/05/2016 22:01:57 door Bart Michiels
 
PHP hulp

PHP hulp

26/04/2024 20:38:16
 
Ozzie PHP

Ozzie PHP

28/05/2016 22:05:54
Quote Anchor link
>> in php v7 is er een probleem met het vernieuwen van de id van de sessie

Wel handig als je dan vertelt wat dat probleem is. Welke foutmelding krijg je?
 
Bart Michiels

Bart Michiels

28/05/2016 22:07:49
Quote Anchor link
Er is helemaal geen foutmelding. Het php process wordt gestopt (zie ik in de application log van de webomgeving). Ik heb met trial and error de lijn weten te isoleren. De klasse werkt perfect in php v 5.X. De omgeving is php 7.0.6

Quote:
Error receiving response header (lsphp is killed?): ReceiveResponseHeader: receive pkg hdr failed: ReceivePkgHdr: nothing to read from backend socket
Gewijzigd op 28/05/2016 22:10:34 door Bart Michiels
 
Ozzie PHP

Ozzie PHP

28/05/2016 22:12:19
Quote Anchor link
>> Ik heb met trial and error de lijn weten te isoleren.

En welke is dat dan? Want je hebt zojuist veel te veel code gepost om even door te spitten. Handiger dus als je alleen de regel geeft waarop het fout gaat.
 
Bart Michiels

Bart Michiels

28/05/2016 22:13:28
Quote Anchor link
regel 50
 
Ozzie PHP

Ozzie PHP

28/05/2016 22:56:22
Quote Anchor link
Gebruik je Joomla?
 
Bart Michiels

Bart Michiels

28/05/2016 23:04:26
Quote Anchor link
Neen, de rest van de website is volledig gebouwd met eigen code
 
Ozzie PHP

Ozzie PHP

28/05/2016 23:09:02
Quote Anchor link
Je hebt verder niets in de code gewijzigd? Niet per ongeluk al output verstuurd voordat session_regenerate_id plaatsvindt? Anders zou ik het zo gauw ook niet weten. Een duidelijkere errormelding zou wellicht wat meer info kunnen geven ...
 
Ben van Velzen

Ben van Velzen

28/05/2016 23:12:55
Quote Anchor link
Klinkt als een segfault, van je coredumps? Dan kun je er misschien wat zinnigs van maken.
 
Bart Michiels

Bart Michiels

28/05/2016 23:17:04
Quote Anchor link
Neen, ik ben zeker dat er ook niets naar de uitvoer gestuurd wordt want als ik een exit commando stuur net voor het verversen van de id, merk ik dat de paginauitvoer blanco is. Ik heb ook al met obstart de buffereing opgezet en geflushed ervoor, helpt allemaal niks.

Ik heb er al behoorlijk wat tijd ingestopt, en al wat wijzigingen aangebracht aan de standaa rdcode ( niveau return values voor typecasting die strenger is vanaf v7 ), op niveau van instellingen van php,... Maar het is blijkbaar een tandenbijter.

Als ik de sessie id verversing track onder een lagere versie werkt alles perfect, maar vanuit het security standpunt dat de sessieid dient te vernieuwen waanneer de rechten worden aangepast ( aanmelden / afmelden ) wens ik dit uiteraard te doen.

Inderdaad jammer dat ik geen foutmelding heb, enkel een error 500 van de apache webserver na de crash van het proces...


Toevoeging op 28/05/2016 23:20:36:

Het script draait bij een webhoster, ik denk dus niet dat ik dumps kan maken ? Ik kan het maandag wel even navragen
 
Ben van Velzen

Ben van Velzen

29/05/2016 00:17:19
Quote Anchor link
Waarom regenereer je het session id tijdens de start? Dit voelt als een actie die mogelijk recursief kan gaan lopen en tot een crash leidt. Probeer de regel eens weg te halen, hij is hoe dan ook niet nodig.
 
Bart Michiels

Bart Michiels

29/05/2016 10:46:41
Quote Anchor link
Of ik het id hergenereer tijdens de start in het object of direct na de login code, maakt op zich geen verschil in beide gevallen is er een crash).

De regel is wel nodig vanuit security standpunt. Zowel het publieke als het private gedeelte van de website werken met sessies. Het is een algemeen gebruik dat wanneer er wijzigingen zijn aan de permissies, hiervoor een nieuwe sessie opzet (session hijacking, session fixation,...)
 
Ben van Velzen

Ben van Velzen

29/05/2016 11:25:06
Quote Anchor link
Ja, maar dan doe je dat niet gedurende de start van je sessie, maar moet dit een afzonderlijke actie zijn, en alleen wanneer dit echt nodig is. Maar goed, het is afwachten wat je hoster ervan zegt, als ze er al wat van zeggen.
 



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.