[d565449] | 1 | {
|
---|
| 2 | "$schema": "http://json-schema.org/draft-07/schema#",
|
---|
| 3 | "$id": "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/json-schema-secure.json#",
|
---|
| 4 | "title": "Meta-schema for the security assessment of JSON Schemas",
|
---|
| 5 | "description": "If a JSON Schema fails validation against this meta-schema, it may be unsafe to validate untrusted data",
|
---|
| 6 | "definitions": {
|
---|
| 7 | "schemaArray": {
|
---|
| 8 | "type": "array",
|
---|
| 9 | "minItems": 1,
|
---|
| 10 | "items": {"$ref": "#"}
|
---|
| 11 | }
|
---|
| 12 | },
|
---|
| 13 | "dependencies": {
|
---|
| 14 | "patternProperties": {
|
---|
| 15 | "description": "prevent slow validation of large property names",
|
---|
| 16 | "required": ["propertyNames"],
|
---|
| 17 | "properties": {
|
---|
| 18 | "propertyNames": {
|
---|
| 19 | "required": ["maxLength"]
|
---|
| 20 | }
|
---|
| 21 | }
|
---|
| 22 | },
|
---|
| 23 | "uniqueItems": {
|
---|
| 24 | "description": "prevent slow validation of large non-scalar arrays",
|
---|
| 25 | "if": {
|
---|
| 26 | "properties": {
|
---|
| 27 | "uniqueItems": {"const": true},
|
---|
| 28 | "items": {
|
---|
| 29 | "properties": {
|
---|
| 30 | "type": {
|
---|
| 31 | "anyOf": [
|
---|
| 32 | {
|
---|
| 33 | "enum": ["object", "array"]
|
---|
| 34 | },
|
---|
| 35 | {
|
---|
| 36 | "type": "array",
|
---|
| 37 | "contains": {"enum": ["object", "array"]}
|
---|
| 38 | }
|
---|
| 39 | ]
|
---|
| 40 | }
|
---|
| 41 | }
|
---|
| 42 | }
|
---|
| 43 | }
|
---|
| 44 | },
|
---|
| 45 | "then": {
|
---|
| 46 | "required": ["maxItems"]
|
---|
| 47 | }
|
---|
| 48 | },
|
---|
| 49 | "pattern": {
|
---|
| 50 | "description": "prevent slow pattern matching of large strings",
|
---|
| 51 | "required": ["maxLength"]
|
---|
| 52 | },
|
---|
| 53 | "format": {
|
---|
| 54 | "description": "prevent slow format validation of large strings",
|
---|
| 55 | "required": ["maxLength"]
|
---|
| 56 | }
|
---|
| 57 | },
|
---|
| 58 | "properties": {
|
---|
| 59 | "additionalItems": {"$ref": "#"},
|
---|
| 60 | "additionalProperties": {"$ref": "#"},
|
---|
| 61 | "dependencies": {
|
---|
| 62 | "additionalProperties": {
|
---|
| 63 | "anyOf": [
|
---|
| 64 | {"type": "array"},
|
---|
| 65 | {"$ref": "#"}
|
---|
| 66 | ]
|
---|
| 67 | }
|
---|
| 68 | },
|
---|
| 69 | "items": {
|
---|
| 70 | "anyOf": [
|
---|
| 71 | {"$ref": "#"},
|
---|
| 72 | {"$ref": "#/definitions/schemaArray"}
|
---|
| 73 | ]
|
---|
| 74 | },
|
---|
| 75 | "definitions": {
|
---|
| 76 | "additionalProperties": {"$ref": "#"}
|
---|
| 77 | },
|
---|
| 78 | "patternProperties": {
|
---|
| 79 | "additionalProperties": {"$ref": "#"}
|
---|
| 80 | },
|
---|
| 81 | "properties": {
|
---|
| 82 | "additionalProperties": {"$ref": "#"}
|
---|
| 83 | },
|
---|
| 84 | "if": {"$ref": "#"},
|
---|
| 85 | "then": {"$ref": "#"},
|
---|
| 86 | "else": {"$ref": "#"},
|
---|
| 87 | "allOf": {"$ref": "#/definitions/schemaArray"},
|
---|
| 88 | "anyOf": {"$ref": "#/definitions/schemaArray"},
|
---|
| 89 | "oneOf": {"$ref": "#/definitions/schemaArray"},
|
---|
| 90 | "not": {"$ref": "#"},
|
---|
| 91 | "contains": {"$ref": "#"},
|
---|
| 92 | "propertyNames": {"$ref": "#"}
|
---|
| 93 | }
|
---|
| 94 | }
|
---|