@@ -117,6 +117,23 @@ public function get_user_ip() {
117117 }
118118}
119119
120+ function verify_token ($ database , $ user , $ ip , $ time , $ token ) {
121+ if (!password_verify ($ database . $ user . $ ip . $ time . PHPMYADMIN_KEY , $ token )) {
122+ if (
123+ !password_verify (
124+ $ database . $ user . $ _SERVER ["SERVER_ADDR " ] . "| " . $ ip . $ time . PHPMYADMIN_KEY ,
125+ $ token ,
126+ )
127+ ) {
128+ trigger_error (
129+ "Access denied: There is a security token mismatch " . $ time ,
130+ E_USER_WARNING ,
131+ );
132+ session_invalid ();
133+ }
134+ }
135+ return ;
136+ }
120137/* Need to have cookie visible from parent directory */
121138session_set_cookie_params (0 , "/ " , "" , true , true );
122139/* Create signon session */
@@ -159,32 +176,25 @@ function session_invalid() {
159176 if ($ time + 60 > time ()) {
160177 //note: Possible issues with cloudflare due to ip obfuscation
161178 $ ip = $ api ->get_user_ip ();
162- if (!password_verify ($ database . $ user . $ ip . $ time . PHPMYADMIN_KEY , $ token )) {
163- trigger_error (
164- "Access denied: There is a security token mismatch " . $ time ,
165- E_USER_WARNING ,
166- );
167- session_invalid ();
168- } else {
169- $ id = session_id ();
170- //create a new temp user
171- $ data = $ api ->create_temp_user ($ database , $ user , $ host );
172- if ($ data ) {
173- $ _SESSION ["PMA_single_signon_user " ] = $ data ->login ->user ;
174- $ _SESSION ["PMA_single_signon_password " ] = $ data ->login ->password ;
175- $ _SESSION ["PMA_single_signon_host " ] = $ host ;
176- //save database / username to be used for sending logout notification.
177- $ _SESSION ["HESTIA_sso_user " ] = $ user ;
178- $ _SESSION ["HESTIA_sso_database " ] = $ database ;
179- $ _SESSION ["HESTIA_sso_host " ] = $ host ;
179+ verify_token ($ database , $ user , $ ip , $ time , $ token );
180+ $ id = session_id ();
181+ //create a new temp user
182+ $ data = $ api ->create_temp_user ($ database , $ user , $ host );
183+ if ($ data ) {
184+ $ _SESSION ["PMA_single_signon_user " ] = $ data ->login ->user ;
185+ $ _SESSION ["PMA_single_signon_password " ] = $ data ->login ->password ;
186+ $ _SESSION ["PMA_single_signon_host " ] = $ host ;
187+ //save database / username to be used for sending logout notification.
188+ $ _SESSION ["HESTIA_sso_user " ] = $ user ;
189+ $ _SESSION ["HESTIA_sso_database " ] = $ database ;
190+ $ _SESSION ["HESTIA_sso_host " ] = $ host ;
180191
181- @session_write_close ();
182- setcookie ($ session_name , $ id , 0 , "/ " );
183- header ("Location: " . dirname ($ _SERVER ["PHP_SELF " ]) . "/index.php " );
184- die ();
185- } else {
186- session_invalid ();
187- }
192+ @session_write_close ();
193+ setcookie ($ session_name , $ id , 0 , "/ " );
194+ header ("Location: " . dirname ($ _SERVER ["PHP_SELF " ]) . "/index.php " );
195+ die ();
196+ } else {
197+ session_invalid ();
188198 }
189199 } else {
190200 trigger_error (
0 commit comments