Permitir caracteres especiales con su forma literal en StyleBook
En la definición de StyleBook, puede usar cadenas textuales cuando los caracteres especiales de una cadena deben tomar su forma literal. Estas cadenas pueden contener caracteres de escape, barras invertidas, comillas, paréntesis, espacios en blanco, corchetes, etc.
En los StyleBooks, puede incluir expresiones de política de NetScaler en su forma literal utilizando cadenas textuales. Las expresiones de política suelen contener caracteres especiales. Sin cadenas textuales, tendría que escapar los caracteres especiales dividiendo las cadenas en subcadenas.
Para crear una cadena textual, encapsule una cadena entre caracteres especiales de la siguiente manera:
~{string}~
Puede usar cadenas textuales en las expresiones de StyleBook.
Nota
No utilice la secuencia de caracteres }~ en una cadena de entrada porque esta secuencia indica el final de una cadena textual.
Ejemplo:
---
name: test-deny-url
namespace: citrix.adc.stylebooks
version: "6.2"
display-name: StyleBook for creating an AppFw profile
description: This Stylebook configures an AppFw config.
schema-version: "1.0"
import-stylebooks:
-
namespace: netscaler.nitro.config
prefix: ns
version: "13.0"
parameters:
-
name: name
type: string
required: true
substitutions:
default-deny-urls-regex:
"Command_injection_attack": str("([ /=]|\\t|\\n)(ls|cat)([ ;'" + "\\\"&].*)?$")
"Command_injection_attack2": ~{([ /=]|\t|\n)(ls|rm|cat)([ ;'\"&].*)?$}~
components:
-
name: appfw-profile-comp
type: ns::appfwprofile
properties:
name: $parameters.name
type: ["XML"]
components:
-
name: appfw-profile-denyurl-default-binding-subcomp-all
type: ns::appfwprofile_denyurl_binding
properties:
name: $parent.properties.name
denyurl?: $substitutions.default-deny-urls-regex["Command_injection_attack"]
state?: "ENABLED"
-
name: appfw-profile-denyurl-default-binding-subcomp-all2
type: ns::appfwprofile_denyurl_binding
properties:
name: $parent.properties.name
denyurl?: $substitutions.default-deny-urls-regex["Command_injection_attack2"]
state?: "ENABLED"
En este ejemplo, las sustituciones
default-deny-urls-regex tienen una expresión textual.
-
"Command_injection_attack": str("([ /=]|\\t|\\n)(ls|cat)([ ;'" + "\\\"&].*)?$"): StyleBook lo procesa como una expresión regular. -
"Command_injection_attack2": ~{([ /=]|\t|\n)(ls|rm|cat)([ ;'\"&].*)?$}~: StyleBook lo procesa como una expresión textual. Los caracteres especiales de esta cadena toman la forma literal.
Concatenar varias cadenas textuales
Puede concatenar cadenas textuales con cadenas regulares o cadenas con interpolaciones. Al hacerlo, StyleBook omite la interpretación solo para las cadenas textuales. Utilice el operador más (+) entre las cadenas para concatenar.
Ejemplo:
value: "~{\"id\": \"}~ + %{$atom.key}% + ~{\", \"value\": \"}~ + %{$atom.value}% + ~{\"}~"
En este ejemplo, se interpretan
%{$atom.key}% y %{$atom.value}%. Y la interpretación se omite para el resto.