RON dokumentace

Bezpečnost

Zabezpečení serveru pomocí HTTPS

Doporučujeme provozovat webserver na protokolu HTTPS. V tom případě je vhodné provést také další nastavení PHP a případně doplnit bezpečnostní hlavičky:

session.cookie_secure = 1
Zajistí, že se session cookie nebude odesílat na nezabezpečeném připojení, takže ji nepůjde "ukradnout" odposloucháváním síťové komunikace. Pokud nemáte možnost změnit nastavení PHP, tak je možné ji nastavit i v _appdbset.php příkazem
ini_set("session.cookie_secure", "1");

session.cookie_httponly = 1
Zajistí, že nelze číst session cookie pomocí javascriptu. V _appdbset.php lze nastavit příkazem
ini_set("session.cookie_httponly", "1");

Pokud server běží jen na https a zobrazení přes HTTP není žádoucí, je možné nastavit také hlavičku Strict-Transport-Security. Zajistí, že browser bude vždy (po zadaný počet sekund od posledního přístupu) automaticky přistupovat na web pomocí HTTPS (i když uživatel zadá adresu s HTTP). S touto hlavičkou OPATRNĚ! Je potřeba vědět co děláte! Pro odzkoušení je vhodné nejdříve nastavit nějakou malou hodnotu (např. 60)
header("Strict-Transport-Security: max-age=60");
a teprve po otestování nastavit větší hodnotu, např. 15552000 (to je 180 dní)

U session je vhodné v php.ini nastavit také atribut samesite:
session.cookie_samesite = "Strict"
Případně v _appdbset.php
ini_set("session.cookie_samesite", "Strict");

Konfigurace HTTP hlaviček

V odpovědi serveru není vhodné zobrazovat verzi použitého webserveru. Server IIS standardně tuto hlavičku generuje. Vypnutí je možné například tímto postupem:
https://support.waters.com/KB_Inf/Other/WKB202501_How_to_disable_the_Server_HTTP_header_in_Microsoft_IIS

V odpovědi serveru není vhodné zobrazovat verzi použitého PHP. K tomu služí v php.ini volba
expose_php = Off
Další možnost je nastavit hlavičku v nastavení webového serveru (na IIS je v sekci HTTP hlavičky odpovědí)
Odtranění hlavičky pomocí příkazu header_remove("X-Powered-By"); není dostatečné, protože jakýkoliv PHP soubor, který tento příkaz nespustí, verzi zobrazí!

Hlavička X-Content-Type-Options zabrání zpracování souboru jako javascript nebo css, pokud nemá správně nastaven mime typ. V _appdbset.php lze nastavit takto:
header("X-Content-Type-Options: nosniff");

Další bezpečnostní hlavičky:

    header("Referrer-Policy: no-referrer");    // určuje, jestli browser bude odesílat referrer
    header("X-Frame-Options: DENY");           // zabrání vložení stránky do frame (pokud stránku ve frame používáte, je potřeba zadat jinou hodnotu než DENY)

    // Hlavička CSP má spoustu různých nastavení. Lze použít například toto:
    header("Content-Security-Policy: Content-Security-Policy default-src 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content; X-XSS-Protection 1; mode=block");