Adminer 4.2.4

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

Nová verze Admineru opravuje závažnou bezpečnostní chybu: vzdálené spuštění. Může k němu dojít za těchto okolností:

Ke vzdálenému spuštění mohlo dojít použitím SQLite příkazu ATTACH, který dovoluje vytvořit novou databázi. Pokud tato databáze má název *.php a následně je do ní vložen PHP kód, tak šlo tento kód následně spustit. SQLite sice umožňuje příkaz ATTACH omezit pomocí SQLITE_LIMIT_ATTACHED, ale PHP tento limit nedovoluje nastavit. Adminer proto příkaz ATTACH zakazuje parsováním SQL dotazu.

U správně zabezpečeného serveru se tato chyba neprojeví:

  1. Používejte jen verzi Admineru s ovladači, které potřebujete (např. samotné MySQL).
  2. Přístup k Admineru zabezpečte buď pomocí rozšíření (metoda login) nebo externě (např. v Apache souborem .htaccess).
  3. Uživateli, pod kterým běží web, seberte práva zápisu. Pokud je zápis výjimečně někam potřeba povolit, tak jen do adresáře nedostupného z webu. Pokud tento adresář musí být dostupný z webu, tak v něm zakažte spouštění PHP skriptů např. pomocí engine Off.
  4. Adminer pokud možno provozujte na samostatném serveru, z kterého je přístup do databáze, ale nikam jinam.

Za objevení a nahlášení chyby děkuji uživateli 庞申杰(千霄) ze společnosti Alibaba.

Jakub Vrána, Adminer, 6.2.2016, diskuse: 15 (nové: 0)

Diskuse

db:

Stáhl se mi z adminer.org nějaký editor-4.2.4.php Tváří se jako adminer, ale nefunguje tak jak bych si představoval.

ikona Jakub Vrána OpenID:

Editor je verze Admineru pracující pouze s daty, bez možnosti měnit strukturu tabulek. Adminer můžete stáhnout z https://www.adminer.org/.

db:

Aha rozumím. Nevšiml jsem si vícero záložek Adminer a Adminer editor. Omlouvám se a děkuji.

Andrea:

Ahoj,

zkouším uchodit Editor. Mám třídu AdminerCustomization, abych si mohla nastavit jméno DB apod a současně pluginy.

Chtěla bych používat 2 pluginy - tinymce a edit-calendar. Mám je vložené. Vložené jsou, ve zdrojovém kodu jsou.

Ale fungují divně. Plugin edit-calendar zobrazuje - Second, Millisecond, Microsecond a Time Zone - a to i přesto, že proměnnou $timeFormat = "showSecond: false, timeFormat: 'hh:mm'";  Zkoušela jsem jí i prázdnou proměnnou.

A pro změnu tinymce nefunguje vůbec. Položka v DB se jmenuje description_html. Cesty na js mám nastavené dobře.

Fakt už nevím co dělám špatně.

trestná smradlavice:

kosmetická úprava: při pokusu uložit tabulku bez žádných sloupců to hází nic neříkající chybu "Syntax error near ')' at line 3". Možná by stálo extra tento případ podchytit.

ikona Jakub Vrána OpenID:

Kvůli překlepu v regulárním výrazu chyba v Admineru 4.2.4 za určitých okolností setrvala. Proto jsem vydal verzi 4.2.5, která ji opravuje znovu a navíc znemožňuje přístup k SQLite bez přihlašovacích údajů. Pro práci s SQLite je proto nutné nyní implementovat metodu login() v rozšíření (http://php.vrana.cz/rozsireni-pro-adminer.php).

Andrea:

Ahoj,

používám Editor. Je bezva. Mám jen jeden malý problém. Položky v zobrazovaných tabulkách se třídí naprosto nečekaně. Některé tabulky mají položky zobrazené dle ID, jiné podle cizího klíče.

Především třídění podle cizího klíče je divné. Samozřejmě, že můžu změnit pořadí položek, pomocí ikonky u sloupečku, ale nešlo by to nastavit rovnou?

děkuju.

Andrea

ikona Jakub Vrána OpenID:

Položky se třídí podle prvního indexu definovaného pro danou tabulku.

Ardeniol:

Když kliknu na tabulku, tak bych spíš ocenil zobrazení dat, než strukturu dat.
Pochybuji, že většina lidí chce vidět strukturu, když to používá denně.

Data je to oč tu běží. Je to klik navíc, ale při denním používání, je stovky kliků (zbytečných) za měsíc.

ikona Jakub Vrána OpenID:

V levé navigaci je i odkaz pro vypsání dat. V přehledu tabulek se dá k vypsání dat dostat kliknutím na počet řádek.

zcepenělá paní:

Zdravím, Jakube.
Hlásím bug. Když se v názvu libovolného sloupce objeví " (např. na"me), nedá se editovat. Při editaci přes detailní stránku se hodnota uloží jako prázdná (podle typu 0, "", null), při editaci přímo v tabulce hodí chybu:

Unknown column 'na%22me' in 'field list'

Tip: Adminer pro sloupec vytváří editační políčko, s atributem - na detailní stránce - name="fields[em"ail]" nebo - v přímé editaci - name="val[&where%5Bid%5D=1][na"me]". Podobně, i select pro vložení funkce na detailní stránce (md5, now, null, atd.) má atribut name="function[em"ail]". Tj., uvozovka v názvu není escapovaná.

(Ano, je to velmi málo častý případ, ale přesto to píšu, protože asi nechceš, aby Adminer byl známý tím, že funguje jen někdy.)

ikona Jakub Vrána OpenID:

Díky za upozornění. Chová se takhle Chrome, který posílá hodnotu v poli name="fields[na%22me]", čemuž PHP nerozumí. Firefox ji posílá v poli name="fields[na\"me]", čemuž PHP rozumí. Nejlepší by bylo opravit to na úrovni PHP, ale zkusím s tím něco udělat i v Admineru.

ikona Jakub Vrána OpenID:

https://github.com/vrana/adminer/commit/7099560a

Martin:

Zdravím. Mám funkční MongoDB server a v PHP 7.1 i funkční MongoDB extension version 1.2.5, libbson bundled version 1.5.4. Však když v adminer-4.2.5 zvolím MongoDB (beta), objeví se mi hláška: Není dostupné žádné z podporovaných PHP rozšíření (mongo). ? Co je potřeba za jiné rozšíření? Děkuji.

ikona Jakub Vrána OpenID:

Současná implementace potřebuje tuhle extenzi: http://php.net/manual/en/book.mongo.php. Na https://github.com/vrana/adminer/pull/197 vzniká verze pro http://php.net/manual/en/set.mongodb.php. Autora jsem požádal, ať to spojí.

Diskuse je zrušena z důvodu spamu.

avatar © 2005-2024 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.