Chat / support@radicenter.eu

Levinumad vead veebilehtedel PHP 5.6 korral

PHP5.6 ei erine otseselt PHP5.5’st ja on ainult seega nö. minor update. Rohkem rõhku on küll pandud turvalisusele ning funktsioonid võivad vananenud funktsionaalsuse korral anda rohkem veateateid. Sisuhaldused ja e-poed mis on korrektselt turvapaigatud ja uuendatud, toimivad korrektselt edasi ka 5.5 -> 5.6 ülemineku korral! Levinumad vead, mis on esinenud veebilehtedel, kus on kasutatud PHP versiooni 5.5, kuid nüüd on kasutusel versioon 5.6 (ning ei ole korrektselt uuendatud):

1. Sisuhaldus on uuendamata ja mcrypt_encrypt ning mcrypt_decrypt ei toimi korrektselt.
2. Character set viga, kus täpitähtede asemel kuvatakse äkitselt muid märke
3. SSL kontroll on muutunud tugevamaks
4. Sisuhaldus näitab “White Screen of Death” kuva

1. Sisuhaldus on uuendamata ja mcrypt_encrypt ning mcrypt_decrypt ei toimi korrektselt.

Kui vanematel PHP versioonidel ei olnud rangelt nõutud korralik võtme pikkus kas 16/24/32 bitti ja vanemad PHP versioonid lisasid nö. vaikimisi 0 bitti võtme lõppu kuniks saavutati esimene sobilik pikkus, siis PHP5.6 seda enam ei tee ja väljastab veateate (kuna selline patchimine ei ole otseselt turvaline ning tuleks kasutada korrektse pikkusega võtit!) Eriti avaldub see vanematel PrestaShop installatsioonidel.
Näitlik veateade (PrestaShop puhul Apache errorlogis):

mod_fcgid: stderr: PHP Warning: mcrypt_encrypt(): Key of size 14 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported in /home/npXXXXX/domains/teiedomeen.ee/public_html/classes/Rijndael.php on line 50

Mida tuleks teha:
1. PrestaShoppide puhul aitab kui failis ./classes/Rijndael.php kood:

public function __construct($key, $iv)
   {
      $this->_key = $key;
      $this->_iv = base64_decode($iv);
   }

Vahetada koodiga:

public function __construct($key, $iv)
   {
      // set sizes
      $sizes = array(16,24,32);

      // loop through sizes and pad key
      foreach($sizes as $s){
         while(strlen($key) < $s) $key = $key."\0";
         if(strlen($key) == $s) break; // finish if the key matches a size
      }
      $this->_key = $key;
      $this->_iv = base64_decode($iv);
   }

2. Muudel juhtudel (muude sisuhalduste korral) tuleks kas Pad’ida:

function pad_key($key){
    // key is too large
    if(strlen($key) > 32) return false;

    // set sizes
    $sizes = array(16,24,32);

    // loop through sizes and pad key
    foreach($sizes as $s){
        while(strlen($key) < $s) $key = $key."\0";
        if(strlen($key) == $s) break; // finish if the key matches a size
    }

Või lisada $key jaoks loop:

    // set sizes
    $sizes = array(16,24,32);

    // loop through sizes and pad key
    foreach($sizes as $s){
        while(strlen($key) < $s) $key = $key."\0";
        if(strlen($key) == $s) break; // finish if the key matches a size
    }

2. Character set viga, kus täpitähtede asemel kuvatakse äkitselt muid märke

Kuna vanematel PHP versioonidel oli default_charset väärtus “empty” kuid PHP5.6 puhul on väärtus vaikimisi “UTF-8”, siis võivad non-utf8 veebilehed näidata imelikke kirjamärke täpitähtede kohapeal
(Vahemärkusena: Kuna on aasta 2016 siis enamus korrektseid veebilehti on reeglina kodeeringuga UTF-8 – osa vanemaid ja uuendamata veebilehti või vanemat funktsionaalsust kasutavaid veebilehti võivad samas olla aga ka ISO-8859-1 või ISO-8859-15 vms. kodeeringus)
Mida tuleks teha:
1. Tuleks .htaccess faili lisada kood:

php_value default_charset ISO-8859-15

(NB! ISO formaat peaks olema siis vastavalt teie veebilehe kodeeringule!)

2. Või kasutatavasse conf/settings või index PHP faili kood esimesele reale:

if (strtolower(ini_get('default_charset'))=='utf-8') {
@ini_set('default_charset', 'ISO-8859-15');
}

(NB! ISO formaat peaks olema siis vastavalt teie veebilehe kodeeringule!)
Lisainfot võib leida ka lingilt: https://www.saotn.org/php-56-default_charset-change-may-break-html-output/

3. SSL kontroll on muutunud tugevamaks

Kõik SSL’iga senduvad (curl/mail/smtp/jms) võivad anda veateate. See tähendab seda et SSL sertifikaadi kontroll on muutunud tugevamaks ja korrektsemaks. (NB! SSL sertifikaadi kontrolli on rangelt soovitatav MITTE EEMALDADA!) Seega annab kas serveri vale aadressi korral või vale sertifikaadi korral vastav funktsionaalsus veateate (kui PHP5.5 ja varasemas versioonides võis see saada nö. ainult softfaili ja funktsionaalsus toimis)
Mida teha/Näide Radicenteri mailiserveri korral:
Tuleks kasutada serveril korrektset aadressi, millele on väljastatud sertifikaat ja/või mitte self-signed sertifikaate!
Näide:
– Kasutate välisest serverist SMTP ssl ühendust PHP kaudu meie mailiserveriga, kuid aadress on kas IP või teie domeeninime kujul – sellistel juhtudel teie skript ei toimi! (Kuna sertifikaat ei ole väljastatud teie domeeninimele ega ka serveri IP’le)
Tuleks: Kasutada korrektset serveri aadressi kujul:
– DirectAdmin serverikonto korral: aXXX.radicenter.eu (kus XXX on serveri IP viimane neljandik numbrites – a’la a123.radicenter.eu, kui serveri IP oleks 212.47.208.123)
– Cpanel serveri korral: mail.teiedomeen.ee või kujul cpX.radicenter.eu (kus cpX on serveri hostname kujul cpa,cpb,cpc,…)
Täpsema serveri aadressi leiate kindlasti, kui kasutate sätete genereerimisvormi lehel: E-posti seadete generaator

4. Sisuhaldus näitab “White Screen of Death” kuva

Leht toimis – kuid peale PHP “minor uuendust” annab sisuhaldus WSOD kuva – ehk näidatakse “valget lehte”.
Tõenäoliselt kasutab teie sisuhaldus mingid cache laadset vahemälu, kus osa koodist kui ka kuvatavast lisatakse “failidepõhisesse vahemällu”. Lahendus oleks siinkohal kustutada/tühjendada mainitud vahemälu ehk cache kaust! (Hetkel on tuvastatud antud mure ainult SilverStripe sisuhaldusel)

Näiteks: SilverStripe puhul aitab, kui kustutada (eeldusel et teie cms asub public_html kaustas) public_html/silverstripe-cache/ kaustast kõik alamkaustad ja failid!
NB! Alati ennem muudatuste tegemist võtke oma veebilehest/sisuhaldusest kindlasti ka varukoopia!

Comments are currently closed.

See veebileht kasutab küpsiseid, mis aitavad teha lehe külastamise mugavamaks. Meie veebilehte külastades nõustute meiepoolse küpsiste kasutamisega.
Sain aru.