Adminer 4.6.3
Školení, která pořádám
Nejdůležitější změnou v Admineru 4.6.3 je zakázání příkazu LOAD DATA LOCAL INFILE
v MySQL. S jeho pomocí jde totiž načíst obsah libovolného souboru, ke kterému má přístup uživatel, pod kterým běží webový server.
Podobně zásadní změnou je zákaz používání databází bez hesla. Už v minulosti jsem zakázal přístup bez hesla k SQLite, teď to platí pro všechny databáze. Chápu, že třeba na vývojových serverech nepřístupných zvenčí to může být trochu opruz, ale detekce toho, zda jde o vývojový server, by byla nespolehlivá (např. za reverzní proxy), proto jsem to zakázal všude. Máte tři možnosti, jak se s tímto omezením vypořádat.
Další změny jsou drobnější:
- Při kopírování tabulky se nově zkopírují i její triggery.
- Před připojováním k databázi se ukoční session, což vede k uvolnění zámků a rychlejší práci Admineru v druhém okně.
- Zjednodušil jsem práci s pomalými dotazy. V minulosti to Adminer řešil dost krkolomně, teď už databázové servery poskytují API, kterým lze s pomalými dotazy pracovat rozumněji.
- Maximální čas pro vykonání pomalých dotazů jsem snížil z pěti sekund na dvě. Jde jen o dotazy, které Adminer vykonává na pozadí (např. zjištění celkového počtu řádek v tabulce), dotazů přímo zadaných uživatelem se to netýká.
- V přehledu databáze se jako ID buněk používá název tabulky. U nepísmenných tabulek se pak tyto buňky nenaplnily velikostmi, které se zjišťují na pozadí. To jsem opravil.
- Adminer nově posílá bezpečné cookies i na nezabezpečeném HTTP, pokud je nastavena direktiva
session.cookie_secure
. Adminer totiž může běžet na HTTP za reverzní proxy, která navenek komunikuje přes HTTPS.
- PDO nově podporuje stahování binárních souborů.
- MySQL: Funkce
CONVERT()
se nyní používá jen při hledání ne-ASCII znaků. Tuto funkci Adminer používá v situaci, kdy sloupce v tabulce nejsou kompatibilní s UTF-8. Někdy ale vede k tomu, že se nepoužijí indexy, proto její použití do budoucna možná ještě změním.
- MySQL 8 automaticky netřídí seznam tabulek, proto ho nyní třídí Adminer.
- PostgreSQL: Lze editovat data v pohledech, to se rozbilo ve verzi 4.6.0.
- PostgreSQL: Vyhledávání ve sloupcích typu
date
/time
/number
/uuid
se nepřevádí na text.
- PostgreSQL: V PDO se
false
exportuje jako 0, dříve to byl prázdný řetězec.
- MS SQL: Do ovladače pro sqlsrv jsem přidal podporu portu.
- Editor: Checkboxy vytvořené z hodnoty
false
už v PostgreSQL nejsou zaškrtnuté.
Diskuse
Salko:
Zdravím, už dve verzie pozorujem jednu vec, len som to zabudol nareportovať.
Úprava indexov, chcem pridať tri nové indexy, ale umožňuje mi to pridať iba dva. Pri výbere druhého sa už nezobrazí nový radok s indexom.
Salko:
Veľká vďaka, dobrá práca.
PeTaX:
Pro MySQL lamy (jako jsem já). Když se vydáte tou nejsnazší cestou, tedy si databázi zaheslujete, buď přímo v tabulce, nebo příkazem:
UPDATE `user` SET `password` = PASSWORD('YOUR_PASS') WHERE `user` = 'root';
musíte také novou kofiguraci MySQL načíst do paměti:
FLUSH PRIVILEGES;
Jinak Vám Adminer (ani jiná aplikace) zadané heslo nepřijme.
Pavel Kravčík:
Nepříjemná změna, pokud se týká více projektů lokálně. Můžeš vyřešit i locku na nižší verzi.
Jakub Vrána :
Vzhledem k tomu, že tato verze opravuje i celkem vážnou bezpečnostní chybu (lokální čtení souborů), tak to je to poslední řešení, které bych doporučil.
Lofas:
Souhlasím, pro mne je taky verze 4.6.2 konečná, protože nehodlám na X desítkách míst zbytečně nastavovat heslo, když to není potřeba. Takhle stačila úprava stahovacího skriptu a zafixování na konkrétní verzi a je hotovo. :)
Jakub Vrána :
Zhruba stejně pracné by bylo použít plugin, které přihlášení bez hesla zase povolí.
Lofas:
To by rozhodně nebylo, protože bych minimálně musel zjistit, jak se vůbec nějaký plugin do Admineru instaluje, protože jsem to za celou dobu jeho používání nepotřeboval. A opravdu se mi nelíbí, když za mě někdo rozhoduje, co je pro moji bezpečnost lepší. Takže takováhle snaha je vlastně kontraproduktivní, protože místo dosažení nějaké pseudobezpečnosti se teď bude nacházet spousta neaktualizovaných instalací Admineru, které není možné aktualizovat. Nevím která varianta je lepší.
Jakub Vrána :
Odpověď je úplně jednoduchá, lepší je tomu jednorázově obětovat 5 minut a aktualizovat. Za dobu téhle nesmyslné diskuze už jsi to mohl mít hotové.
Jako autor Admineru mám spoluzodpovědnost za to, jak se používá. Až někomu vykradou databázi proto, že někde nechal válet Adminer a databázi měl bez hesla, bude to samozřejmě primárně vina toho člověka, ale částečně taky moje, protože můj nástroj to umožnil. A vzhledem k tomu, že prioritou č. 1 při vývoji Admineru je bezpečnost (viz https://www.adminer.org/), tak je volba jasná. Já mám teď aspoň čisté svědomí.
Pavel Kravčík:
Ono je to nemilé, když už člověk používá nějaký připravený balíček, kde už je pevný soupis rozšíření, který se tahá pomocí composeru. Musel bych vytvořit fork, upravit, vydat na packagist a tak to dělat pro každou verzi. Nebo si napsat rozšíření na rozšíření. Takže pro lokální vývoj je neefektivnější lockout starou verzi.
Důvody změny však chápu.
Hobitt:
Lofasi, co je to za komentář? On tě někdo nutí používat tento program? Zrovna tak jak si ty myslíš, že za tebe někdo rozhoduje, co je pro bezpečnost lepší, tak je to spíše obráceně, protože používáš program, který vytvořil někdo jiný, neplatíš za něj, autor se o ten program stará (a to velmi dobře na rozdíl od jiných) a ty si ještě dovoluješ mu říkat co je pro JEHO program lepší?
Jestli se ti to nelíbí tak ho nepoužívej a zaplať si jiný program, nebo programátora, který ti napíše tvůj vlastní a pak mu můžeš vyčítat co chceš.
Ale výčítat autorovi, že opravil bezpečnostní chybu ve svém programu, který dává k použití všem zdarma je fakt už přes čáru.
Já nevím, ale pozoruji to už delší dobu v diskuzích. Spousta lidí si myslí, že všecno co je na internetu je jejich a může nadávat autorům jak se jim zlíbí i když sami nic nedělají. Stejně tak ve fórech dávají lidi příspěvky o tom, že se má tazatel naučit anglicky, nebo že si má přečíst manuálovou stránku. A přitom man stránka na linuxu nikdy nikomu nepomohla, prootže je to jen seznam parametrů bez popisu a bez příkladů, podle které se nedá ani zjistit jak ten program používat. O proti man stránce např. ve freebsd, která mne vždy pomohla a podle které se dá velmi snadno pochopit co to dělá.
Udo:
Hello,
i cannot get Adminer 4-6-3 to run without a password. Seems that i do not understand how i should add the AdminerLoginPasswordLess plugin.
On my local development system i have many, many database and even more php applications using those databases. It is convenient to use no password for the local databases. If cannot use adminer without a password i have to change all configuration settings for all my applications to use a password. This is a lot of work.
Any change that this change is killed in the next version?
Best regards, Udo
Diskuse je zrušena z důvodu spamu.