概要
policy設定
デフォルトの policy には、使いやすさと XML 攻撃の軽減のバランスを取る推奨設定が含まれています。
以下は XML policy の例です:
{
"policySettings": {
"EnableWarningHandling": false,
"BlockedTags": [
"/XInclude:include",
"/XSL/Transform:stylesheet"
],
"AllowedEncodings": [
"utf-8",
"utf-16",
"iso-8859-1"
],
"AllowEmptyEncoding": true,
"AllowDoctypeInCData": false
}
}
EnableWarningHandling
PolicySettings.EnableWarningHandlingは、入力 XML の検証時にレスポンスで警告を返すよう XML validation API に指示します。警告はデフォルトで無効になっています。
警告はリストで返されます。何も見つからない場合、リストは空です:
{
"ValidationWarnings": [
"The optional field Test is missing."
]
}
BlockedTags
XML ドキュメントではカスタムタグを使用できます。潜在的にリスクのあるタグを PolicySettings.BlockedTags に指定すると、入力 XML の検証中にこれらのタグのいずれかが検出された場合に XML Validation API を失敗させることができます。レスポンスの ValidationResults オブジェクトは、どのタグが原因で検証に失敗したかを示します。
これらのブロック対象タグは、名前空間を含む展開タグ名によって XML ドキュメント内のタグと照合されます。これにより正しいタグが確実にブロックされ、名前空間に別のエイリアスを付けてもチェックを回避できません。タグは末尾の一致で照合されるため、単一のルールで異なる年に定義された名前空間をブロックできます。たとえば、http://www.w3.org/2001/XInclude と http://www.w3.org/1999/XML/xinclude です。
たとえば、次の XML では:
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xi="http://www.w3.org/2001/XInclude">
<head>...</head>
<body>
...
<p><xi:include href="license.txt" parse="text"/></p>
</body>
</html>
xi 名前空間は http://www.w3.org/2001/XInclude に設定され、xi:include タグの接頭辞として使用されます。したがって、このタグの検証は http://www.w3.org/2001/XInclude:include として評価されます。この展開されたタグ名は、デフォルトでブロックされるタグの 1 つである /XInclude:include で終わるため、検証結果に追加されます。これらのチェックでは大文字と小文字も区別されません。
デフォルトでは、次の XML タグがブロックされます:
- XInclude
- XSL
AllowedEncodings
XML ドキュメントでは文字エンコーディング標準を指定できます。PolicySettings.AllowedEncodings は文字列のリストで、入力 XML で許可する文字エンコーディング標準をユーザーが指定できます。XML Validation API が指定されたエンコーディングを検出すると、検証は失敗し、そのエンコーディング標準はレスポンス内の ValidationResults オブジェクトで識別されます。
デフォルトでは、次の文字エンコーディング標準が許可されます:
- UTF-8
- UTF-16
- ISO-8859-1
AllowEmptyEncoding
PolicySettings.AllowEmptyEndoding は、入力 XML で文字エンコーディングが指定されていない場合でも検証を成功させるかどうかを設定します。
注: これを有効にしていても、入力 XML で PolicySettings.AllowedEncodings に含まれていないエンコーディング標準が指定されている場合、検証は引き続き失敗します。
これはデフォルトで true に設定されています。
AllowDoctypeInCData
CDATA セクションは、他の XML ドキュメント内に XML ドキュメント全体を埋め込むために使用できます。PolicySettings.AllowDoctypeInCData は、CDATA セクション内で doctype 宣言を検出した場合に XML Validation API が検証を失敗させるよう設定します。あるいは、doctype 宣言を許可するためにこれを true に設定することもできます。
これはデフォルトで false に設定されています。