WebJET novinky 09/2019

Nová verzia WebJET 8.6 zlepšuje bezpečnosť a pripravuje sa na WebJET verzie 9.

Úpravy v editore stránok

Ako vždy začíname s úpravami v editore stránok, ktoré považujeme za najzaujímavejšie pre väčšinu z vás.

Optimalizácie pre vyhľadávače

Z dôvodu prípravy lepších textov pre vyhľadávače, sme do editora stránok doplnili nasledovné funkcie:

  • Varovanie pri titulku dlhšom ako 60 znakov (Google odporúča mať titulok stránky kratší ako 60 znakov).
  • Pridali sme možnosť nastaviť varovný text pre dĺžku textu vo voľnom poli (použitom napr. pre popis stránky). Varovanie môže zobraziť odporúčanie na dĺžku napr. popisu stránky, ale zároveň umožní zadať dlhší text (ak je to opodstatnené). Nastavuje sa cez editáciu textov ako možnosť editor.field_X.type vo forme text-250, warningLength-80 - čo znamená, že pole má max. dĺžku 250 znakov a varovanie sa zobrazí po zadaní 80 znakov. Hlásenie varovania je možné zmeniť v prekladovom kľúči editor.field_X.warningText.
  • Doplnené generovanie noindex, nofollow (nastavené v konf. premennej xRobotsTagUrls) pre sortovanie a generovanie XLS v tabuľkách displaytagu (aby sa zbytočne neindexovali sortovania tabuliek).

Podpora pre SVG obrázky

Pridali sme podporu vkladania SVG obrázkov cez /thumb servlet ak má img tag triedu fixedSize-w-h-ip. V takom prípade nemôže byť obrázok prefixovaný adresou /thumb, ale sa ponechá URL na SVG obrázok a nastavené w a h z CSS triedy fixedSize sa nastaví do polí šírka a výška obrázku.

Pre prípad chybného vloženia sme upravili /thumb servlet - ak sa požaduje zobraziť iný súbor ako typu jpg, png, gif a bmp, tak pôvodná verzia posielala chybu 404 (súbor nenájdený). Nová verzia odošle presmerovanie na adresu bez /thumb prefixu (čiže na pôvodný súbor).

Ďalšie úpravy editora

  • Editor - upravená funkcia odstránenia formátovania. Pre jednoduchosť stačí kliknúť kurzorom do textu, kde chcete odstrániť formátovanie a kliknúť na ikonu Odstrániť formátovanie. Automaticky sa odstráni formátovanie aktuálneho elementu (napr. odstavca) bez potreby jeho presného označovania.
  • Editor - opravené zobrazenie textarea elementu vo formulári v editore
  • História - opravené otvorenie editora z histórie zmien web stránky otvorenej cez ozubené koleso v zozname stránok
  • Hromadné operácie - opravené duplikované vykonanie hromadnej operácie
  • Import/export - upravený import pri prepísaní hlavného adresára. Zachovajú sa základné údaje, ako rodičovský adresár, ID hlavnej stránky adresára, ID šablóny, práva atď. (v tomto prípade nedôjde po importe k nechcenému presunutiu adresára do pôvodnej lokácie podľa ID rodičovského adresára).
  • ISVS - pridaná možnosť nastaviť pole Prehľad (sumár) tabuľky
  • ISVS - opravené zobrazenie titulku "Odkaz sa otvorí v novom okne"
  • PageBuilder - pridaná podpora zapnutia PageBuildera v inline editácii, ak názov šablóny obsahuje výraz PageBuilder (napr. Podstránka PageBuilder), alebo v šablóne v poli HTML kód je výraz PageBuilder (napr. komentár <!-- PageBuilder -->)
  • Page Builder - upravené názvoslovie CSS tried na ktoré sa Page Builder aplikuje, viď dokumentácia
  • Publikovanie stránky upravené tak, že sa z histórie zmažú len rozpracované verzie aktuálne prihláseného redaktora (nie všetky). Zamedzí to nechcenému zmazaniu rozpracovanej verzie stránky iného redaktora.
  • Šablóny - skupine šablón pridaná možnosť nastavenia editora štruktúry (na výber Page Builder alebo Grid Editor).
  • Šablóny - skupiny šablón - pridaná možnosť zobraziť vlastný formulár v ďalšej záložke editácie skupiny šablón. WebJET hľadá súbor, /components/INSTALL_NAME/admin/temps_group_properties.jsp ktorý následne vloží do druhej záložky. V tomto formulári je možné nastavovať vlastné parametre pre skupinu šablón (napr. nastavenie farieb, loga a podobne).
  • Skupiny šablón - upravené zobrazenie šablón v multiweb inštalácii - zobrazí sa len skupina 1 (nepriradené) a skupiny šablón začínajúce na doménový alias. Pri vytvorení novej skupiny šablón sa do názvu automaticky doplní doménový alias.
  • Zoznam stránok - pridaná možnosť Nastaviť ako hlavnú stránku adresára do vlastnosti stránky (v zozname stránok po kliknutí na ozubené koleso).
  • Zoznam stránok - pridané lepšie zobrazovanie chybovej hlásky pri práci v stromovej štruktúre (napr. ak používateľ nemá práva na presun adresára do určitého uzla).

Aplikácie

GDPR

Z dôvodu súladu s GRPD požiadavkami, sme vykonali niekoľko úprav, a to primárne z dôvodu zbierania cookies a zápisu štatistík:

  • Doplnené testovanie povolených štatistických cookies pre zápis štandardnej štatistiky vo WebJETe. Kým štatistické cookies nie sú povolené, nezapisuje sa ani štatistika. Je potrebné do stránky vložiť modul GDPR pre potvrdenie používania cookies, alebo nastaviť konf. premenné viď. nižšie, ktoré povoľujú zápis štatistík
  • Cookie bar - upravené tlačítko Akceptovať na základnej obrazovke. Po kliknutí naň sa povolia všetky typy cookies, po prechode na Možnosti sa povolia len zvolené skupiny (pre jednoduchšie akceptovanie všetkých cookies)
  • Teplotná mapa - doplnená kontrola povolenia štatistických cookies do modulu štatistika->teplotná mapa
  • Vypnutie GDPR - pridaná možnosť vypnúť kontrolu GDPR cookies nastavením konf. premennej gdprAllowAllCookies na true (napr.  v intranete, kde nechcete mať na stránke GDPR cookies lištu a chcete zaznamenávať štatistiku vo WebJETe)
  • Pridaná možnosť vkladať skripty ešte pred schválením použitia cookie (predvolený stav - akceptuj všetko) nastavením konf. premennej gdprInsertAllScriptsBeforeAccept (predvolene - false)

AMP

Formát AMP (Accelerated Mobile Pages) umožňuje extrémne rýchlo poskytovať web stránky optimalizované pre zobrazenie na mobilnom telefóne. Do WebJETu sme pridali podporu pre generovanie takýchto stránok, viac sa dozviete na samostatnom blog príspevku Rýchle webové stránky s AMP.

  • Pridaná možnosť cez BrowserDetector zapnúť AMP verziu nastavením forceBrowserDetector=amp
  • Pridané podpora generovania AMP verzie stránky, pri ktorej sa upraví HTML kód stránky podľa požiadaviek formátu AMP. Zoznam sekcií, na ktoré sa AMP verzia aplikuje je v konf. premennej ampObjects (štandardné len doc_dáta), ak potrebujete, môžete aplikovať aj na doc_header - hlavičku atď). Pre AMP verziu sa aktuálne upravuje IMG tag a odstraňujú sa script tagy, zvyšok v HTML kóde je ponechaný (základná verzia).

Mapa

Mapa - nová verzia s využitím OpenStreetMap. Cez konf. premennú mapProvider je možné prepínať medzi OpenStreetMap a GoogleMap (ten ale vyžaduje zadaný API kľúč v konf. premennej googleMapsApiKey).

Tlačové správy/novinky

Pridali sme nové možnosti vkladania značiek do šablón noviniek:

  • pridaná možnosť zobrazenia fotky autora, spoločne s možnosťou použitia predvolenej fotky -  $doc.getAuthorPhoto('/templates/assets/images/avatar.png') - kde sa obrázok /templates/assets/images/avatar.png použije, ak autor novinky nemá nastavenú fotografiu
  • Diskusné príspevky - pridaná možnosť získať priamo fotku autora diskusného príspevku (ako $forum.getAuthorPhoto('/templates/assets/images/avatar.png') - pridaný objekt getAuthor, ktorý vracia kompletný UserDetails objekt
  • Pridaný objekt dateTool (org.apache.velocity.tools.generic.DateTool) pre možnosť nastavenia formátovania dátumu (príklad použitia: $dateTool.format('dd.MMM', $doc.publishStart) pre formátovanie typu 15.máj)
  • Pridaná možnosť získania linky na hlavnú stránku adresára na objekte GroupDetails ako $group.getVirtualPath
  • Pridaný objekt totalCount s celkovým počtom noviniek

Ďalšie úpravy noviniek:

  • Novinky - pridané filtrovanie duplicít stránok aj vrámci jedného výpisu noviniek (nielen medzi viacerými aplikáciami novinky)
  • Novinky - pridaná možnosť filtrovania podľa "autora" stránky zadaného cez perex skupinu @menoautora (kódovaného ako URL parameter). Je teda potrebné vytvoriť perex skupinu @menoPriezvisko a následne do URL adresy pridať parameter author=menoPriezvisko. V novinkách sa zobrazia len web stránky, ktoré majú zadanú perex skupinu @menoPriezvisko. Prepojenie je takto cez perex zkupiny z dôvodu, že nie vždy je označený autor príspevku zhodný s redaktorom, ktorý príspevok v CMS vytvoril.
  • Novinky - pridaná možnosť behu aj na Microsoft SQL staršej ako 2012. V tomto prípade je potrebné nastaviť konf. premennú mssqlUseOldTopQuery na true. Nemusí byť ale následne správne zobrazené stránkovanie/počet noviniek na poslednej strane, preto verziu MSSQL staršiu ako 2012 neodporúčame používať.

Číselníky

Aplikáciu číselníky sme z dôvodu jej použitia na veľkom projekte postupne vylepšili o nasledovné možnosti:

  • Z dôvodu integrity existujúcich dát sme upravili možnosť mazania záznamu z číselníka. Fyzicky nedochádza k zmazaniu záznamu z číselníka, ale k označeniu záznamu ako neplatného. Nebude tak dochádzať k nedefinovaným stavom pri existujúcich záznamoch odkazujúcich sa na číselník.
  • Zväčšená dátová veľkosť reťazcov na 1024 znakov (z pôvodných 255)
  • Rozšírené na 10 stĺpcov pre reťazce, 4 číselné stĺpce, 4 boolean stĺpce a 4 dátumové stĺpce
  • Pridaná priorita usporiadania a odkaz na potomka

Ďalšie zmeny v aplikáciách

  • AB Testovanie - opravená detekcia B verzie stránok pri použití hviezdičkových URL adries.
  • Archív súborov - pridaná podpora do plno textového vyhľadávania - pre prípad súboru nájdeného v archíve súborov sa použije pekné meno súboru zadané v archíve namiesto priameho mena súboru
  • Archív súborov - pridané vytváranie kategórií v stromovej štruktúre
  • Archív súborov - pridaná podpora vytvárania odkazov na archív vo voľných poliach. Typ poľa (cez editácia textov, editor.field_X.type) je potrebné nastaviť na hodnotu file_archiv_link_insert_new
  • Archív súborov - pridaná podpora vyhľadávania v archíve podľa mena súboru v dialógu vloženia súboru do editora
  • Archív súborov - výber kategórie prerobený na výberové pole (z pôvodného textového poľa)
  • Audio prehrávač - opravené nastavenie veľkosti súboru potrebné pre iOS pre zobrazenie dĺžky mp3 súboru
  • Banner - opravený zápis štatistík videní (duplikovali sa záznamy s videním bannera v dni)
  • Cookies lišta - doplnená možnosť zadávať do nadpisu a textu aj úvodzovky
  • Cookies lišta - pridaná možnosť zadať aj HTML kód ako zobrazený text (napr. s odkazom na ďalšie informácie)
  • Formulár ľahko - pridaná možnosť písania názvov a popisiek cez wysiwyg editor (možnosť nastavenia základného formátovania ako tučné písmo, kurzíva, farba). Pri vytváraní HTML kódu vstupných polí je potrebné použiť {labelSanitized} na atribútoch id a name jednotlivých elementov (hodnota labelSanitized odstráni HTML kód z názvu).
  • Formulár ľahko - pridaná možnosť zadať úvodný (oslovenie) a koncový (podpis) text pre zobrazenie v emaile
  • Formulár ľahko - vizuálne vylepšené (posunuté tlačidlo odoslania napravo, doplnená ikona pre tooltip, doplnené vykonanie JS kódu tooltipu)
  • Formuláre - upravené hľadanie bloku s chybovou správou pomocou CSS triedy .cs-error-ID/MENO-elementu. Stará verzia hľadala element .cs-error v rodičovskom bloku, nová verzia umožňuje mať chybovú správu aj na inom mieste v HTML kóde.
  • Formuláre - upravené generovanie textovej verzie emailu - odstránené duplicitné medzery na koncoch riadkov, doplnené odoslanie ako textovej verzie aj z clustra (keď sa e-mail odosiela z CMS nodu, už nebude multipart, ale ako čistý text).
  • Formuláre - pridaná možnosť potvrdenia vyplnenia formuláru cez e-mail potvrdenie (double opt-in). Dosiahnete tak potvrdenie odoslania formuláru kliknutím na linku v e-maile a teda overíte, že návštevník, ktorý formulár vyplnil, zadal skutočne platnú e-mailovú adresu. Vo vlastnostiach formuláru je potrebné zvoliť možnosť Vyžadovať potvrdenie súhlasu e-mailom, vytvoriť stránku s textom e-mailu a jej doc-id nastaviť do poľa Doc ID notifikácie pre používateľa a do tejto stránky aj vložiť odkaz na stránku, kde bude potvrdenie súhlasu. Linka musí obsahovať parametre /potvrdenie-double-optin/?formId={FORM_ID}&optinhash={OPTIN_HASH}. V stránke s potvrdením súhlasu musí byť vložená aplikácia, ktorá súhlas na základe parametrov v databáze potvrdí.
  • Formuláre - opravené nastavenie prvej hodnoty v select boxe po resete formulára (nastaví sa prvá možnosť namiesto prázdnej hodnoty)
  • Formuláre - opravené odosielanie formulárov s prílohou na cluster prostredí (čaká sa na doručenie súboru na CMS nod)
  • Formuláre - pridaná možnosť nastaviť meno a e-mail odosielateľa, info e-mailu pre návštevníka z formulára globálne cez konfiguračné premenné formmailSendUserInfoSenderName a formmailSendUserInfoSenderEmail
  • Formuláre - pridaná nová možnosť Vytlačiť pri formulárovom prvku Tlačidlo
  • Formuláre - pridaná možnosť volania JS funkcie po odoslaní formuláru. Stačí zadefinovať JS funkciu formAfterSend(), ktorá sa po úspešnom odoslaní automaticky vyhľadá a ak existuje vykoná sa
  • Formuláre - pridaná možnosť vkladania vyplnených parametrov z formuláru do notifikácie pre používateľa (nastaveného cez parameter sendUserInfoDocId). Hodnoty sa zadávajú ako !MENO_PARAMETRA! do HTML kódu ďakovnej stránky
  • Galéria - pretty photo - pridaná možnosť zobrazenia dlhého popisu po kliknutí na fotografiu
  • Galéria - opravené prenášanie perex skupiny ak je v stránke viac galérií (perex skupina sa už použije len v galérii, kde je nastavená).
  • Hromadný e-mail - opravené nastavenie domény pre multidomain WebJET a prípad CMS nodu v clustri - použije sa názov správnej domény pre odoslanie e-mailu (podľa zaradenia stránky v štruktúre)
  • Hromadný e-mail - pridaná výnimka presmerovania domény z http na httpS ak sa jedná o generovanie hromadného e-mailu
  • Hromadný e-mail - opravené spustenie mailingu po jeho zadaní (pri volaní dotazu do DB dochádzalo k zaokrúhľovaniu času, a ten sa nepreniesol korektne a tým pádom sa kampaň nespustila)
  • Dotazník (kvíz) - pridaná možnosť zadávania obrázku k otázke. Zapne sa nastavením konf. premennej quizAdminShowImageUrl na true.
  • Otázky a odpovede - zrušený nadpis z formuláru pridania otázky, je lepšie ho mať priamo v stránke, kde je aplikácia vložená (dá sa lepšie upraviť)
  • Používatelia - pridaná možnosť prepísať údaje používateľa pri importe z Excel súboru (pre aktualizáciu údajov)
  • Presmerovania - pridaná možnosť vypnúť automaticky vytvárané presmerovania pri zmene URL stránky (napr. počas vývoja, keď sa robí veľa zmien v štruktúre). Stačí nastaviť konf. premennú editorDisableAutomaticRedirect na true
  • Štatistika - pridaná detekcia Windows 10 a MacOS 10.8+, upravený názov Macintosh na aktuálny názov macOS
  • Štatistika - upravená detekcia mobilných zariadení - pridaná možnosť tablet a phone, ktoré sa detegujú podľa výrazov ipad-tablet-kindle/iphone a v prípade android podľa pod. výrazu mobile v HTTP hlavičke User-Agent. Zrušený historický typ pda.
  • Thumb servlet - pridaná možnosť vypnúť oblasť záujmu pridaním parametra noip=true (vtedy sa pri generovaní thumb obrázka použije celá plocha bez ohľadu na nastavený bod záujmu)
  • Thumb servlet - pridaná podpora generovania PNG obrázkov (doteraz sa PNG generovali vo formáte JPG čo spôsobovalo problém v Internet Exploreri)
  • Thumb servlet - upravené generovanie názvu cache súboru aby obsahovalo aj farbu pozadia (aby sa korektne súbor pregeneroval po zmene farby pozadia)
  • Video - pridaná podpora vkladania Facebook video súborov do stránky. Ako adresu video súboru zadajte priamo adresu stránky na facebooku, ktorá sa vám zobrazuje pri pozeraní videa

Zlepšenie výkonu

  • Captcha - pridaná možnosť inicializovať invisible captcha až po kliknutí do formuláru. Funkcia je potrebná pre formulár vkladaný na každej stránke, (napr. formulár v pätičke, alebo skrytý formulár v dialóg vrstve), aby sa zbytočne captcha neinicializovala ak návštevník formulár nepoužije. Režim je predvolene zapnutý, dá sa vypnúť nastavením konf. premennej captchaLoadAfterFocus na false
  • Skripty - vypnuté cachovanie zoznamu skriptov, ak je prihlásený admin (aby sa zmeny prejavili hneď)
  • Spring - pridaná možnosť vypnutia hľadania spring aplikácií pri zobrazení stránky nastavením konf. premennej springEnableShowdoc na false (ak máte istotu, že sa Spring aplikácie nepoužívajú, zvýši to výkon servera)
  • Vyhľadávanie - upravený text Počet výsledkov na Približný počet výsledkov, keďže ten sa môže meniť podľa kontroly existencie súborov a kontrolovať to vopred by malo výrazný dopad na výkon vyhľadávania (ani Google neudáva presný počet výsledkov)
  • Vyhľadávanie - pridaná konf. premenná fileIndexerNoDataFileExtension, ktorou je možné nastaviť zoznam prípon súborov, pre ktoré sa nebude indexovať obsah súboru (ale potrebujeme index napr. kvôli štatistike stiahnutí). Ušetrí sa tak miesto v databáze a zlepší výkon.

Bezpečnostné vylepšenia

Vykonali sme bezpečnostné testy nielen štandardne generovaných stránok, ale aj zaheslovaných sekcií verejného webu (vrátane procesu prihlasovania a editácie profilu) a administrátorskej sekcie, kde sme sa zamerali na kontrolu práv a možnosti zneužitia po napadnutí napr. XSS útokom. Odstránili sme aj staré a už nepoužívané súbory v /admin sekcii.

V rámci kontroly práv v administrácii sme pridali možnosť jednoducho kontrolovať práva na modul zápisom typu <iwcm:checkLogon perms="cmp_form"/>, ktoré ak redaktor právo nemá presmeruje na úvodnú stránku.

Vykonali sme aj aktualizáciu knižnice jQuery na verziu 3.3.1 (z 1.12.4), jQuery UI a Bootstrap na aktuálnu verziu, knižnice Spring z 4.3.1 na 5.1.1. To má dopad na JPA Beany - je potrebné doplniť anotáciu na dátumové položky. Atribútom typu @Column(name...) private Date modified; je potrebné pridať ešte anotáciu @Temporal(TemporalType.TIMESTAMP). Aktualizovali sme aj knižnicu javax.persistence API z 2.0 na 2.2 a verziu knižnice JPA na 2.7.3.

Dôležitá je aj zvýšená ochrana proti XSS útokom - dáta čítané z databázy sú automaticky filtrované, aby nebolo možné vkladať HTML kód do stránky. Zoznam výnimiek (databázových stĺpcov, ktoré môžu obsahovať HTML kód) sa nastavuje v konf. premennej xssHtmlAllowedFields.

Pridali sme aj ochranu pred potencionálne citlivými údajmi ponechanými na obrazovke. Často sa vám stane, že máte otvorenú administráciu vo viacerých záložkách a v jednej z nich sa odhlásite. Na ostatných záložkách ale môžu zostať citlivé informácie. Pridali sme presmerovanie na prihlasovaciu obrazovku po zrušení session. Presmerovanie na úvodnú stránku nastane 5 minút po zrušení session (aby ste mohli, v prípade potreby, skopírovať rozpracované údaje).

Kontrola refeRer hlavičky

Z dôvodu ochrany vykonania operácií vo WebJETe vložením kódu do cudzej stránky (útok typu CSRF), sme pridali kontrolu referer hlavičky (obsahuje adresu stránky, z ktorej sa vykonáva preklik na aktuálnu stránku) aj pre štandardné web stránky. Hlavička referer sa kontroluje pri vykonaní HTTP POST alebo pre všetky HTTP požiadavky na URL, končiace na .do alebo .action.

Je možné nastaviť nasledovné výnimky (konf. premenné):

  • xsrfUrlException - zoznam URL adries pre ktoré sa ochrana nepoužije
  • xsrfParamNameException - ochrana sa vykoná len keď HTTP požiadavka obsahuje nejaké parametre, pričom v konf. premennej je možné definovať zoznam parametrov, ktoré sa preskakujú (systémovo sú definované parametre ako docid, forward atď)
  • xsrfReferers - výnimka sa dá nastaviť aj na referer domény v konf. premennej, kde je predvolene pridaná doména seznam.cz a google (aby fungovali odkazy z vyhľadávačov)

Bezpečnosť hesiel

Na základe penetračných testov sme ako ochrana pred možným kompromitovaním konta, pridali povinnosť zadať staré heslo pri editácii profilu (na verejnej zóne). Po nasadení verzie 8.6 je potrebné upraviť custom registračné formuláre (ak také vo WebJETe máte) a doplniť pole pre zadanie pôvodného hesla (viď /components/user/newuser.jsp input pole usr.oldPassword).

Pre prihlásenie administrátora sme pridali možnosť vynúteného nastavenia dvoj-faktorovej autorizácie. Zapne sa nastavením konf. premennej isGoogleAuthRequiredForAdmin na true. Následne pri prihlásení používateľa, ktorý nemá nastavenú dvoj-faktorovú autorizáciu, sa zobrazí QR kód na jej nastavenie.

Pridali sme aj odhlásenie administrátora zo všetkých prehliadačov po zmene hesla. Nestane sa, že útočník naďalej používa autorizovanú session, aj keď heslo bolo medzi tým zmenené.

Ďalšie úpravy súvisiace s bezpečnosťou hesiel a prihlasovaním:

  • Administrátor - upravená zmena profilu administrátora, pokiaľ nemá oprávnenia na modul Používatelia - pri zmene hesla je potrebné zadať staré heslo
  • Administrácia - po zmene hesla používateľa sa odhlási z ostatných session (prehliadačov)
  • Cookie - zlepšená kontrola session cookie (zviazanie na IP adresu), pridaná kontrola viacerých URL adries a kontrola na všetky iné ako http GET metódy
  • Upravili sme hlásenie pri zabudnutom hesle (forget_password.jsp), aby nebolo možné identifikovať, či dané konto existuje, alebo nie
  • Prihlasovanie - pridali sme zrušenie pôvodnej session pri prihlásení (vykoná sa pri prvom odoslaní prihlasovacích údajov)
  • Prihlasovanie - pridaná možnosť nastaviť zoznam session objektov, ktoré zostanú zachované po prihlásení. Nastavujú sa v konf. premennej logonPreservedSessionObjects (predvolene nastavené na adminAfterLogonRedirect,BasketDB.browserIdSession)
  • Prihlasovanie (verejný web) - pridaná možnosť vyžadovania captcha pri prihlasovaní. Zapne sa pridaním hodnoty usrlogonform do konf. premennej captchaComponents
  • Registrácia používateľa - doplnená SPAM ochrana (aby nebolo možné strojovo registrovať veľké množstvo používateľov). Špeciálne limity je možné nastaviť cez konf. premenné spamProtectionHourlyLimit-userform a spamProtectionTimeout-userform.
  • Registrácia používateľa - pridaná možnosť ochrany registrácie cez Captcha test. Stačí do konf. premennej captchaComponents pridať hodnotu userform
  • Registrácia používateľa - pridaná serverová validácia e-mailu a telefónneho čísla (ak je povinné). Telefón sa validuje voči regulárnemu výrazu zadanému v Ovládací panel->Formuláre->Regulárne výrazy s kódom phone
  • Facebook - pri prihlasovaní cez Facebook sa nezobrazuje pri editácii profilu povinnosť zadať staré heslo, keďže používateľ počas prihlasovania heslo nezadáva. Takýto používateľ sa identifikuje pomocou používateľskej skupiny, ktorej ID je definované v konf. premennej socialMediaUserGroupId
  • Autorizácia - predvolene sa pri autorizácii používateľa generuje nové heslo. Nastavením konf. premennej authorizeRegeneratePassword na false, sa nové heslo nebude generovať, ale zároveň v autorizačnom e-maile nemôže byť posielané heslo (keďže WebJET ho nevie zistiť). Takéto nastavenie sa dá použiť, ak používateľ zadáva heslo pri registrácii a je povolené toto heslo po schválení používať (nechceme vynútiť overenie e-mail adresy resetom hesla).

Ďalšie bezpečnostné zmeny

  • Archív súborov - doplnené auditovanie všetkých zmien
  • Cleditor - Otázky a odpovede - v mini WYSIWYG editore, ktorý sa používa pre Otázky odpovede a ďalšie časti WebJETu bolo pridané čistenie HTML kódu (odstránenie style elementov) pri vkladaní napr. z Wordu. Na stránku sa tak nedostane nebezpečné formátovanie
  • Cleditor - aktualizovaná verzia editora s podporou IE11
  • Combine.jsp - upravená kontrola custom verzií JSP voči zoznamu povolených URL (combineEnabledJsps). Porovnáva sa vždy pôvodná verzia, aby sa dal ľahko spraviť custom verzia napr. page_functions.js.jsp bez potreby implicitného uvedenia custom verzie do zoznamu combineEnabledJsps.
  • Editor stránok - upravené auditovanie, aby bolo možné zistiť, či sa jedna o novú stránku, alebo o upravenú stránku (pridaním (newpage) do auditného záznamu).
  • Export do excelu - v zozname používateľov a formulárov pridaná ochrana pred vykonaním cmd príkazu v Excel exporte.
  • Hromadný e-mail - zrušené vkladanie jQuery knižnice do e-mailu (podľa parametra isDmail=true)
  • Monitorovanie servera - pre službu uptimerobot.com pridaná výnimka - povolenie HEAD http metódy, ktorú služba používa
  • Novinky - opravené uzatváranie DB spojenia v novinkách (velocity) pri nesprávnom DB dotaze.
  • NTLM - pridaná možnosť definovať viacero admin skupín v konf. premennej NTLMAdminGroupName (zoznam skupín oddelených čiarkou)
  • NTLM - pri nastavení konf. premennej NTLMcompareUserPermGroups na true sa nebudú porovnávať voči AD skupinám používateľské skupiny, ale skupiny práv
  • Odhlásenie - pridaná možnosť nastavenia linky na odhlásenie z admin časti, cez konf. premennú adminLogoffLink (predvolené /logoff.do?forward=/admin/)
  • Presmerovanie domén - pre presmerovanie typu ALIAS sa nepoužijú následne presmerovania cieľových domén (napr. vynútenie httpS spojenia). Napr. pri zadefinovaní presmerovania domena.sk->https://domena.sk a zároveň aliasu aliasdomeny.sk->domena.sk nebude dochádzať pri prístupe k aliasdomeny.sk k presmerovaniu na https://domena.sk. Ak je vystavený certifikát aj pre aliasdomeny.sk je možné presmerovanie na httpS verziu nastaviť samostatne.
  • Súbory - opravené zobrazenie prihlásenia pre súbory v chránených adresároch. Zobrazí sa prihlásenie cez štandardnú komponentu /components/user/logon.jsp, namiesto starej komponenty /logon.jsp
  • Súbory - opravená kontrola práv pre súbory v adresári /files/protected/. Pôvodne sa predpokladalo hľadanie zhody v názve skupiny, práva je ale možné nastaviť špeciálne (na inú skupinu ako je názov adresára). Teraz sa kontrolujú obe možnosti.
  • Súbory - pri reindexácii súborov sa zachová ID používateľa, ktorý súbor vytvoril.
  • Vyhľadávanie - opravené generovanie náhľadu textu vo výsledkoch vyhľadávania tak, aby sa do textu negenerovala časť INCLUDE parametrov
  • Web stránky - opravená kontrola práv pre stránky vo viacerých adresároch (multi kategórie), ak používateľ nemal právo na hlavný adresár
  • XSS - pri detekcii XSS útoku v niektorom parametri, sa do presmerovania neprenesú parametre obsahujúce v názve password, email, phone, login, aby sa potencionálne citlivé informácie nezaznamenali do access logu
  • XSS - opravené nastavenie HTTP hlavičky X-XSS-Protection pri náhľade stránky v editore (aby bolo korektne možné stránku zobraziť, ak podľa prehliadača obsahuje podozrenie na XSS útok).
  • XSS - upravené získanie serverName z HTTP hlavičky x-forwarded-host, aby nebolo možné vykonať XSS útok.

Systémové zmeny

WebJET 8.6 je pripravený na prevádzku s aplikačným serverom Tomcat 8.5 alebo novším. Ten zmenil spracovanie symbolických liniek na Linuxovom prostredí, čo spôsobovalo nekompatibilitu s WebJETom (zlé určenie URL adresy súboru). V predchádzajúcich verziách bolo možné použiť konf. premennú symlinkTranslate na "opravu" chybne vytvorených ciest k súboru, WebJET 8.6 upravil spôsob získania cesty a vie sa s týmto problémom vysporiadať automaticky.

Tomcat 8.5.39 obsahuje chybu, ktorá neumožňuje nastaviť HTTP hlavičky so status kódom pri generovaní 404 stránky. V tejto verzii sa teda nevykonávajú korektne presmerovania. Upravili sme kód stránky 404 tak, aby sa vygeneroval aj HTML kód, ktorý presmerovanie vykoná (ak sa nepodarí presmerovanie pomocou HTTP hlavičky).

Tiež sme pridali možnosť programovania importu z xlsX súborov implementovaním triedy sk.iway.iwcm.ExcelXImport. Pôvodné importy xls formátu zostávajú zachované, jednoduchou úpravou kódu (nahradením ExcelImport za ExcelXImport) je možné zmeniť podporu na xlsX súbory (API je rovnaké pre oba prípady).

Logovanie

Vykonaný prechod na log4j štandard logovania. V konf. premennej logLevels je možné nastaviť zoznam Java packages a ich úrovni logovania, napr.:

sk.iway=DEBUG
sk.iwat.iwcm=WARN
org.springframework=WARN

Konfiguračná premenná logLevel nastavuje logovanie pre package sk.iway, nastaví sa pred hodnotou v premennej logLevels. Dynamické prepínanie cez parameter _logLevel teda zmení celý package sk.iway.

Vizuálne úpravy

Spravili sme niekoľko vizuálnych úprav pre zlepšenie použiteľnosti WebJET CMS:

  • Administrácia - vizuálne upravené zobrazenie jednotlivých aplikácií a častí - znížená výška hlavičky pre viac informácií na stránke, zrušené záložky kde nedávali praktický zmysel, zrušený zalomený roh vpravo hore (bol náročný na rendering v prehliadači)
  • Editor - opravené zobrazenie v popup okne (prekrývanie záložiek s titulkom stránky)
  • Logo - vymenené logá WebJET za nové, vrátane detekcie MSG a NET.
  • Pomocník - upravené zobrazenie v CZ a EN verzii (modré pozadie v obsahu)
  • Pomocník - pridaná možnosť zobrazenia manuálu k danému webu v pomocníkovi. Stačí uložiť súbor (napr. pdf) do adresára /components/INSTALL_NAME/admin/help/manual a v pomocníkovi sa zobrazí ďalšia sekcia Manuál k vášmu webu.

Ďalšie systémové zmeny

  • Formuláre - pridaná možnosť doplniť hodnoty polí na serverovej strane po odoslaní formuláru pomocou interceptora implementujúceho interface FillRequestInterceptor. Umožní to zjednodušiť zadávanie údajov zložitých formulárov, kde namiesto zadávania zoznamu napr. registrovaných používateľov na konferenciu (meno, priezvisko, e-mail) je možné zoznam importovať z Excelu. Nastaví sa skrytým poľom s názvom fillRequestInterceptorClass, kde je zadané FQDN meno triedy, ktorá sa vykoná. Je možné importovať aj XLS súbor, z ktorého sa môžu načítať dáta, a tie vložiť do polí formuláru. Súbor musí byť v input poli typu file s názvom fillRequestInterceptorFile
  • Konfigurácia - pridané premazanie cache po zmene konf. premennej multiDomainFolders (už nie je vyžadovaný reštart aplikačných serverov)
  • JPA - upravili sme JPA beany používajúce sequenciu na autoincrement, sequencia sa používa len pre Oracle. Dôvodom je, že Microsoft SQL 2012+ začalo poznať sequencie a používalo ich namiesto identity, aj keď sequencie historicky pre MS SQL neboli vytvorené. Stará verzia 2008 vždy použila identity, keďže sequencie nepoznala
  • JPA - upravená inicializácia JPA tried - hľadajú sa triedy podľa anotácie a nie podľa názvu súboru
  • Ninja - upravený browser detector z implementácie net.sf.uadetector na štandardný WJ BrowserDetector
  • Súbory - upravené poskytovanie súborov (pri zapnutom enableStaticFilesExternalDir na true) z jednoduchého odoslania súboru na korektné spracovanie Range requestov (vyžadované pri prehrávaní mp3 súborov na MacOS/iOS)
  • JarPackaging - pridaná podpora uchovania JSP súborov admin a components adresára v JAR súbore (v podadresári META-INF/resources). Funkcia umožní vytvárať projekty závislé na WebJETe bez JSP súborov WebJETu priamo v projekte. Súbory je potrebné uložiť do JAR archívov /WEB-INF/lib/1webjet-admin.jar a /WEB-INF/lib/1webjet-components.jar, pri štarte sa archív components detekuje a automaticky sa zapne podpora. Automaticky sú vylúčené súbory /components/INSTALL_NAME.
  • Tomcat7 - pridaná automatická detekcia Tomcat7 a inicializácia Springu bez components adresára s podporou JSP súborov
  • Vue.js - pridaná TLD knižnica vue.tld pre podporu generovania vue komponent (vue:text, vue:checkbox, vue:radiogroup, vue:checkboxgroup, vue:messages, vue:textarea, vue:select, vue:datetime, vue:currency, vue:address, vue:map)

Iné zmeny (changelog)

Ostatné zmeny z changelogu, ktoré nie sú uvedené vyššie.

  • 404 - pridaná kontrola platnosti (vypnutia zobrazenia) 404.html sránky
  • Basket / nákupný košík - upravené pripísanie sumy z platobnej brány - suma sa pripíše aj ak je vyššia (do jedného eura) z dôvodu napr. zaokrúhľovania.
  • Editor - opravené nahrávanie obrázkov pretiahnutých priamo do textu v editore
  • Editácia textov - upravený import/export textov obsahujúcich znak \n priamo v texte, pri importe nebude tento znak zamenený za nový riadok, ale zachovaný priamo ako \n ako bol pôvodne zadaný
  • Multidomain - opravená chyba poskytovania obrázkov/súborov pre multidomain WebJET pri použití doménových aliasov na obrázky/súbory
  • Používatelia - registračný formulár - opravený test existencie fotografie používateľa pri editácii profilu
  • Používatelia - pridaná možnosť volať vlastnú Java metódu po zmazaní používateľa. Nastaví sa v konf. premennej userAfterDeleteMethod, ktorá dostane ako parameter objekt UserDetails, ktorý sa maže. Je tak možné zmazať aj dodatočné dáta používateľa v danej inštalácii.
  • Updatedb - opravené sortovanie naposledy vykonaných SQL príkazov podľa dátumu vykonania

Príprava pre WebJET 9

Z dôvodu prechodu na WebJET CMS verzie 9, sme museli v zdrojovom kóde vykonať viacero zmien. Verzia 9 je v znamení "zmien pod kapotou" ako to označuje spoločnosť Apple. Tie navonok nie sú vidieť, ale umožnia nám jednoduchší prechod na novú verziu. Snažíme sa odstrániť staré technológie tak, aby WebJET verzie 9 bol moderný nielen z vizuálneho smeru, ale aj z toho na pozadí.

Od počiatku WebJET CMS sme používali framework Struts, ktorý v dobe jeho vzniku bol najpoužívanejší. Dnes ale existujú modernejšie frameworky ako Spring a teda Struts framework, odstraňujeme ako prvý.

  • Editor - veľká zmena API načítania a ukladania dát editora stránok zo starej verzie v Struts frameworku na REST službu
  • Klonovanie štruktúry - upravené na API EditorForm (bez potreby volania Struts Action tried)
  • Prerobený /formmail.do a /admin/multiplefileupload.do zo Struts frameworku na štandardný Servlet. Po aktualizácii je potrebné preveriť funkčnosť formulárov (týka sa hlavne štandardného odoslania formuláru) a nahrávanie súborov napr. vo fotogalérii
  • Prihlasovanie do admin časti zmenené na novú verziu cez Spring (odstránené používanie starého Struts frameworku)
  • Prihlasovanie - zladené ukladanie prihláseného používateľa do WebJETu a do Springu do jednej spoločnej metódy LogonTools.setUserToSession, aby nedochádzalo k rozdielom prihlásenia. Pre REST služby doplnená prihlasovacia obrazovka do admin časti.
  • Prihlasovanie - SPRING - doplnená detekcia podľa /admin URL, detekuje či sa má prihlásiť používateľ ako admin, alebo ako bežný návštevník
  • Prerobené odhlasovanie (LogoffAction->LogoffServlet), náhľad stránky (PreviewAction->PreviewServlet), zobrazenie stránky (ShowdocAction->doc.ShowDoc), mazanie stránky (DeleteAction->DeleteServlet) zo Struts na Servlety. V zátvorkách sú uvedené náhrady pôvodnej Java triedy za novú.

Postupne sme upravili aj viacero tabuliek v administrácii na modernú verziu dátovej tabuľky. Datatables knižnica umožňuje jednoduché filtrovanie a usporiadanie podľa stĺpcov priamo v prehliadači bez potreby odosielania dát na server. Práca je teda rýchlejšia a efektívnejšia.

  • Anketa - prerobený zoznam ankiet do datatables
  • Editácia textov - prerobené na datatables pre jednoduchšie použitie
  • Formuláre + zoznam regulárnych výrazov - prerobené do datatables zobrazenia s filtrom nad stĺpcami
  • Kalendár udalostí - upravené zobrazenie na datatable, vizuálne upravené
  • Konfigurácia - prerobené do datatables s vyhľadávaním priamo nad stĺpcami
  • Otázky a odpovede - zoznam v admin časti upravený na datatables
  • Presmerovania domén - upravené na datatables
  • Rezervácie - upravené zobrazenie na datatable, vizuálne upravené
  • Tooltip - upravené zobrazenie na datatable, vizuálne upravené
  • Úlohy na pozadí - upravené na datatables
  • Vkladanie skriptov - upravené zobrazenie na datatable, vizuálne upravené

© 2019 InterWay, a. s. Všetky práva vyhradené | Ochrana osobných údajov
Tieto stránky generuje redakčný systém WebJET.