Jump to content

Edit History

los

los

Bonjour,

Merci à tous et particulièrement @Eolia et @Mediacom87 pour votre aide.

Je ne suis malheureusement pas expert en sécurité et j'aimerais avoir votre avis. En suivant vos conseils, je suis tombé sur ce fichier  :

if (!defined('_PS_VERSION_'))
    exit;
function upgrade_module_1_1_6($object)
{
    $object->regexTemplates();

    Configuration::deleteByName('PA_CAPTCHA_TMP_CONTACT');
    Configuration::deleteByName('PA_CAPTCHA_TMP_LOGIN');
    Configuration::deleteByName('PA_CAPTCHA_TMP_RE_PASSWORD');

    uninstallModuleInGDPR($object);

    if ($object->getOverrides() != null) {
        $dir = realpath(dirname(__FILE__) . '/../') . '/override/controllers/front/';
        $classes = array(
            'Auth',
            'Contact',
            'Password'
        );
        foreach ($classes as $class){
            beforeUninstallOverride($dir, $class);
        }
        $object->uninstallOverrides();
        try {
            foreach ($classes as $class) {
                beforeInstallOverride($dir, $class);
            }
            $object->installOverrides();
        } catch (Exception $e) {
            $object->_errors[] = $e->getMessage();
        }
    }

    return count($object->_errors) > 0 ? false : true;
}

function uninstallModuleInGDPR($object)
{
    if (Module::isInstalled('psgdpr') && $object->id) {
        if ($gdpr = Db::getInstance()->getRow('
            SELECT id_module, id_gdpr_consent 
            FROM `' . _DB_PREFIX_ . 'psgdpr_consent` 
            WHERE id_module = ' . (int)$object->id
        )) {
            Db::getInstance()->execute("DELETE FROM `" . _DB_PREFIX_ . "psgdpr_consent` WHERE id_module = " . (int)$gdpr['id_module']);
            Db::getInstance()->execute("DELETE FROM `" . _DB_PREFIX_ . "psgdpr_consent_lang` WHERE id_gdpr_consent = " . (int)$gdpr['id_gdpr_consent']);
        }
    }
}

function beforeUninstallOverride($dir, $class)
{
    $rebuild_class_content = preg_replace(
        '#(class\s+' . $class . 'Controller\s+extends\s+' . $class . 'ControllerCore\s+\{)#ms'
        , '$1/*-----start-----*/public function initContent(){parent::initContent();}/*-----end-----*/'
        , Tools::file_get_contents($dir . $class . 'Controller.php')
    );
    @file_put_contents($dir . $class . 'Controller.php', $rebuild_class_content);
}

function beforeInstallOverride($dir, $class)
{
    $rebuild_class_content = preg_replace(
        '#\/\*[-]{5}start[-]{5}\*\/(.*?)\/*[-]{5}end[-]{5}\*\/#ms'
        , ''
        , Tools::file_get_contents($dir . $class . 'Controller.php')
    );
    @file_put_contents($dir . $class . 'Controller.php', $rebuild_class_content);
}

Et ce que de simple fonctions comme celles-ci non encapsulé dans une classe PHP représentent un risque ? 

La réponse est surement évidente, je m'en excuse si c'est le cas.

Merci d'avance,

Los

los

los

Bonjour,

Merci à tous et particulièrement @Eolia et @Mediacom87 pour votre aide.

Je ne suis malheureusement pas expert en sécurité et j'aimerais avoir votre avis. En suivant vos conseils, je suis tombé sur ce fichier  :

if (!defined('_PS_VERSION_'))
    exit;
function upgrade_module_1_1_6($object)
{
    $object->regexTemplates();

    Configuration::deleteByName('PA_CAPTCHA_TMP_CONTACT');
    Configuration::deleteByName('PA_CAPTCHA_TMP_LOGIN');
    Configuration::deleteByName('PA_CAPTCHA_TMP_RE_PASSWORD');

    uninstallModuleInGDPR($object);

    if ($object->getOverrides() != null) {
        $dir = realpath(dirname(__FILE__) . '/../') . '/override/controllers/front/';
        $classes = array(
            'Auth',
            'Contact',
            'Password'
        );
        foreach ($classes as $class){
            beforeUninstallOverride($dir, $class);
        }
        $object->uninstallOverrides();
        try {
            foreach ($classes as $class) {
                beforeInstallOverride($dir, $class);
            }
            $object->installOverrides();
        } catch (Exception $e) {
            $object->_errors[] = $e->getMessage();
        }
    }

    return count($object->_errors) > 0 ? false : true;
}

function uninstallModuleInGDPR($object)
{
    if (Module::isInstalled('psgdpr') && $object->id) {
        if ($gdpr = Db::getInstance()->getRow('
            SELECT id_module, id_gdpr_consent 
            FROM `' . _DB_PREFIX_ . 'psgdpr_consent` 
            WHERE id_module = ' . (int)$object->id
        )) {
            Db::getInstance()->execute("DELETE FROM `" . _DB_PREFIX_ . "psgdpr_consent` WHERE id_module = " . (int)$gdpr['id_module']);
            Db::getInstance()->execute("DELETE FROM `" . _DB_PREFIX_ . "psgdpr_consent_lang` WHERE id_gdpr_consent = " . (int)$gdpr['id_gdpr_consent']);
        }
    }
}

function beforeUninstallOverride($dir, $class)
{
    $rebuild_class_content = preg_replace(
        '#(class\s+' . $class . 'Controller\s+extends\s+' . $class . 'ControllerCore\s+\{)#ms'
        , '$1/*-----start-----*/public function initContent(){parent::initContent();}/*-----end-----*/'
        , Tools::file_get_contents($dir . $class . 'Controller.php')
    );
    @file_put_contents($dir . $class . 'Controller.php', $rebuild_class_content);
}

function beforeInstallOverride($dir, $class)
{
    $rebuild_class_content = preg_replace(
        '#\/\*[-]{5}start[-]{5}\*\/(.*?)\/*[-]{5}end[-]{5}\*\/#ms'
        , ''
        , Tools::file_get_contents($dir . $class . 'Controller.php')
    );
    @file_put_contents($dir . $class . 'Controller.php', $rebuild_class_content);
}

Et ce que de simple fonctions comme celles-ci non encapsulé dans une classe PHP représentent un risque ? 

La réponse est surement évidente.

Merci d'avance,

Los

los

los

Bonjour,

Merci à tous et particulièrement @Eolia et @Mediacom87 pour votre aide.

Je ne suis malheureusement pas expert en sécurité et j'aimerais avoir votre avis. En suivant vos conseils, je suis tombé sur ce fichier  :

if (!defined('_PS_VERSION_'))
    exit;
function upgrade_module_1_1_6($object)
{
    $object->regexTemplates();

    Configuration::deleteByName('PA_CAPTCHA_TMP_CONTACT');
    Configuration::deleteByName('PA_CAPTCHA_TMP_LOGIN');
    Configuration::deleteByName('PA_CAPTCHA_TMP_RE_PASSWORD');

    uninstallModuleInGDPR($object);

    if ($object->getOverrides() != null) {
        $dir = realpath(dirname(__FILE__) . '/../') . '/override/controllers/front/';
        $classes = array(
            'Auth',
            'Contact',
            'Password'
        );
        foreach ($classes as $class){
            beforeUninstallOverride($dir, $class);
        }
        $object->uninstallOverrides();
        try {
            foreach ($classes as $class) {
                beforeInstallOverride($dir, $class);
            }
            $object->installOverrides();
        } catch (Exception $e) {
            $object->_errors[] = $e->getMessage();
        }
    }

    return count($object->_errors) > 0 ? false : true;
}

function uninstallModuleInGDPR($object)
{
    if (Module::isInstalled('psgdpr') && $object->id) {
        if ($gdpr = Db::getInstance()->getRow('
            SELECT id_module, id_gdpr_consent 
            FROM `' . _DB_PREFIX_ . 'psgdpr_consent` 
            WHERE id_module = ' . (int)$object->id
        )) {
            Db::getInstance()->execute("DELETE FROM `" . _DB_PREFIX_ . "psgdpr_consent` WHERE id_module = " . (int)$gdpr['id_module']);
            Db::getInstance()->execute("DELETE FROM `" . _DB_PREFIX_ . "psgdpr_consent_lang` WHERE id_gdpr_consent = " . (int)$gdpr['id_gdpr_consent']);
        }
    }
}

function beforeUninstallOverride($dir, $class)
{
    $rebuild_class_content = preg_replace(
        '#(class\s+' . $class . 'Controller\s+extends\s+' . $class . 'ControllerCore\s+\{)#ms'
        , '$1/*-----start-----*/public function initContent(){parent::initContent();}/*-----end-----*/'
        , Tools::file_get_contents($dir . $class . 'Controller.php')
    );
    @file_put_contents($dir . $class . 'Controller.php', $rebuild_class_content);
}

function beforeInstallOverride($dir, $class)
{
    $rebuild_class_content = preg_replace(
        '#\/\*[-]{5}start[-]{5}\*\/(.*?)\/*[-]{5}end[-]{5}\*\/#ms'
        , ''
        , Tools::file_get_contents($dir . $class . 'Controller.php')
    );
    @file_put_contents($dir . $class . 'Controller.php', $rebuild_class_content);
}

Et ce que de simple fonctions comme celles-ci non encapsulé dans une classe PHP représente un risque ? 

La réponse est surement évidente.

Merci d'avance,

Los

×
×
  • Create New...