diff --git a/typo3/sysext/beuser/Classes/Controller/PermissionController.php b/typo3/sysext/beuser/Classes/Controller/PermissionController.php
index e467591208b2a6d0f51b40d0e6a56cb506694766..973f80775a5d1e827390363eb28cec6f46816cac 100644
--- a/typo3/sysext/beuser/Classes/Controller/PermissionController.php
+++ b/typo3/sysext/beuser/Classes/Controller/PermissionController.php
@@ -362,7 +362,7 @@ class PermissionController
                 }
                 $dataHandlerInput[$pageUid] = $properties;
                 if (!empty($mirror['pages'][$pageUid])) {
-                    $mirrorPages = GeneralUtility::intExplode(',', $mirror['pages'][$pageUid]);
+                    $mirrorPages = GeneralUtility::intExplode(',', (string)$mirror['pages'][$pageUid]);
                     foreach ($mirrorPages as $mirrorPageUid) {
                         $dataHandlerInput[$mirrorPageUid] = $properties;
                     }
diff --git a/typo3/sysext/felogin/Classes/Controller/AbstractLoginFormController.php b/typo3/sysext/felogin/Classes/Controller/AbstractLoginFormController.php
index e8c748c89991b2d8456a63dc14eea8f8d4de211a..08d57ec16a69f21d0232fccafcda2bf98b3270be 100644
--- a/typo3/sysext/felogin/Classes/Controller/AbstractLoginFormController.php
+++ b/typo3/sysext/felogin/Classes/Controller/AbstractLoginFormController.php
@@ -33,7 +33,7 @@ abstract class AbstractLoginFormController extends ActionController
         if ((bool)($GLOBALS['TYPO3_CONF_VARS']['FE']['checkFeUserPid'] ?? false) === false) {
             return [0];
         }
-        $storagePids = GeneralUtility::intExplode(',', $this->settings['pages'] ?? '', true);
+        $storagePids = GeneralUtility::intExplode(',', (string)($this->settings['pages'] ?? ''), true);
         return GeneralUtility::makeInstance(PageRepository::class)->getPageIdsRecursive($storagePids, (int)($this->settings['recursive'] ?? 0));
     }
 }
diff --git a/typo3/sysext/indexed_search/Classes/Controller/SearchController.php b/typo3/sysext/indexed_search/Classes/Controller/SearchController.php
index fcc445314449972d44e48177d6e8743828ff6730..5c090d03c5bfd702b7490a204c09008824a581e1 100644
--- a/typo3/sysext/indexed_search/Classes/Controller/SearchController.php
+++ b/typo3/sysext/indexed_search/Classes/Controller/SearchController.php
@@ -190,7 +190,7 @@ class SearchController extends ActionController
         }
 
         // Sets availableResultsNumbers - has to be called before request settings are read to avoid DoS attack
-        $this->availableResultsNumbers = array_filter(GeneralUtility::intExplode(',', $this->settings['blind']['numberOfResults']));
+        $this->availableResultsNumbers = array_filter(GeneralUtility::intExplode(',', (string)($this->settings['blind']['numberOfResults'] ?? '')));
 
         // Sets default result number if at least one availableResultsNumbers exists
         if (isset($this->availableResultsNumbers[0])) {
@@ -238,8 +238,9 @@ class SearchController extends ActionController
         // the above will then fetch the menu for the CURRENT site - regardless
         // of this kind of searching here. Thus a general search will lookup in
         // the WHOLE database while a specific section search will take the current sections.
-        if ($this->settings['rootPidList']) {
-            $this->searchRootPageIdList = implode(',', GeneralUtility::intExplode(',', $this->settings['rootPidList']));
+        $rootPidListFromSettings = (string)($this->settings['rootPidList'] ?? '');
+        if ($rootPidListFromSettings) {
+            $this->searchRootPageIdList = implode(',', GeneralUtility::intExplode(',', $rootPidListFromSettings));
         }
         $this->searchRepository = GeneralUtility::makeInstance(IndexSearchRepository::class);
         $this->searchRepository->initialize($this->settings, $searchData, $this->externalParsers, $this->searchRootPageIdList);
@@ -280,7 +281,7 @@ class SearchController extends ActionController
             $this->view->assignMultiple($this->processExtendedSearchParameters());
         }
 
-        $indexCfgs = GeneralUtility::intExplode(',', $freeIndexUid);
+        $indexCfgs = GeneralUtility::intExplode(',', (string)$freeIndexUid);
         $resultsets = [];
         foreach ($indexCfgs as $freeIndexUid) {
             // Get result rows
@@ -1175,8 +1176,9 @@ class SearchController extends ActionController
         $blindSettings = $this->settings['blind'];
         if (!($blindSettings['indexingConfigurations'] ?? false)) {
             // add an additional index configuration
-            if ($this->settings['defaultFreeIndexUidList']) {
-                $uidList = GeneralUtility::intExplode(',', $this->settings['defaultFreeIndexUidList']);
+            $defaultFreeIndexUidList = (string)($this->settings['defaultFreeIndexUidList'] ?? '');
+            if ($defaultFreeIndexUidList) {
+                $uidList = GeneralUtility::intExplode(',', $defaultFreeIndexUidList);
                 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
                     ->getQueryBuilderForTable('index_config');
                 $queryBuilder->setRestrictions(GeneralUtility::makeInstance(FrontendRestrictionContainer::class));
diff --git a/typo3/sysext/info/Classes/Controller/InfoModuleController.php b/typo3/sysext/info/Classes/Controller/InfoModuleController.php
index 888449c988db236ea24d123098b637cfd010667e..688158c4e25e545a8474b35d97fc23501cd2b59c 100644
--- a/typo3/sysext/info/Classes/Controller/InfoModuleController.php
+++ b/typo3/sysext/info/Classes/Controller/InfoModuleController.php
@@ -129,7 +129,7 @@ class InfoModuleController
             if (isset($pagesTSconfig['TCEMAIN.']['preview.']['disableButtonForDokType'])) {
                 $excludeDokTypes = GeneralUtility::intExplode(
                     ',',
-                    $pagesTSconfig['TCEMAIN.']['preview.']['disableButtonForDokType'],
+                    (string)$pagesTSconfig['TCEMAIN.']['preview.']['disableButtonForDokType'],
                     true
                 );
             } else {
diff --git a/typo3/sysext/lowlevel/Classes/Database/QueryGenerator.php b/typo3/sysext/lowlevel/Classes/Database/QueryGenerator.php
index 46bf01eb6636a10849d4bb2a79079f67ead3c210..8599fe117e766ebfd29f5f3348d1de2941279ea3 100644
--- a/typo3/sysext/lowlevel/Classes/Database/QueryGenerator.php
+++ b/typo3/sysext/lowlevel/Classes/Database/QueryGenerator.php
@@ -2481,7 +2481,7 @@ class QueryGenerator
             $inputVal = $conf['inputValue' . $suffix] ?? null;
         } elseif ($comparison === 39 || $comparison === 38) {
             // in list:
-            $inputVal = implode(',', GeneralUtility::intExplode(',', ($conf['inputValue' . $suffix] ?? '')));
+            $inputVal = implode(',', GeneralUtility::intExplode(',', (string)($conf['inputValue' . $suffix] ?? '')));
         } elseif ($comparison === 68 || $comparison === 69 || $comparison === 162 || $comparison === 163) {
             // in list:
             if (is_array($conf['inputValue' . $suffix] ?? false)) {
@@ -2557,7 +2557,7 @@ class QueryGenerator
             if (!$this->extFieldLists['queryLimit']) {
                 $this->extFieldLists['queryLimit'] = 100;
             }
-            $parts = GeneralUtility::intExplode(',', $this->extFieldLists['queryLimit']);
+            $parts = GeneralUtility::intExplode(',', (string)$this->extFieldLists['queryLimit']);
             $limitBegin = 0;
             $limitLength = (int)($this->extFieldLists['queryLimit'] ?? 0);
             if ($parts[1] ?? null) {
@@ -2726,9 +2726,10 @@ class QueryGenerator
                 $queryBuilder->addOrderBy($fieldName, $order);
             }
         }
-        if ($this->extFieldLists['queryLimit']) {
+        $queryLimit = (string)($this->extFieldLists['queryLimit'] ?? '');
+        if ($queryLimit) {
             // Explode queryLimit to fetch the limit and a possible offset
-            $parts = GeneralUtility::intExplode(',', $this->extFieldLists['queryLimit']);
+            $parts = GeneralUtility::intExplode(',', $queryLimit);
             if ($parts[1] ?? null) {
                 // Offset and limit are given
                 $queryBuilder->setFirstResult($parts[0]);
diff --git a/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php b/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php
index d960225ce4bc6f388191b276275af6bd816172d7..2ccb98ae00cc25a2d8b4e83700d207dd146508f2 100644
--- a/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php
+++ b/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php
@@ -146,9 +146,10 @@ class RecordLinkHandler extends AbstractLinkHandler implements LinkHandlerInterf
             $this->getUrlParameters([])
         );
 
+        $pageTreeMountPoints = (string)($this->configuration['pageTreeMountPoints'] ?? '');
         $this->view->assignMultiple([
             'treeEnabled' => (bool)($this->configuration['hidePageTree'] ?? false) === false,
-            'pageTreeMountPoints' => GeneralUtility::intExplode(',', $this->configuration['pageTreeMountPoints'] ?? '', true),
+            'pageTreeMountPoints' => GeneralUtility::intExplode(',', $pageTreeMountPoints, true),
             'recordList' => $recordList,
             'initialNavigationWidth' => $this->getBackendUser()->uc['selector']['navigation']['width'] ?? 250,
             'treeActions' => ['link'],
diff --git a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
index b94d2b0fddf995125b131f574b6db405a2e93677..b4d1806ed34958f2295ebe4440c60aa4e758c864 100644
--- a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
+++ b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
@@ -2254,7 +2254,7 @@ class DatabaseRecordList
             ->expr();
         $permsClause = $expressionBuilder->and($backendUser->getPagePermsClause(Permission::PAGE_SHOW));
         // This will hide records from display - it has nothing to do with user rights!!
-        $pidList = GeneralUtility::intExplode(',', $backendUser->getTSConfig()['options.']['hideRecords.']['pages'] ?? '', true);
+        $pidList = GeneralUtility::intExplode(',', (string)($backendUser->getTSConfig()['options.']['hideRecords.']['pages'] ?? ''), true);
         if (!empty($pidList)) {
             $permsClause = $permsClause->with($expressionBuilder->notIn('pages.uid', $pidList));
         }
@@ -3319,7 +3319,7 @@ class DatabaseRecordList
     protected function getNoViewWithDokTypes(array $tsConfig): array
     {
         if (isset($tsConfig['noViewWithDokTypes'])) {
-            $noViewDokTypes = GeneralUtility::intExplode(',', $tsConfig['noViewWithDokTypes'], true);
+            $noViewDokTypes = GeneralUtility::intExplode(',', (string)$tsConfig['noViewWithDokTypes'], true);
         } else {
             $noViewDokTypes = [
                 PageRepository::DOKTYPE_SPACER,
diff --git a/typo3/sysext/seo/Classes/XmlSitemap/PagesXmlSitemapDataProvider.php b/typo3/sysext/seo/Classes/XmlSitemap/PagesXmlSitemapDataProvider.php
index 3496099d5fe16078a3b3b5e1211a77e374578656..5b991a92c8023f3d66886fc5f01215e3dbd8c075 100644
--- a/typo3/sysext/seo/Classes/XmlSitemap/PagesXmlSitemapDataProvider.php
+++ b/typo3/sysext/seo/Classes/XmlSitemap/PagesXmlSitemapDataProvider.php
@@ -67,7 +67,7 @@ class PagesXmlSitemapDataProvider extends AbstractXmlSitemapDataProvider
             $rootPageId = $site->getRootPageId();
         }
 
-        $excludePagesRecursive = GeneralUtility::intExplode(',', $this->config['excludePagesRecursive'] ?? '', true);
+        $excludePagesRecursive = GeneralUtility::intExplode(',', (string)($this->config['excludePagesRecursive'] ?? ''), true);
 
         $pageRepository = GeneralUtility::makeInstance(PageRepository::class);
         $pageIds = $pageRepository->getDescendantPageIdsRecursive($rootPageId, 99, 0, $excludePagesRecursive);
@@ -85,7 +85,7 @@ class PagesXmlSitemapDataProvider extends AbstractXmlSitemapDataProvider
         }
 
         if (!empty($this->config['excludedDoktypes'])) {
-            $excludedDoktypes = GeneralUtility::intExplode(',', $this->config['excludedDoktypes']);
+            $excludedDoktypes = GeneralUtility::intExplode(',', (string)$this->config['excludedDoktypes']);
             if (!empty($excludedDoktypes)) {
                 $constraints[] = $queryBuilder->expr()->notIn('doktype', implode(',', $excludedDoktypes));
             }
diff --git a/typo3/sysext/seo/Classes/XmlSitemap/RecordsXmlSitemapDataProvider.php b/typo3/sysext/seo/Classes/XmlSitemap/RecordsXmlSitemapDataProvider.php
index 4d14e5ef3298b84b2c92c02dbf46a4a9d416bdc6..c183f36f991ef64f2c5c82d73f53b545b2f4ba84 100644
--- a/typo3/sysext/seo/Classes/XmlSitemap/RecordsXmlSitemapDataProvider.php
+++ b/typo3/sysext/seo/Classes/XmlSitemap/RecordsXmlSitemapDataProvider.php
@@ -54,7 +54,7 @@ class RecordsXmlSitemapDataProvider extends AbstractXmlSitemapDataProvider
             );
         }
 
-        $pids = !empty($this->config['pid']) ? GeneralUtility::intExplode(',', $this->config['pid']) : [];
+        $pids = !empty($this->config['pid']) ? GeneralUtility::intExplode(',', (string)$this->config['pid']) : [];
         $lastModifiedField = $this->config['lastModifiedField'] ?? 'tstamp';
         $sortField = $this->config['sortField'] ?? 'sorting';