Registrován: 30 čer 2009 08:14 Příspěvky: 8618
|
Dobrý den, tento problém evidujeme u stále většího množství našich zákazníků. ZenCart bohužel obsahuje hodně bezpečnostních chyb, a proto u této aplikace dochází k častému napadení. Chyby jsou i v nejnovější verzi 1.3.8a. Po instalaci aplikace je nutné udělat dodatečné úpravy. Připravili jsme pro Vás přehled úprav pro verzi 1.3.8a. - !!! DŮLEŽITÉ !!! Přejmenujte adresář admin na složitější tvar (např. 5dS24y1admin).
- !!! DŮLEŽITÉ !!! Otevřte si soubor admin/includes/configure.php (5dS24y1admin/includes/configure.php) a upravte cestu k administraci na řádcích:
Kód: define('DIR_WS_ADMIN', '/admin/'); define('DIR_WS_HTTPS_ADMIN', '/admin/');
na Váš nový název. V našem ukázkovém případě bude úprava vypadat následovně:
Kód: define('DIR_WS_ADMIN', '/5dS24y1admin/'); define('DIR_WS_HTTPS_ADMIN', '/5dS24y1admin/');
- Změňte práva u souborů includes/configure.php a admin/includes/configure.php (5dS24y1admin/includes/configure.php) na 444.
- Smažte adresáře zc_install, docs, extras a soubor install.txt ze serveru.
- Pokud není eshop používán ke stažení produktů nebo médií, smažte adresáře download, media a pub. Poté v administraci vypněte stahování (Admin > Konfigurace > Attribute Settings > Enable Downloads přepněte na false).
- Smažte nepoužívané administrátorské účty (Admin > Nástroje > Nastavení administrace).
- Nastavte si složité heslo k administrátorskému účtu (např. 4sa2x1De6).
- Do všech složek, kde je umíštěný soubor index.html, vložte soubor .htaccess s tímto obsahem:
Kód: #.htaccess to prevent unauthorized directory browsing or access to .php files IndexIgnore */* <Files *.php> Order Deny,Allow Deny from all </Files> #add the following to protect against people discovering what version your spiders.txt file is <Files *.txt> Order Deny,Allow Deny from all </Files>
- Vypněte funkci Allow Guest To Tell A Friend (Admin > Konfigurace > Email Options > Allow Guest To Tell A Friend přepněte na false). Nepřihlášení uživatelé nebudou moci posílat nevyžádané emaily.
- Pro zamezení zjištění cest ke konfiguračním souborům, vložte (na začátek zdrojového kódu na nový řádek za <?php) do souborů admin/includes/initsystem.php, admin/includes/languages/english.php a admin/includes/languages/czech.php tento kód:
Kód: if (!defined('IS_ADMIN_FLAG')) { die('Illegal Access'); }
- Do složky includes/extra_configures nahrajte rozbalený soubor z archivu z adresy http://www.zen-cart.com/forum/attachmen ... 1222196725.
- Stáhněte si security patch z adresy http://www.zen-cart.com/forum/attachmen ... 1245902513 a celý obsah rozbaleného archivu nahrajte na server do kořenové složky instalace aplikace.
- Ochrana proti SQL napadení - vytvořte soubor includes/extra_configures/pci_patch_v13x_search.php s obsahem:
Kód: <?php if (isset($_GET['keyword']) && $_GET['keyword'] != '') { $count = substr_count($_GET['keyword'], '"'); if ($count == 1) { if(substr(stripslashes(trim($_GET['keyword'])), 0, 1) == '"') { $_GET['keyword'] .= '"'; } } $_GET['keyword'] = stripslashes($_GET['keyword']); } if (isset($_GET['sort']) && strlen($_GET['sort']) > 3) { $_GET['sort'] = substr($_GET['sort'], 0, 3); }
- Ochrana proti XSS a CSRF útokům - proveďte změny u těchto souborů:
admin/index.php (5dS24y1admin/index.php) - okolo řádku 135 najděte kód:
Kód: while (!$customers->EOF) { echo ' <div class="row"><span class="left"><a href="' . zen_href_link(FILENAME_CUSTOMERS ....
a upravte na:
Kód: while (!$customers->EOF) { $customers->fields['customers_firstname'] = zen_output_string_protected($customers->fields['customers_firstname']); $customers->fields['customers_lastname'] = zen_output_string_protected($customers->fields['customers_lastname']); echo ' <div class="row"><span class="left"><a href="' . zen_href_link(FILENAME_CUSTOMERS ....
admin/customers.php (5dS24y1admin/customers.php) - okolo řádku 1173 najděte kód:
Kód: default: if (isset($cInfo) && is_object($cInfo)) { $customers_orders = $db->Execute("select o.orders_id, o.date_purchased, o.order_total, o.currency, o.currency_value,
a upravte na:
Kód: default: if (isset($cInfo) && is_object($cInfo)) { if (isset($_GET['search'])) $_GET['search'] = zen_output_string_protected($_GET['search']); $customers_orders = $db->Execute("select o.orders_id, o.date_purchased, o.order_total, o.currency, o.currency_value,
admin/sqlpatch.php (5dS24y1admin/sqlpatch.php)- přidejte (bool) na řádku 808:
Kód: <?php if (isset($_GET['nogrants'])) echo '<input type="hidden" id="nogrants" name="nogrants" value="'.(bool)$_GET['nogrants'].'" />'; ?>
_________________ Radek Plašil Webhosting C4 https://www.c4.cz/
|
|