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: 8 (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.

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.