WebJET novinky 07/2020

Nová verzia WebJET 8.7 zlepšuje šifrovanie formulárov, bezpečnosť a obsahuje mnoho úprav "pod kapotou".

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

Okrem menších zmien sme vylepšili pôvodnú možnosť synchronizácie mena adresára a hlavnej web stránky adresára:

  • Web stránky - pridaná nová konfiguračná premenná syncGroupAndWebpageTitle (predvolené true) zabezpečujúca synchronizáciu mena adresára a hlavnej stránky adresára. Pôvodne bola táto funkcia spojená s konfiguračnou premennou groupCreateBlankWebpageAfterCreate, čo nebolo vždy vyhovujúce.

Ďalšie úpravy editora

  • Editor - fotobanka - zväčšená šírka obrázkov z fotobanky na 1280 bodov pre lepšie použitie v banneroch.
  • Editor - pridaná možnosť kliknutím na ikonu zväčšiť pole HTML kód do hlavičky pre možnosť zápisu veľkého HTML/JavaScript kódu.
  • Web stránky - adresár - pridaná možnosť adresára nastaviť checkbox "Vynútiť zvolenú šablónu adresára pri zobrazení stránky", kedy sa pri zobrazení stránky z tohto adresára použije nastavená šablóna adresára bez ohľadu na aktuálnu šablónu stránky. Umožní to mať napríklad pri uložení web stránky do viacerých adresárov (multikategórie) stránky s rôznymi šablónami.
  • Web stránky - multigroup - pri zmazaní stránky sa zmaže aj referencia z multi skupín (akje web stránka umiestnená vo viacerých adresároch).
  • Web stránky / Adresár - Opravené časovanie zmien publikovania adresára.
  • Web stránky - upravené autocomplete pri písaní URL adresy do poľa DocID/adresa tak, že pre multidomain WebJET sa zobrazia len URL adresy aktuálnej domény.
  • Web stránky - opravená zmena poradia s využitím drag & drop pri web stránke vo viacerých adresároch (multikategórie). Poradie sa nastaví len stránke v aktuálnom adresári (nie všetkým kópiám).
  • Klonovanie štruktúry - opravené nastavenie dátumu pre priložené médiá k stránke (dátum sa nenastavil a tým pádom sa naklonované médiá nezobrazovali).
  • Navigačná lišta (breadcrumb) - opravené zdvojené lomítka v URL adrese stránky končiacej na znak *.
  • PageBuilder - upravená cesta pre získanie blokov na /templates/ADRESÁR_SKUPINY_ŠABLÓN/pagebuilder/, pridanie podadresára podľa nastavenej konfiguračnej premennej installName alebo logInstallName sa deje automaticky.
  • Page builder - pridané štandardné stĺpcové bloky.
  • Šablóny - doplnené automatické dohľadávanie súborov v /templates/ adresári rovnako ako pre /components/ adresár, vrátane možnosti hľadania podľa logInstallName.

Aplikácie

GDPR

Spravili sme niekoľko vylepšení v aplikácii GDPR:

  • Pridaná možnosť nastavenia počtu dní na zmazanie emailov cez konfiguračnú premennú gdprDeleteEmailsAfterDays (doteraz sa mazali všetky emaily), upravené na mazanie len neodoslaných emailov (aby sa náhodou nezmazal email, ktorý sa zatiaľ nepodarilo odoslať kvôli chybe SMTP servera).
  • Upravené načítanie dát - zoznam používaných cookies a ich popis sa načíta až pri zobrazení detailu, zbytočne sa tak negeneruje do HTML kódu a stránka má menšiu veľkosť.

Ďalšie zmeny v aplikáciách

  • AB Testovanie - vypnutá možnosť zobrazenia B verzie stránky, ak je zmazaná, ale stále v koši (B verzia sa už nebude zobrazovať, stránka bude považovaná za neplatnú).
  • AB Testovanie - vypnuté vkladanie B verzie do mapy stránok (B verzia sa nezobrazí v mape stránok).
  • Archív súborov - opravené vyhľadávanie archivovaných verzii súborov (zobrazenie korektného mena a názvu súboru).
  • Číselníky - upravený import numerickej hodnoty z excelu (akceptovanie medzery v čísle / formátovaného čísla).
  • E-shop - pridaná možnosť použitia ceny podľa prvej spárovanej skupiny používateľov (keď je cena zadaná vo forme cena;idskupiny:cena2;idskupiny2:cena3) namiesto minimálnej ceny (keď je napríklad maloobchodná cena z nejakého dôvodu nižšia ako štandardná veľkoobchodná). Režim sa zapne nastavením konfiguračnej premennej basketUseFirstUserGroupPrice na true.
  • Export dát - opravená editácia záznamu, opravené nastavenie veľkosti stránky.
  • Formuláre - pridaná možnosť vypnúť checkform (vstavanú kontrolu vyplnenia polí) na celom formulári pridaním CSS triedy noCheckForm na form tagu.
  • Formuláre - pridané lepšie generovanie label poľa pre radio buttony - ak názov poľa končí na _rb tak do generovaného emailu sa ako label hodnota použije label pre pole bez _rb na konci (čiže pre popis).
  • Formuláre - opravená archivácia formulárov (presun formuláru do archívu, kedy sa nekorektne vytvoril riadiaci riadok so zoznamom stĺpcov).
  • Formuláre - upravená veľkosť poľa textarea v emaile (zobrazuje sa podľa textu, pôvodná verzia zobrazila pole ako jednoriadkové).
  • Formuláre - pridaná podpora vkladania viacerých súborov k formuláru cez atribút multiple="multiple" v input poli pre formuláre (<input type="file" name="file" multiple="multiple"/>).
  • Galéria - photoSwipe - upravená linka na stiahnutie originálu obrázku tak, aby vrátila skutočný o_ obrázok.
  • Galéria - stránkovanie sa nezobrazí ak galéria obsahuje menej obrázkov ako je nastavená veľkosť jednej stránky.
  • Mapa - pridaná podpora vkladania OpenStreetMap do bootstrap dialógu (reinicializácia veľkosti mapy po otvorení dialógu).
  • Navigačná lišta (breadcrumb) - upravený navbar separátor zo znaku > na &gt; aby bol generovaný korektný HTML kód (konfiguračná premenná navbarSeparator).
  • Navigačná lišta (breadcrumb) - schema.org - pre verziu navbaru schema.org už nie je medzi LI elementy generovaný kód nastavený v konfiguračnej premennej navbarSeparator (spôsobovalo to nevalidnosť HTML kódu). V prípade potreby zobrazenia oddeľovačov medzi elementami je potrebné použiť CSS :after alebo :before elementy.
  • Navigačná lišta (breadcrumb) - upravené generovanie navigačnej lišty vo formáte schema.org - doplnený chýbajúci element "span itemprop=name" okolo názvu stránky.
  • Novinky - pridaná možnosť nastavenia perex skupín pre filtrovanie URL parametrom. V parametri requestPerexGroupsName je potrebné zadať meno parametra, v ktorom budú odoslané ID perexy skupín. Takto sa neovplyvňujú jednotlivé news komponenty navzájom.
  • Presmerovanie - pridaná podpora nastavenia časovania presmerovaní do budúcnosti (podľa dátumu a času), pre funkčnosť vyžaduje nastavenie CRON úlohy sk.iway.iwcm.systém.UrlRedirectDB, ktorá maže cachované záznamy po zmene dátumu.
  • Rezervácie - opravené kliknutie na ceruzku v zozname rezervačných objektov.
  • Štatistika - opravené nastavenie ID adresára pri štatistike Odkiaľ prišli pre filtrlovanie podľa adresára.
  • Vyhľadávanie - po zapnutí konfiguračnej premennej fulltextIncludeKeywords na true sa do indexu pre vyhľadávanie pridávajú aj kľúčové slová (názvy perex skupín). Skupinám začínajúcim na znak #,@,_ sa odstráni prvý znak, aby sa lepšie dali vyhľadávať ako slovo.

Zlepšenie výkonu

  • 404 stránka - limit, pre ktorý sa začne zobrazovať zjednodušená 404 stránka, je možné nastaviť cez konfiguračnú premennú spamProtectionHourlyLimit-404. Hodnota sa použije, ak je väčšia ako 150.
  • Monitorovanie/výkon/databáza - pridaná možnosť odoslať notifikačný email pri výskyte chyby zaplneného databázového poolu (nedostatok databázových spojení). Email adresa pre takýto prípad sa nastavuje v konfiguračnej premennej dbPooleErrorTimeoutNotificationEmail.
  • Novinky - odstránená interná cache zoznamu noviniek, keďže kľúč nereflektoval na všetky filtrovacie možnosti. Namiesto toho sa používa štandardná cache cez parameter komponenty cacheMinutes.
  • Range Request - opravené prehrávanie video súborov (mp4) na iPhone s využitím DB storage / využitia externého adresára (iOS vyžaduje podporu range requestov pri prehrávaní multimédií).
  • Optimalizovaná rýchlosť štartu WebJETu: optimalizovaná rýchlosť aktualizácie databázy (načíta sa vopred kompletný zoznam už vykonaných SQL príkazov), optimalizovaná rýchlosť načítania konfigurácie (načíta sa vopred celý zoznam z conf tabuľky), optimalizovaná rýchlosť inicializácie PkeyGeneratora (overenie max hodnoty v DB tabuľke sa vykoná až pri prvom volaní getNextValue).
  • Web stránky - editácia adresára - opravené nastavenie práv na podadresáre po zaškrtnutí možnosti Nastaviť práva aj existujúcim podadresárom (práva sa nastavili, ale cache sa neobnovila).

Bezpečnostné vylepšenia

Vykonali sme ďalšie bezpečnostné testy. Najväčšou novinkou je ochrana formulárov v administrácii pomocou CSRF tokenov.

  • Pridaná ochrana struts formulárov v administrácii cez CSRF tokeny. Ak je vytvorený formulár manuálne je potrebné do neho pridať skryté (hidden) pole: <%=org.apache.struts.taglib.html.FormTag.renderToken(session)%>.
  • Výnimky URL, pre ktoré sa kontrola nemá vykonať, je možné definovať v konfiguračnej premennej xssProtectionStrictPostUrlException.

Ďalšia zásadná zmena je zapnutie XSS ochrany aj na databázových JPA entitách. Ak sa vám po aktualizácii začne na niektorych miestach zobrazovať HTML kód namiesto formátovaného textu, skontrolujte Java kód používaných JPA entít.

  • Bezpečnosť - zapnutá XSS ochrana aj na JPA entitách. Stĺpce, ktoré môžu obsahovať HTML kód, je potrebné anotovať @javax.persistence.Convert(converter = AllowHtmlAttributeConverter.class).

Vo verzii WebJET 8.7 sme zladili prihlasovanie medzi WebJETom a Spring REST službami. Nemalo by teda dochádzať k rozdielom v prihlásení do web stránky a pri volaní REST služieb.

  • REST - opravená kontrola práv pre REST volania pokiaľ nenastalo prihlásenie do /admin časti (až vtedy sa inicializoval korektný spring security context).

Pridali sme aj možnosť nastaviť http hlavičku Feature-Policy:

  • Bezpečnosť - pridaná možnosť nastaviť http hlavičku Feature-Policy (napr.: microphone 'none'; geolocation 'none')

Pridali sme možnosť definovať IP adresy, pre ktoré sa nebudú aplikovať limity SPAM ochrany:

  • Spam ochrana - pridaná možnosť vypnúť limity spam ochrany (počet odoslaní / timeout medzi odoslaniami) pre definované IP adresy v konfiguračnej premennej spamProtectionDisabledIPs.

Pridali sme možnosť nastavovať http hlavičky podľa URL prefixu:

  • Bezpečnosť - pridaná možnosť nastavovať http hlavičky podľa URL prefixu. Nastavujú sa v konfiguračnej premennej responseHeaders vo formáte url-prefix:meno_hlavičky:hodnota, každý záznam na novom riadku.

Šifrovanie dát

Vylepšili sme šifrovanie dát použitím hybridného šifrovania. To umožňuje šifrovať dáta dlhšie ako je dĺžka kľúča.

  • Formuláre - prechod na hybridné šifrovanie s možnosťou šifrovania dlhých textov.
  • Upravené GUI pre generovanie kľúčov a ich zadávanie.

Ďalšie bezpečnostné zmeny

  • 404 - opravené zobrazenie web stránok začínajúcich na /lib prefix.
  • Freemarker - pridaná kontrola volania .ftl súborov (Freemarker šablóny) z adresára /components. Súbory sa zobrazia len keď sú pridané ako výnimka v konf. premennej componentsDirectCallExceptions rovnako ako volanie JSP súborov.
  • Konfigurácia - pridaná kontrola znakov názvu konfiguračnej premennej, aby sa nestalo, že pri copy&paste sa pred/za názov konfiguračnej premennej dostanú neviditeľné znaky (napríklad tabulátor) a premenná sa nenastaví správne (aj keď vizuálne ju vidno ako nastavenú).
  • Kontrola IP adries - upravená kontrola IP adries cez volanie Tools.checkIpAccess. Prázdna hodnota je povolená len pre webEnabledIPs a adminEnabledIPs, pre ostatné sa vyžaduje znak * pre povolenie neobmedzného prístupu (zamedzuje povolenie prístupu v prípade preklepu v názve konfiguračnej premennej).
  • Opravená zraniteľnosť pri deserializácii Java objektov. Zoznam povolených Java tried, ktoré je možné deserializovať je v konfiguračnej premennej XMLDecoderAllowedClasses.
  • Presmerovanie - opravené presmerovanie, ak URL adresa obsahuje dvojité lomítko (už to nechytá Spring filter, ale prejde do WebJETu, kde sa vykoná presmerovanie).
  • Presmerovania domén - opravená zmena hodnoty cieľovej domény v multiweb prostredí, ak cieľová doména bola zadaná aj s http prefixom (staršia verzia nevedela korektne určiť doménu a teda ju prepísala).
  • Pridané automatické nahradenie únikových značiek HTML kódu (značky < a >) pre JPA entity. Pre atribút, ktorý môže obsahovať HTML kód, je potrebné použiť anotáciu @javax.persistence.Convert(converter = AllowHtmlAttributeConverter.class). Nebude tak možné vykonať útok typu XSS podvrhnutím JavaScript/HTML kódu.
  • Spam ochrana/CSRF - vypnutá kontrola CSRF pri vypnutej spam ochrane.
  • Súbory - pridaná kontrola špeciálnych znakov pri premenovaní adresára v Súboroch.
  • Swagger - upravené zobrazenie swagger dokumentácie len ak je nastavená konfiguračná premenná swaggerEnabled na true (predvolené false). Swagger dokumentácia sa zobrazí len pre prihláseného administrátora, verejné zobrazenie je možné zapnúť nastavením konfiguračnej premennej swaggerRequireAdmin na false (neodporúčame).
  • ZIP - opravená zraniteľnosť pri odzipovaní archívu (možnosť zápisu mimo povoleného adresára).

Systémové zmeny

Pripravujeme sa na prechod na Java verziu 11. Overili sme praktickú možnosť behu WebJETu s využitím OpenJDK 11. Vyžaduje to doplnenie chýbajúcich knižníc (keďže vo verzii 11 odstránili staršie API).

  • Java 11 - príprava pre beh s OpenJDK 11. Vo /WEB-INF/lib-java11 sú knižnice, ktoré je potrebné nakopírovať do /WEB-INF/lib adresára a readme.md súbor s popisom ďalších potrebných úprav.

Vizuálne úpravy

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

  • Editor - opravené zobrazenie na hi-dpi (4k) monitoroch (zobrazenie správnych ikon v editore).
  • PageBuilder - pridaná možnosť nastavenia počtu bootstrap stĺpcov, nastavuje sa konfiguračnou premennou bootstrapColumns, predvolene nastavené na 12.
  • Používatelia - opravené usporiadanie používateľov podľa dátumových stĺpcov.

Ďalšie systémové zmeny

  • Aktualizácia - doplnené aktualizovanie adresárov v /components aj podľa konfiguračnej premennej logInstallName (ak daný adresár aktualizačný súbor obsahuje).
  • Diskusia - refaktorovaný kód posielania notifkácií po pridaní príspevku/schvaľovaní. Cez request objekt forumNotifyMessageKey je možné nastaviť meno kľúča, ktorý sa má použiť ako text notifikácie. Ten obsahuje parametre: link na stránku {1}, titulok stránky {2}, text stránky {3}, meno autora príspevku {4}, text príspevku {5}.
  • Editor - poznámka - opravené ukladanie poznámky v editore na MS SQL databáze.
  • Email - pri neúspešnom odoslaní emailu sa uloží do databázy pre neskoršie odoslanie.
  • Formuláre - upravené odosielanie emailu pre návštevníka, ak nie je správne zadaná email verzia formuláru (neobsahuje vstupné polia). Pre takýto prípad sa nespárovala hodnota emailu návštevníka a email sa neodoslal.
  • Galéria - opravené získanie veľkosti obrázka pri multidomain súboroch.
  • Google Analytics - pridaná možnosť posielania zápisov do Google Analytics z backendu. Umožňuje sledovať v GA aj sťahovanie súborov. Nastavuje sa v konfiguračných premenných analyticsTrackerConf, analyticsTrackingId, analyticsTrackingVersion, dokumentácia je na docs.webjetcms.sk v sekcii backend.
  • JarPackaging - opravená detekcia JAR súborov na Windows platforme, pridané 403.jsp, 404.jsp a 500.jsp do components JARu.
  • Multiweb - opravené zobrazenie menu Súbory, ak má admin nastavené práva len do podadresárov (napr. /images/gallery).
  • Multiweb - opravené ukladanie atribútov formulárov a ich zobrazenie podľa ID domény.
  • Ninja - opravené hľadanie kofiguračného súboru (napr. default og image).
  • Novinky - opravené zobrazenie noviniek pri nastavenom offsete a veľkosti stránky pri použití databázy MariaDB.
  • Novinky - pridaná možnosť vyhľadávania podľa URL parametra workPosition, ktorý sa vyhľadáva ako perex skupina s názvom $workPosition.
  • Novinky - filtrovanie podľa perex skupiny (cez URL parameter tag) upravené tak, že ak perex skupina obsahuje znak |, tak sa porovnáva len hodnota po znak |. Umožňuje to mať skrátené názvy skupín s kódmi v URL parametroch namiesto celých názvov perex skupín v URL.
  • Page Builder - pridaná možnosť nastavenia vlastného formátu gridu (mená HTML tagov a CSS selektorov jednotlivých blokov) cez konfiguračnú premennú pageBuilderGrid.
  • Prekladové texty - opravené načítanie zmenených textov v clustrovom prostredí.
  • Prekladové texty - pridaná možnosť získania prekladových textov podľa aktuálnej domény. Funguje rovnako ako získanie konfiguračnej premennej - zapnutím konfiguračnej premennej constantsAliasSearch. Prefix je doména.sk/domenovyalias-textový.kľúč. Môžete tak meniť texty v aplikáciach podľa domén.
  • Spring - upravená inicializácia zákazníckych SpringConfig tried - inicializujú sa ako zoznam, tým pádom sa navzájom neprepisujú.

Upravené verzie knižníc

  • collections-generic-4.01 - odstránený package org.apache.commons.collections15, náhrada je org.apache.commons.collections4
  • JPA - aktualizovaná knižnica eclipselink.jar na verziu 2.7.4.

Príprava pre WebJET 9

Z dôvodu prechodu na WebJET CMS verziu 9, sme museli v zdrojovom kóde vykonať viacero zmien. Verzia 9 sa nesie 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 verzia 9 bola moderná nielen z vizuálneho smeru, ale aj z toho na pozadí.

  • API - upravené objekty DocDetails, GroupDetails, TemplateDetails, TemplateGroupBean pre podporu datatabuliek.
  • Datatabuľky - pridaná možnosť anotovania Java beanov pre datatabuľku.
  • Editor - opravené zobrazenie editora volaním editor.do (napr. zo šablón), refaktoring kódu, zrušenie starej struts triedy, premapovanie na Spring.
  • Presmerovanie - upravené API UrlRedirectBean pre podporu Spring DATA Repozitárov.
  • Skupiny šablón - upravené pre podporu Spring DATA repozitárov použitím Long ako primárneho kľúča. POZOR: request objekt templates_group_id  je teraz typu Long, namiesto pôvodného Integer.

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