Adminer 4.1.0

Školení, která pořádám

Asi největší novinkou právě vydané verze Admineru je ochrana proti pokusu o získání hesla k databázi hrubou silou. Adminer nově dovolí jen 30 neplatných pokusů o přihlášení za 30 minut (počítáno od prvního neplatného pokusu). Další pokusy (ať už se správným nebo špatným heslem) se ignorují, dokud nevyprší časový limit. Limit se vztahuje na IP adresu, nikoliv na uživatelské jméno. To je ze dvou důvodů:

  1. Útočník může zkoušet různá uživatelská jména, nemusí být zaměřen jen na jedno.
  2. Při vazbě na uživatelské jméno by útočník mohl oprávněnému uživateli zabránit v přihlášení úmyslným zadáváním špatných hesel (DoS).

Limit je poměrně velkorysý, protože mě rozčiluje, když mi některé služby třeba po třech neplatných pokusech o přihlášení ukážou dlouhý nos. Také jsem zohlednil, že stejnou IP adresu může používat více uživatelů, např. ze stejné firmy s proxy serverem. Pokud máte webový server umístěný za reverzní proxy a všechny požadavky chodí ze stejné IP adresy, tak je vhodné implementovat metodu Adminer::bruteForceKey() tak, aby vracela poslední část hlavičky X-Forwarded-For. Jinak vám hrozí DoS. Hlavička X-Forwarded-For se bohužel nemůže kontrolovat automaticky, protože jde triviálně podstrčit.

Přemýšlel jsem i o přidání CAPTCHA, což by zamezilo riziku DoS. reCAPTCHA ale používá privátní klíč, který by musel být součástí Admineru, a ostatní řešení jsou obvykle celkem snadno prolomitelná.

Data se ukládají do upload_tmp_dir nebo pokud není nastaven, tak do sys_get_temp_dir(). Tyto adresáře někdo pravidelně promazává, nicméně vzhledem k poměrně krátké platnosti dat by to nemělo moc vadit.

I přes tuto ochranu je vhodné přístup k Admineru omezit, např. v Apache pomocí Access Control. Případně pokud Adminer použijete někde jen jednorázově, tak ho zase po sobě smažte. Odkaz na Adminer také nikam zbytečně nedávajte a neumisťujte ho na snadno uhodnutelnou adresu. Pokud Adminer používají zákazníci vašeho hostingu, tak jim k němu umožněte přístup jen pokud jsou přihlášeni do administrace hostingu.

Další novinky

Jakub Vrána, Adminer, 18.4.2014, diskuse: 44 (nové: 0)

Diskuse

Ondřej Šejvl:

„Textarea se zvýrazňováním syntaxe bohužel v některých prohlížečích nefunguje stoprocentně“

Ve FF(28) zlobí, ale funguje kliknout jinam a pak znovu zpět do ní a přimlouvám se raději k ponechání, zvýrazňování se mi líbí :-)

Patrik:

Fajn novinky, vďaka. Ktoré prehlidače pridávajú na konci riadku nezalomiteľnú medzeru?

ikona Jakub Vrána OpenID:

Chrome, i když mně se to nikdy nepodařilo reprodukovat.

Michal:

Oživuji možná přehlédnutý "asi bug"  http://php.vrana.cz/adminer-4-0-0.php#d-33204.

Buksa:

Jakub preco sa tak bojis zrazu bezpecnosti admineru, ze ho treba skryvat? Bol nejaky reportovany prienik? Inak dakujem za dalsiu skvelu verziu admineru

ikona Jakub Vrána OpenID:

To není „zrazu“. Adminer hlavičku Referer skrývá od té doby, co začal externí odkazy zpracovávat. Teď jsem naopak díky pokroku prohlížečů trochu povolil kohouty a pro skrytí Refereru se na prohlížeče spoléhám.

Žádný průnik reportovaný nebyl, nad bezpečností přemýšlím neustále. Ve vývoji Admineru to je ostatně priorita č. 1, viz http://www.adminer.org/.

Viktor Mašíček:

Zvýraznění SQL je fajn. Ale odstranil bych ikonu u názvu tabulek. Je to matoucí, protože se to tváří jako znak, ale znak to není. A navíc text skáče, když člověk dopíše název tabulky (dokud není napsán název existující tabulky, není ikona zobrazena a po úplném dopsání názvu vše uskočí díky přidané ikoně).

Jinak dík za Adminer. Používám jej už několik let a je to paráda.

ikona Jakub Vrána OpenID:

To asi způsobuje nějaký skin, základní verze to nedělá. Zkus ho prosím opravit (nejspíš změnou nebo přidáním nějakého selektoru) a poslat mi ho.

Michal:

Adminer nezobrazuje počet bytů ve sloupci blob v SQLite, pokud provedu dotaz pomocí akce "select" z menu. Políčko v řádku je prázdné. Pokud stejný dotaz provedu ručně, tak se velikost zobrazuje.

Michal:

Oživuji.

Jan Tojnar:

Plánujete přidat podporu pro utf8mb4?

ikona Jakub Vrána OpenID:

Adminer si seznam podporovaných kódování bere od MySQL, takže utf8mb4 podporuje, pokud ho podporuje MySQL. Je ale pravda, že při připojování do databáze posílá obdobu SET NAMES utf8, takže hádám, že znaky podporované jen v utf8mb4 se neuloží správně.

Peter:

Ahoj, práve som narazil na problem s utf8mb4 a dogooglil som sa až tu. V tabuľkách používam charset utf8mb4, ale keďže je connection v adminerovi utf8, tak sa znaky nad U+FFFF nedajú ani zadať, ani prečítať.

Mohol by si prosím zmeniť štandardné connection charset z utf8 na utf8mb4 ? :-)

ikona Jakub Vrána OpenID:

Jo, bude to v další verzi.

ikona Jakub Vrána OpenID:

Už je to na GitHubu.

jura:

Ahoj, prosím o radu jak na stránkách nastavit.
Aby se spustil adminer.php nebo editor.php
s automatickým přihlášením do databaze D a tabulky T v msql jen pro čtení (jméno Jmeno a heslo Heslo).

Pak už by si každý mohl hledat a třídit tabulku dle své potřeby.

Děkuji za pomoc

Jura

ikona Jakub Vrána OpenID:

Stačí si uložit stránku s danou databází a tabulkou do bookmarků. Nutnost přihlašování lze vypnout metodou login().

jura:

Lze nějak vypnout první sloupec v editor.php ?
(myslímí tím "upravit")

Bookmarků - je myšleno např. example.php ?

ikona Jakub Vrána OpenID:

První sloupec momentálně vypnout nejde. Možná leda stylem.

jura:

Lze nastavit zobrazení např. čtvrtého sloupce na zalomení textu a šířky např. 100 znaků ?

ikona Jakub Vrána OpenID:

Mělo by to jít metodou selectVal().

ikona Zemistr:

Zdravím :)
Jen jsem se chtěl zeptat, jak je na tom podpora SQLite3?

ikona Jakub Vrána OpenID:

Běžně Adminer pro správu SQLite3 používám.

ikona Zemistr:

Občas mi to vyhodilo error třeba při editaci tabulky. :/

A bude v něm i podpora třeba pro vytvoření oné databáze?

ikona Jakub Vrána OpenID:

Popiš prosím přesně, jaký postup vedl k vyvolání jaké chyby.

Milsa:

V zozname databáz by som navrhoval dať odkaz na obnovu zoznamu hore. Je to trochu nepraktické rolovať kvôli tomu dole. Ideálne by bolo to kešovanie zrušiť, ale autora o tom zrejme nepresvedčím. :-)

ikona Jakub Vrána OpenID:

Od verze 4.1.0 už to nahoře je.

Martin:

Dobrý den, díky za skvělý nástroj, ale jen jedna věc mi děsně chybí. Plánujete u pole pro SQL dotazy přidat názvy sloupců v dané tabulce (případně i s jejimi přenosy do pole dotazu) jako je to u phpmyadmin? Když píši dotazy, názvy si jen tak nevybavím. Díky moc

ikona Jakub Vrána OpenID:

Momentálně ne. Udělal bych to formou autocomplete v editoru.

David Grudl:

Hotový autocomplete je třeba tady https://github.com/dg/adminer-custom

trestná smradlavice:

Zdravím. Šlo by na stránce "Změnit tabulku", třeba vedle "Rozdělit podle…" přidat analogicky "Seřadit podle…" s výběrem sloupců, kde se po výběru jednoduše zavolá ALTER TABLE tabulka ORDER BY sloupce;? phpMyAdmin to má. Ano, není to životně důležité, ale někdy je to k užitku.

ikona Jakub Vrána OpenID:

Funguje to jen pro MyISAM tabulky, takže se to přidávat nechystám.

pan Ďulák:

Zdravím.
Mám tabulku se sloupcem typu set s vícero hodnotami. Překvapilo mě, že při vkládání nové položky se nejdřív zobrazily všechny checkboxy a pak všechny možnosti - tedy ne checkbox1-možnost1, checkbox2-možnost2, ...

ikona Jakub Vrána OpenID:

Popis není moc jasný, můžeš odkázat screenshot? Možná jde o problém nějakého skinu.

pan Ďulák:

http://s16.postimg.org/jogygdp1h/adminer41…_problem.png
první řádek z adminer.css: /* Theme "Nette" for Adminer, (c) David Grudl */

pan Ďulák:

po smazání šablony jsou už labely korektně za checkboxy, tedy zdá se, že to byl problém šablony

ikona Jakub Vrána OpenID:

Můžeš se to prosím pokusit opravit?

e-bola:

Mohla by u MySQL mezi operátory v sekci "Vyhledat:" být FIND_IN_SET()?

David Klouček:

Asi jsem našel bug. Když edituju záznam, tak se u sloupce typu POINT vytváří input typu number a tím pádem neni možný zadat POINT(x y).

ikona Jakub Vrána OpenID:

Zkus aktuální verzi nebo verzi na GitHubu, podle mě to už je dávno opravené.

trestná smradlavice:

Zdravim.
Praktický příklad, se kterým nyní potýkám: Existuje nějaké rozšíření pro Adminer, které by dokázalo omezit přístup k němu jen ze seznamu povolených IP?

ikona Jakub Vrána OpenID:

Ne, ale asi by bylo celkem jednoduché udělat.

trestná smradlavice:

Zdravím,
Poslušně hlásím bug:
Cvičně jsem si zkusil použít v názvu jedné tabulky nestandardní znaky - její jméno je: `problematic-.<?a=1&lt;&b[]='"%``)-- /*@\## table`.
Adminer ji umí správně zobrazit v navigaci, procházet ji, zobrazit a měnit její strukturu, ale jediné, co selže, je zobrazení jejího počtu řádků, dat, indexů atd. v přehledu databáze, jíž je součástí - tam zobrazí jen otazníky.

ikona Jakub Vrána OpenID:

Díky za upozornění, byl tam double escaping. Opravil jsem to.

Vložit příspěvek

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