Salesforce 認定 MuleSoft Integration 基礎 無料問題 4 / 10 ・ 分野2: 重要なインテグレーションの概念と用語を認識して解釈する
DataWeave の YAML 形式の読み手のプロパティ maxEntityCount について、ドキュメントの説明に合うものはどれか。
- 既定の値は無く、0 を入れると実体の展開を数えずに読む
- 既定は 8192 で、書き出しのバッファの大きさをバイトで決める
- 既定は 1 で、1つの入力の中に続けて入れてよい YAML の文書の数の上限を決める
- 既定は 1 で、実体の展開の数を絞り Billion Laughs 攻撃を避ける
正解と解説を見る
正解: D
正解の理由
YAML 形式の頁の節「Reader Properties」は、maxEntityCount を、実体の展開(entity expansion)の数の上限を決める Number のプロパティで、既定は 1 だと書く。この上限は Billion Laughs 攻撃を避けるためのものだ、と説明している。実体の展開を繰り返させて大量のメモリを使わせる入力から、読み手を守る。
違う選択肢
「既定は 8192 で、書き出しのバッファの大きさをバイトで決める」… これは書き手のプロパティ bufferSize の説明である。読み手の maxEntityCount とは別のもので、値は 8 より大きくなければならない。
「既定は 1 で、1つの入力の中に続けて入れてよい YAML の文書の数の上限を決める」… 既定は合っているが、数える対象が違う。上限をかけるのは実体の展開の数である。
「既定の値は無く、0 を入れると実体の展開を数えずに読む」… 既定は 1 と書かれている。上限を外す使い方は書かれていない。
押さえどころ
YAML の書き手のプロパティは bufferSize(既定 8192)と deferred(既定 false。true でデータの流れとして書き出し、使われるまでスクリプトの実行を遅らせる)である。読み手は入力の読み方、書き手は出力の書き方を決める、と分けて覚える。