以下の操作は、リクエストまたはレスポンスの HTML データと POST ボディの XML データのエンコーディングで動作します。
-
\ .HTML_XML_SAFE: 次の例のように、特殊文字を XML セーフフォーマットに変換します <text\>。
左向きの山括弧 (<) は < に変換されます < 右向きの山括弧 () は > アンパサンド (&)に変換されます & この操作は、クロスサイトスクリプティング攻撃から保護します。変換されたテキストの最大長は 2048 バイトです。これは読み取り専用の操作です。
変換を適用すると、エクスプレッションで指定する追加の演算子が、選択したテキストに適用されます。以下は一例です。
http.req.url.query.html_xml_safe. contains("myQueryString")
-
\ .HTTP_HEADER_SAFE: 入力テキストのすべての改行 ('\ n') 文字を' %0A 'に変換して、入力を HTTP ヘッダーで安全に使用できるようにします <text\>。
この操作により、応答分割攻撃を防ぐことができます。
変換されたテキストの最大長は 2048 バイトです。これは読み取り専用の操作です。
-
\ .HTTP_URL_SAFE: 安全ではない URL 文字を '%xx' 値に変換します <text\>。ここで、「xx」は入力文字を 16 進数で表現したものです。たとえば、アンパサンド (&) は URL セーフエンコーディングでは %26 と表されます。変換されたテキストの最大長は 2048 バイトです。これは読み取り専用の操作です。
URL セーフ文字は次のとおりです。他のすべては安全ではありません。
-
英数字:a-z、A-Z、0-9
-
Asterix: "*"
-
アンパサンド:「&」
-
アットサイン:「@」
-
コロン:「:」
-
カンマ:「,」
-
ドル:「$」
-
Dot: "."
-
等しい:「=」
-
Exclamation mark: "!"
-
ハイフン:「-」
-
開括弧と閉じ括弧:「(「,「)」
-
パーセント:「%」
-
プラス:「+」
-
セミコロン:「;」
-
一重引用符:「'」
-
スラッシュ:「/」
-
疑問符:「?」
-
チルダ:「~」
-
アンダースコア:「_」
-
\<text\>.MARK_SAFE:
いかなる種類のデータ変換も適用せずに、テキストを安全とマークします。
-
\<text\>.SET_TEXT_MODE(URLENCODED\|NOURLENCODED)
バイトストリーム内のすべての %HH エンコーディングを変換します。この操作は文字に対して動作します (バイトではありません)。デフォルトでは、1 バイトは ASCII エンコーディングの文字を表します。ただし、URLENCODED モードを指定した場合、3 バイトで 1 文字を表すことができます。
次の例では、PREFIX (3) 操作によってターゲットの最初の 3 文字が選択されます。
http.req.url.hostname.prefix(3)
次の例では、NetScalerはターゲットから最大9バイトを選択できます。
http.req.url.hostname.set_text_mode(urlencoded).prefix(3)
-
\<text\>.SET_TEXT_MODE(PLUS_AS_SPACE\|NO_PLUS_AS_SPACE):
プラス文字 (+) の処理方法を指定します。PLUS_AS_SPACE オプションはプラス文字を空白に置き換えます。たとえば、「ハロー+ワールド」というテキストは「ハローワールド」になります。NO_PLUS_AS_SPACE オプションを指定すると、プラス文字はそのまま残ります。
-
\<text\>.SET_TEXT_MODE(BACKSLASH_ENCODED\|NO_BACKSLASH_ENCODED):
<text\> で表されるテキストオブジェクトに対してバックスラッシュデコードを実行するかどうかを指定します。
BACKSLASH_ENCODED が指定されている場合、SET_TEXT_MODE 演算子はテキストオブジェクトに対して次の操作を実行します。
-
出現する「\ XXX」はすべて文字「Y」に置き換えられます (XXX は 8 進法の数字を表し、Y は XXX と同等の ASCII を表します)。このタイプのエンコーディングの 8 進値の有効範囲は 0 ~ 377 です。たとえば、エンコードされたテキスト「http\ 72//」と「http\ 072//」は両方ともに<http://>にデコードされます。ここで、コロン (:) は ASCII で 8 進数値「72」に相当します。
-
出現する「\xHH」はすべて文字「Y」に置き換えられます(HH は 16 進法の数字を表し、Y は HH と同等の ASCII を表します)。たとえば、エンコードされたテキスト「http\ x3a//」は<http://>にデコードされます。ここで、コロン (:) はASCIIで16進値の「3a」に相当します。
-
出現する「\ uWWxx」はすべて文字シーケンス「YZ」に置き換えられます (WW と XX は 2 つの異なる 16 進値を表し、Y と Z はそれぞれ WW と XX の ASCII 値を表します)。たとえば、エンコードされたテキスト「http%u3a2f/」と「http%u003a//」は両方とも<http://>にデコードされます。ここで、「3a」と「2f」は 2 つの 16 進値で 、コロン (:) とフォワードスラッシュ (「/」) はそれぞれの ASCII 文字を表します。
-
「\ b」、「\ n」、「\ t」、「\ f」、「\ r」はすべて、対応する ASCII 文字に置き換えられます。
NO_BACKSLASH_ENCODED が指定されている場合、テキストオブジェクトではバックスラッシュデコードは実行されません。
-
<text\> .SET_TEXT_MODE (BAD_ENCODE_RAISE_UNDEF \|NO_BAD_ENCODE_RAISE_UNDEF):
<text\>URLENCODED または BACKSLASH_ENCODED モードのいずれかが設定されていて、 で表されるテキストオブジェクトで指定されたエンコーディングモードに対応する不正なエンコーディングが見つかった場合に、関連する未定義のアクションを実行します。
<text\>NO_BAD_ENCODE_RAISE_UNDEF が指定されている場合、 で表されるテキストオブジェクトに不正なエンコーディングが発生しても、関連する未定義のアクションは実行されません。