Wyrażenia
Obliczaj wartości pól w JavaScript, w przeglądarce lub na serwerze
Dla autorów formularzy: wypełniaj pola dynamicznie za pomocą JavaScriptu, obliczając je w przeglądarce lub pobierając na serwerze.
Atrybut expression pola formularza pozwala tworzyć dynamiczne formularze z wyrażeniami JavaScript.
Wprowadzenie
Atrybut expression jest dostępny w kilku typach pól:
- pole
enum- do dynamicznego wypełniania opcji listy rozwijanej - pole
expression- do pobierania lub generowania dowolnych danych - pole
html- do budowania jego treści HTML - pola
yamlilist- do wypełniania ich danych
Wyrażenia JavaScript są obliczane albo po stronie serwera (domyślnie), albo po stronie klienta, zależnie od właściwości pola runLocal. Pole html oraz typy pól local, local_out i credential zawsze wykonują swoje wyrażenie w przeglądarce, niezależnie od wartości runLocal.
- Po stronie serwera (
runLocal: false, domyślnie) - predefiniowane funkcje, które pobierają dane z API, plików i baz danych. - Po stronie klienta (
runLocal: true) - kod korzysta z pełnego silnika JavaScript w piaskownicy przeglądarki do obliczeń, przekształceń i operacji na danych.
Kwestie bezpieczeństwa
Ponieważ wyrażenia są obliczane funkcją JavaScript eval, wstrzyknięcie kodu jest potencjalnym zagrożeniem:
- Wyrażenia po stronie serwera najpierw przechodzą przez sanitizer: każde wywołanie musi być funkcją
fn.lubfnc., a wiele wierszy,;, literały szablonowe,process.envi sposoby wyjścia zeval(import,require,constructor, …) są odrzucane. - Wyrażenia po stronie klienta są obliczane w piaskownicy przeglądarki i można je uznać za bezpieczne.
To, jak restrykcyjny jest sanitizer, zależy od EXPRESSION_SANITIZER:
| Wartość | Wyrażenia po stronie serwera |
|---|---|
strict (domyślnie) | wywołania fn. i fnc. oraz metody na ich wyniku, np. fn.fnTime().format('YYYY') |
paranoid | tylko bezpośrednie wywołania fn. i fnc., bez metod na ich wyniku |
off | każde wyrażenie po stronie serwera jest odrzucane; działają tylko wyrażenia runLocal |
legacy | zasady z wersji 6.2.1, które pozwalały każdemu uwierzytelnionemu użytkownikowi uruchamiać kod na serwerze; tylko na czas aktualizacji i tylko w rzeczywistym środowisku (nie ze strony ustawień) |
Pusta lub nieznana wartość oznacza strict. Zmiana obowiązuje od następnego wyrażenia, bez restartu.
W tej sekcji
Każdy temat ma własną stronę:
| Strona | Czego dotyczy |
|---|---|
| Symbole zastępcze | Odwołanie do innego pola, stałej lub użytkownika przez $(...) |
| Wyrażenia lokalne | JavaScript wykonywany w piaskownicy przeglądarki |
| Wyrażenia zdalne | Funkcje po stronie serwera do dat, sieci, plików, SSH i numerowanych nazw |
| REST API | Wywoływanie REST API z uwierzytelnianiem basic, tokenem lub własnym |
| Poświadczenia | Odczyt zapisanego poświadczenia |
| Sortowanie | Sortowanie tablic obiektem sortowania |
| Zapytania jq | Przekształcanie danych za pomocą jq |