Dotclear

Changeset 3432:4e82fa3c576d


Ignore:
Timestamp:
12/02/16 11:54:52 (9 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
default
Message:

Ugly hack for SQLite CB driver for value beginning or ending by a single quote

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • admin/install/index.php

    r3421 r3432  
    171171 
    172172          # CSP directive (admin part) 
     173 
     174          // SQlite Clearbricks driver does not allow using single quote at beginning or end of a field value 
     175          // so we have to use neutral values (localhost and 127.0.0.1) for some CSP directives 
     176          $csp_prefix = $core->con->driver() == 'sqlite' ? 'localhost ' : '';   // Hack for SQlite Clearbricks driver 
     177          $csp_suffix = $core->con->driver() == 'sqlite' ? ' 127.0.0.1' : '';   // Hack for SQlite Clearbricks driver 
     178 
    173179          $blog_settings->system->put('csp_admin_on',true,'boolean','Send CSP header (admin)',true,true); 
    174180          $blog_settings->system->put('csp_admin_report_only',false,'boolean','CSP Report only violations (admin)',true,true); 
    175           $blog_settings->system->put('csp_admin_default',"'self'",'string','CSP default-src directive',true,true); 
    176           $blog_settings->system->put('csp_admin_script',"'self' 'unsafe-inline' 'unsafe-eval'",'string','CSP script-src directive',true,true); 
    177           $blog_settings->system->put('csp_admin_style',"'self' 'unsafe-inline'",'string','CSP style-src directive',true,true); 
    178           $blog_settings->system->put('csp_admin_img',"'self' data: media.dotaddict.org blob:",'string','CSP img-src directive',true,true); 
     181          $blog_settings->system->put('csp_admin_default', 
     182               $csp_prefix."'self'".$csp_suffix,'string','CSP default-src directive',true,true); 
     183          $blog_settings->system->put('csp_admin_script', 
     184               $csp_prefix."'self' 'unsafe-inline' 'unsafe-eval'".$csp_suffix,'string','CSP script-src directive',true,true); 
     185          $blog_settings->system->put('csp_admin_style', 
     186               $csp_prefix."'self' 'unsafe-inline'".$csp_suffix,'string','CSP style-src directive',true,true); 
     187          $blog_settings->system->put('csp_admin_img', 
     188               $csp_prefix."'self' data: media.dotaddict.org blob:",'string','CSP img-src directive',true,true); 
    179189 
    180190          # Add Dotclear version 
  • inc/admin/lib.dc.page.php

    r3421 r3432  
    106106               // Get directives from settings if exist, else set defaults 
    107107               $csp = new ArrayObject(array()); 
    108                $csp['default-src'] = $core->blog->settings->system->csp_admin_default ?: "'self'"; 
    109                $csp['script-src'] = $core->blog->settings->system->csp_admin_script ?: "'self' 'unsafe-inline' 'unsafe-eval'"; 
    110                $csp['style-src'] = $core->blog->settings->system->csp_admin_style ?: "'self' 'unsafe-inline'"; 
    111                $csp['img-src'] = $core->blog->settings->system->csp_admin_img ?: "'self' data: media.dotaddict.org blob:"; 
     108 
     109               // SQlite Clearbricks driver does not allow using single quote at beginning or end of a field value 
     110               // so we have to use neutral values (localhost and 127.0.0.1) for some CSP directives 
     111               $csp_prefix = $core->con->driver() == 'sqlite' ? 'localhost ' : '';   // Hack for SQlite Clearbricks driver 
     112               $csp_suffix = $core->con->driver() == 'sqlite' ? ' 127.0.0.1' : '';   // Hack for SQlite Clearbricks driver 
     113 
     114               $csp['default-src'] = $core->blog->settings->system->csp_admin_default ?: 
     115                    $csp_prefix."'self'".$csp_suffix; 
     116               $csp['script-src'] = $core->blog->settings->system->csp_admin_script ?: 
     117                    $csp_prefix."'self' 'unsafe-inline' 'unsafe-eval'".$csp_suffix; 
     118               $csp['style-src'] = $core->blog->settings->system->csp_admin_style ?: 
     119                    $csp_prefix."'self' 'unsafe-inline'".$csp_suffix; 
     120               $csp['img-src'] = $core->blog->settings->system->csp_admin_img ?: 
     121                    $csp_prefix."'self' data: media.dotaddict.org blob:"; 
    112122 
    113123               # Cope with blog post preview (via public URL in iframe) 
  • inc/dbschema/upgrade.php

    r3423 r3432  
    602602                    sprintf($strReq,'csp_admin_report_only',false,'boolean','CSP Report only violations (admin)')); 
    603603 
     604               // SQlite Clearbricks driver does not allow using single quote at beginning or end of a field value 
     605               // so we have to use neutral values (localhost and 127.0.0.1) for some CSP directives 
     606               $csp_prefix = $core->con->driver() == 'sqlite' ? 'localhost ' : '';   // Hack for SQlite Clearbricks driver 
     607               $csp_suffix = $core->con->driver() == 'sqlite' ? ' 127.0.0.1' : '';   // Hack for SQlite Clearbricks driver 
     608 
     609               # Try to fix some CSP directive wrongly stored for SQLite drivers 
     610               $strReq = 'UPDATE '.$core->prefix.'setting '. 
     611                         " SET setting_value = '".$csp_prefix."''self''".$csp_suffix."' ". 
     612                         " WHERE setting_id = 'csp_admin_default' ". 
     613                         " AND setting_ns = 'system' ". 
     614                         " AND setting_value = 'self' "; 
     615               $core->con->execute($strReq); 
     616               $strReq = 'UPDATE '.$core->prefix.'setting '. 
     617                         " SET setting_value = '".$csp_prefix."''self'' ''unsafe-inline'' ''unsafe-eval''".$csp_suffix."' ". 
     618                         " WHERE setting_id = 'csp_admin_script' ". 
     619                         " AND setting_ns = 'system' ". 
     620                         " AND setting_value = 'self'' ''unsafe-inline'' ''unsafe-eval' "; 
     621               $core->con->execute($strReq); 
     622               $strReq = 'UPDATE '.$core->prefix.'setting '. 
     623                         " SET setting_value = '".$csp_prefix."''self'' ''unsafe-inline''".$csp_suffix."' ". 
     624                         " WHERE setting_id = 'csp_admin_style' ". 
     625                         " AND setting_ns = 'system' ". 
     626                         " AND setting_value = 'self'' ''unsafe-inline' "; 
     627               $core->con->execute($strReq); 
     628               $strReq = 'UPDATE '.$core->prefix.'setting '. 
     629                         " SET setting_value = '".$csp_prefix."''self'' data: media.dotaddict.org blob:' ". 
     630                         " WHERE setting_id = 'csp_admin_img' ". 
     631                         " AND setting_ns = 'system' ". 
     632                         " AND setting_value = 'self'' data: media.dotaddict.org' "; 
     633               $core->con->execute($strReq); 
     634 
    604635               # Update CSP img-src default directive 
    605636               $strReq = 'UPDATE '.$core->prefix.'setting '. 
    606                          " SET setting_value = '''self'' data: media.dotaddict.org blob:' ". 
     637                         " SET setting_value = '".$csp_prefix."''self'' data: media.dotaddict.org blob:' ". 
    607638                         " WHERE setting_id = 'csp_admin_img' ". 
    608639                         " AND setting_ns = 'system' ". 
Note: See TracChangeset for help on using the changeset viewer.

Sites map