Adminer 4.4.0
Školení, která pořádám
Hlavní změnou v Admineru 4.4.0 je přidání Content Security Policy. Samotný Adminer a Adminer Editor nadále fungují bez úprav, ale pokud používate přizpůsobení, ve kterém spouštíte vlastní JavaScript, tak je jeho nahrávání nutné upravit. Konkrétně musíte značce <script>
přidat atribut nonce
, např. pomocí <script<?php echo nonce(); ?>>
. Druhou možností je zavolat funkci script($code)
nebo script_src($url)
, která atribut přidá sama. Inline event handlery (např. <a onclick="">
) už nejde v HTML kódu definovat, všechen kód musí být uvnitř značky <script>
nebo v samostatném souboru. Pokud navíc nahráváte skripty z jiné domény, tak musíte přepsat metodu csp
, ve které nahrávání z externí domény povolíte.
Content Security Policy je dodatečná vrstva obrany před XSS. Pokud by v Admineru byla chyba a útočníkovi se podařilo způsobit HTML injection, tak CSP omezí, čeho tím útočník může dosáhnout, ideálně zabrání XSS. Adminer vyžaduje uvedení atributu nonce
u všech skriptů. Pro starší prohlížeče, které nonce
nepodporují, je navíc potřeba specifikovat domény, ze kterých lze skripty nahrávat (Adminer bez přizpůsobení povoluje jen stejnou doménu). V Google pracuji v týmu, který se nasazováním CSP zabývá, proto jsem rád, že kovářova kobyla už nechodí bosa.
Další změny
- Od verze 4.1.0 Adminer omezuje počet neúspěšných pokusů o připojení. Nyní omezuje i pokusy o připojení bez zadaného hesla, což se dalo zneužít pro skenování portů. Ze stejného důvodu Adminer nově zakazuje připojení na privilegované porty (< 1024).
- K odesílaným hlavičkám přibyla
X-Content-Type-Options: nosniff
, která především zabraňuje zpracování HTML dokumentů jako skript nebo styl.
- Bezpečnostní hlavičky se nyní odesílají i při přepsání metody
headers
, v případě potřeby je lze smazat funkcí header_remove
nebo přepsat funkcí header
.
- PHP 7.1 přidalo varování, pokud se numerickým operátorem zpracovává nečíslo. Adminer pro převod limitu na číslo používá operátor
+
. Pokud limit nebyl zadán (což způsobí vypsání všech řádek), tak se toto nové varování zobrazilo. Nová verze to opravuje.
- PHP 7.2 přidalo varování, pokud se funkce
count
volá s jinou hodnotou než polem nebo objektem implementujícím interface Countable
. Adminer ji občas volal s hodnotou null
, což už nedělá.
- U MySQL jsem odstranil stránku se stavem replikace, přidanou v Admineru 4.3.0. Přidal ji dobrovolník a už při jejím přidávání jsem měl pochybnosti o jejím smyslu. Když se ozvali i další uživatelé, tak jsem ji odstranil.
- U PostgreSQL se opět řadí názvy tabulek, což rozbila změna dobrovolníka v Admineru 4.3.1.
- V Editoru se už časové pásmo nenastavuje z PHP, což řeší problémy s letním časem.
- Pro Editor lze nově nastavit popis, který se zobrazuje jen v editaci a ne ve výpisu. Ten se uvádí do hranatých závorek v komentáři sloupce.
- V Editoru jsem opravil drobnou chybu spočívající v označení řádku při double-clicku.
- V Editoru jsem opravil chybu v hledání ve všech tabulkách najednou (což se provádí na stránce se seznamem tabulek).
- Přibyl hebrejský překlad.
Diskuse
Jakube, prosím, jaké problémy způsobuje časové pásno v PHP s letním časem?
> …už časové pásmo nenastavuje z PHP, což řeší problémy s letním časem…
Problém byl, že časové pásmo se nastavilo podle toho, které je právě teď platné v PHP, třeba na +01:00. Jenže pak se časy z léta zobrazovaly špatně.
Aha, takže to nebyl přímo problém PHP, ale chybné implementace na straně Admineru?
Ano. Z PHP jsem zavolal date('P') a to jsem poslal do MySQL.
František Hána:
Díky moc za super Adminer. Jen jsem narazil nejspíš na drobnou chybu.
Při hledání přes všechny tabulky v MySQL (Vyhledat data v tabulkách) mi to vrací pro každou tabulku místo odpovědi chybu: Syntax error near 'LIMIT 1' at line 1
MySQL: 5.7.20-19
Jaromír Obr:
Jedna regrese. Kdyz u sloupce tabulky kliknu pres mouse over na "=", nedostanu textovy kurzor v search poli. Musim tam kliknout. Ve 4.3.1 to fungovalo. Zkousim to v Chrome 63
Jaromír Obr:
Diky za opravu. Zkousim to ted v 4.5.0 a chova se to trochu jinak nez ve 4.3.1. Text. kurzor se v editovanem poli zobrazi a muzu do nej hned psat, ale kdyz pak jeste zkusim zadat query pro jiny sloupec (opet pres mouse over a "="), text. kurzor zustava v tom puvodnim poli.
Jaromír Obr:
Super, v 4.6.0 uz to funguje spravne. Diky moc.
Diskuse je zrušena z důvodu spamu.