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

Jakub Vrána, Adminer, 17.1.2018, diskuse: 11 (nové: 0)

Diskuse

ikona Jakub Bouček:

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…

ikona Jakub Vrána OpenID:

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ě.

ikona Jakub Bouček:

Aha, takže to nebyl přímo problém PHP, ale chybné implementace na straně Admineru?

ikona Jakub Vrána OpenID:

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

ikona Jakub Vrána OpenID:

Díky za upozornění, opravil jsem to.

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

ikona Jakub Vrána OpenID:

Díky za upozornění, opravil jsem to.

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.

ikona Jakub Vrána OpenID:

Tak snad už. Díky za neodbytnost.

Jaromír Obr:

Super, v 4.6.0 uz to funguje spravne. Diky moc.

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.