---
title: "PHP 7.1, testijate ID-kaardid, kehtivuskinnituse manustamine  ja turvapaik, mis tekitab turvaaugu"
canonical_url: "https://www.zone.ee/blogi/php-7-1-testijate-id-kaardid-kehtivuskinnituse-manustamine-ja-turvapaik-mis-tekitab-turvaaugu/"
post_type: "post"
published: "2016-12-06T14:56:05+00:00"
modified: "2016-12-06T14:56:05+00:00"
author: "Jaanus Putting"
featured_image: "https://www.zone.ee/static/sites/2/2016/12/controlina.jpg"
taxonomies:
  category:
    - name: "Zone.ee Blog"
      url: "https://www.zone.ee/blogi/category/zone-ee-blog/"
---

# PHP 7.1, testijate ID-kaardid, kehtivuskinnituse manustamine  ja turvapaik, mis tekitab turvaaugu

Ega’s midagi, paneme aga progressile hagu alla ja proovime lahti seletada, kuidas see kõik maailmarevolutsioonile kasulik on.

### OCSP *stapling* ehk kehtivuskinnituse manustamine

Selle vajadus tuli meil esimest korda jutuks, kui rahvusvaheliselt Magento-arendusega tegelev [Vaimo](http://www.vaimo.com/) mainis HTTPS’ist rääkides aeglasema ühendusega turge kolmanda maailma riikides. Nimelt kontrollivad veebibrauserid HTTPS-ühenduse loomisel serveri sertifikaadi kehtivust, tehes täiendava päringu selle väljastanud sertifitseerimisasutuse poole, see aga võtab aega ja võib kehva ühenduse puhul ka ebaõnnestuda.

Probleemist aitab üle [*OCSP stapling*](https://en.wikipedia.org/wiki/OCSP_stapling), mille puhul server hangib perioodiliselt ise OCSP ehk *Online Certificate Status Protocol* abil digiallkirjastatud kehtivuskinnituse, puhverdab selle ning väljastab ühenduse loomisel koos oma sertifikaadi-ahelaga. Nii saab brauser olemasoleva juursertifikaadi abil kontrollida kõigi sertifikaatide kehtivust ilma täiendavate päringuteta.

Zone Virtuaalserverites on nüüd olemas OCSP *stapling* tugi, mis on automaatselt aktiveeritud kõigile Let’s Encrypt sertifikaati kasutavatele serveritele, aga seda saab lubada ka muid sertifikaate kasutades eeldusel, et vahetaseme ehk *intermediate* sertifikaadid on korrektselt seadistatud. Olgu öeldud, et [SSLlabs’i testis](https://www.ssllabs.com/ssltest/analyze.html) hea hinde saamiseks on *intermediate* ahela seadistus niikuinii vajalik – ja kuuldavasti hakkab hinne A varsti sõltuma ka OCSP stapling’u kasutamisest.

Seadistuse saab muuta Virtuaalserveri haldusest:

![ocsp-stapling](https://www.zone.ee/static/sites/2/2016/12/ocsp-stapling.png)

Selle kohal on aga näha teine uuendus:

### Eesti test-IDkaardi tugi ehk áº&#152;Ä&#149;Ä¼Æ&#136;á»&#151;É¯áº¹, Cøntrolina Ålt-Deletè

![controlina](https://www.zone.ee/static/sites/2/2016/12/controlina.jpg)

Zones tarkvara-arenduses kasutame Sertifitseerimiskeskuse väljastatud [test-IDkaarte](http://www.id.ee/index.php?id=30379) vältimaks vajadust rakenduse testimisel reaalselt siduvaid digiallkirju anda ning potentsiaalset segadust domeeni sdfghjklö.ee registreerimise või asdasd.ee omanikuvahetusega. Oma arendus-serveri puhul test-sertifitseerimisasutuse seadistamine osa tavapärasest tööprotsessist, aga samas võiks edumeelne arendaja teha ka Virtuaalserveri puhul alamdomeenid `test.*` ja `staging.*` ning seal julgelt katsetada.

ID-kaardi tugi on olemas kõigis meie Virtuaalserverites ja realiseeritud nii, et server nõuab brauserilt kasutaja sertifikaati ning kontrollib selle väljastajat ja kehtivust. Ametliku ID-kaardi sertifikaadi väljastajaks on `EE Certification Centre Root CA`, testsertifikaadil `TEST of EE Certification Centre Root CA`:

![sk-root-certs](https://www.zone.ee/static/sites/2/2016/12/sk-root-certs.png)

Valides Virtuaalserveri halduses serverile või (soovitavalt) testiks kasutatavale alamdomeenile **TEST ID-kaardi toe** kontrollib server kliendi-sertifikaadi vastavust test-ahelale… ehk nii lihtne see ongi. Kuna valik on binaarne ehk üks-või-teine, puudub ka oht, et “tootmiskeskkonnas” saaks kasutada test-kaarte.

Kolmas ja neljas muudatus on aga seotud PHPga.

### Mitme faililaiendi toe väljalülitamise võimalus

See on üks salakaval valik, mille mõlemad olekud tekitavad erinevat laadi turvaprobleeme.

Mitme faililaiendi tugi – mis meil ajalooliselt on lubatud olnud – tähendab seda, et PHP käivitamiseks ei pea .php olema ilmtingimata viimane laiend failinime lõpus – väidetavasti on ajaloolistel isikutel olnud kombeks kasutada pisipiltide loomiseks skripte, millel nimi stiilis `teeme-väiksed-pildid.php.png,` samuti leiab serveritest hulgaliselt faile nimedega stiilis `wp-config.php.bak`. Mitme laiendi tugi tagab nende mõlema käivitamise PHP-na ehk esimesel puhul tehakse pisipilt ja teisel puhul ei kuvata kõigile huvilistele välja seadistuste failis olevaid andmebaasi kasutajatunnuseid.

On aga ka negatiivne pool – nimelt leidub paljudes sisuhalduslahendustes ja nende laiendustes mitte-kõige-osavamalt-kirjutatud faili-üleslaadimise-koodi, mis heal juhul kontrollib failinime lõpus olevat laiendit ja lubab rahulikult … näiteks `teeme-väikse-tagaukse.php.png` laadimist serverisse. Kui on lubatud selliste failide käivitamine PHP-na, siis muutub oluliselt suurem hulk haavatavusi reaalselt ärakasutatavateks. Kui me aga selle välja lülitaks, võiks osa veebe katki minna ja teistes muutuksid kogemata serverisse ununenud .php.bak failid nähtavaks (neid skannitakse pidevalt).

Seega on igaühel nüüd võimalik mitme-laiendi-tugi välja lülitada, olles eelnevalt koristanud ära failid, millel kogemata on .php taha sattunud veel mõni muu laiend. Hea mõte oleks ka .htaccess’i algusesse mõned reeglid lisada, mis takistavad config-nimeliste failide kogemata kuvamist – päris hea kollektsioon on [Perishable Press’i 6G reeglites](https://perishablepress.com/6g/) (või [minu väikeste kohendustega versioon gist’ina](https://gist.github.com/petskratt/17fdb56c75800fc38797a7c5bd1d1127#file-htaccess))

![php-71](https://www.zone.ee/static/sites/2/2016/12/php-71.png)

### … ja PHP 7.1 on beetast väljas!

Meile teadaolevalt ei kaasne üleminekuga 7.1 peale suuremaid probleeme koodile, mis 7.0 all toimib. Esile võiks tuua vahest mcrypt’i (vt [mcrypt-viking-funeral](https://wiki.php.net/rfc/mcrypt-viking-funeral "rfc:mcrypt-viking-funeral")), mis hakkab andma hoiatusi ja kaob lõplikult järgmises versioonis.

Tõenäoliselt hakkame mõne alam-versiooni järel seadistama 7.1 uute Virtuaalserverite vaikeversiooniks – ning vastavalt väljakuulutatud poliitikale saab 6 kuu pärast ehk mais 2017 sellest SAPI ehk Apache moodulis kasutatav versioon ning ühtlasi läheb 7.1 kasutusse vaikimisi käsurealt käivitatava versioonina.
