json-schema-secure.json (2570B)
1 { 2 "$schema": "http://json-schema.org/draft-07/schema#", 3 "$id": "https://raw.githubusercontent.com/epoberezkin/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 }