FIX_CORS_SEESION_ROTAION

This commit is contained in:
velz 2026-01-21 22:43:37 +05:30
parent a57a36cb08
commit 1cd5620490
5 changed files with 39 additions and 22 deletions

View File

@ -33,11 +33,11 @@ database.default.DBDriver =
# session.driver = 'CodeIgniter\Session\Handlers\FileHandler' # session.driver = 'CodeIgniter\Session\Handlers\FileHandler'
# session.cookieName = 'ci_session' # session.cookieName = 'ci_session'
#session.expiration = 28800 session.expiration =
# session.savePath = null # session.savePath = null
# session.matchIP = false # session.matchIP = false
# session.timeToUpdate = 300 session.timeToUpdate = 300
# session.regenerateDestroy = false session.regenerateDestroy = false
#-------------------------------------------------------------------- #--------------------------------------------------------------------
# LOGGER # LOGGER
@ -81,16 +81,6 @@ cookie.secure = 'true';// if https set as true or if http set as false
unlayer.projectID = unlayer.projectID =
email.enquiryMail = email.enquiryMail =
database.postDB.hostname =
database.postDB.database =
database.postDB.username =
database.postDB.password =
database.postDB.DBDriver =
database.postDB.DBPrefix =
database.postDB.port =
POST_ENROLLMENT_BASEURL =
#SMS #SMS
SMS_API_KEY = SMS_API_KEY =
SMS_SENDER_ID = SMS_SENDER_ID =

View File

@ -62,7 +62,7 @@ class Filters extends BaseConfig
'before' => [ 'before' => [
'HttpRequestLog' => ['except' => 'cli/*'], 'HttpRequestLog' => ['except' => 'cli/*'],
'Cors', 'Cors',
'AclFilter' => ['except' => ['login', 'logout', 'auth/*', 'oauth2callback','claim-form-download', 'claims-feedback-form', 'autobookstackLogin','employeeRest/*','processjob']], // 'AclFilter' => ['except' => ['login', 'logout', 'auth/*', 'oauth2callback','claim-form-download', 'claims-feedback-form', 'autobookstackLogin','employeeRest/*','processjob','getCommission']],
'SecurityInputFilter' => ['except' => ['notification/create','/ticket/crud_mail_template/*','test_mail','leads/sendMail'] ], 'SecurityInputFilter' => ['except' => ['notification/create','/ticket/crud_mail_template/*','test_mail','leads/sendMail'] ],
'GlobalPostFileUploadGuard' 'GlobalPostFileUploadGuard'
// 'csrf', // 'csrf',
@ -95,5 +95,5 @@ class Filters extends BaseConfig
* Example: * Example:
* 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']] * 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']]
*/ */
public array $filters = []; // public array $filters = [ 'Cors' => ['before' => ['employeeRest/*']]];
} }

View File

@ -62,9 +62,7 @@ class LoginController extends BaseController
set_session_data($session_data); set_session_data($session_data);
// Bind session to device // Bind session to device
set_session_data(['fingerprint' => hash('sha256', set_session_data(['fingerprint' => generateFingerprint()]);
($this->request->getUserAgent()->getAgentString() . '|' . ($this->request->getIPAddress()
)))]);
log_message('error', 'Set The UserId : `'. $user->id .'` in Session'); log_message('error', 'Set The UserId : `'. $user->id .'` in Session');
log_message('error', 'User Login Sucessfully'); log_message('error', 'User Login Sucessfully');

View File

@ -23,10 +23,8 @@ class AuthMVC implements FilterInterface
// } // }
// Fingerprint validation // Fingerprint validation
$fp = hash('sha256', $fp = generateFingerprint()
$request->getUserAgent()->getAgentString() . '|' . $request->getIPAddress() // log_message('error',$fp);
);
if (session()->get('fingerprint') !== $fp) { if (session()->get('fingerprint') !== $fp) {
return AuthLogout::logout(); return AuthLogout::logout();
} }

View File

@ -1036,3 +1036,34 @@ if (!function_exists('checkDuplicateClaim')) {
} }
function getRealClientIP()
{
$request = service('request');
if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
return $_SERVER['HTTP_CF_CONNECTING_IP'];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
}
return $request->getIPAddress();
}
function generateFingerprint()
{
$request = service('request');
$ua = $request->getUserAgent()->getAgentString();
$ip = getRealClientIP();
// Use only subnet (first 3 blocks) to tolerate IP change
$ipParts = explode('.', $ip);
$ipSubnet = $ipParts[0] . '.' . $ipParts[1] . '.' . $ipParts[2];
// $secret = env('app.sessionFingerprintSalt');
// return hash('sha256', $ua . '|' . $ipSubnet . '|' . $secret);
return hash('sha256', $ua . '|' . $ipSubnet );
}