95 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
		
		
			
		
	
	
			95 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
|  | { | ||
|  |   "$schema": "http://json-schema.org/draft-07/schema#", | ||
|  |   "$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-secure.json#", | ||
|  |   "title": "Meta-schema for the security assessment of JSON Schemas", | ||
|  |   "description": "If a JSON Schema fails validation against this meta-schema, it may be unsafe to validate untrusted data", | ||
|  |   "definitions": { | ||
|  |     "schemaArray": { | ||
|  |       "type": "array", | ||
|  |       "minItems": 1, | ||
|  |       "items": {"$ref": "#"} | ||
|  |     } | ||
|  |   }, | ||
|  |   "dependencies": { | ||
|  |     "patternProperties": { | ||
|  |       "description": "prevent slow validation of large property names", | ||
|  |       "required": ["propertyNames"], | ||
|  |       "properties": { | ||
|  |         "propertyNames": { | ||
|  |           "required": ["maxLength"] | ||
|  |         } | ||
|  |       } | ||
|  |     }, | ||
|  |     "uniqueItems": { | ||
|  |       "description": "prevent slow validation of large non-scalar arrays", | ||
|  |       "if": { | ||
|  |         "properties": { | ||
|  |           "uniqueItems": {"const": true}, | ||
|  |           "items": { | ||
|  |             "properties": { | ||
|  |               "type": { | ||
|  |                 "anyOf": [ | ||
|  |                   { | ||
|  |                     "enum": ["object", "array"] | ||
|  |                   }, | ||
|  |                   { | ||
|  |                     "type": "array", | ||
|  |                     "contains": {"enum": ["object", "array"]} | ||
|  |                   } | ||
|  |                 ] | ||
|  |               } | ||
|  |             } | ||
|  |           } | ||
|  |         } | ||
|  |       }, | ||
|  |       "then": { | ||
|  |         "required": ["maxItems"] | ||
|  |       } | ||
|  |     }, | ||
|  |     "pattern": { | ||
|  |       "description": "prevent slow pattern matching of large strings", | ||
|  |       "required": ["maxLength"] | ||
|  |     }, | ||
|  |     "format": { | ||
|  |       "description": "prevent slow format validation of large strings", | ||
|  |       "required": ["maxLength"] | ||
|  |     } | ||
|  |   }, | ||
|  |   "properties": { | ||
|  |     "additionalItems": {"$ref": "#"}, | ||
|  |     "additionalProperties": {"$ref": "#"}, | ||
|  |     "dependencies": { | ||
|  |       "additionalProperties": { | ||
|  |         "anyOf": [ | ||
|  |           {"type": "array"}, | ||
|  |           {"$ref": "#"} | ||
|  |         ] | ||
|  |       } | ||
|  |     }, | ||
|  |     "items": { | ||
|  |       "anyOf": [ | ||
|  |         {"$ref": "#"}, | ||
|  |         {"$ref": "#/definitions/schemaArray"} | ||
|  |       ] | ||
|  |     }, | ||
|  |     "definitions": { | ||
|  |       "additionalProperties": {"$ref": "#"} | ||
|  |     }, | ||
|  |     "patternProperties": { | ||
|  |       "additionalProperties": {"$ref": "#"} | ||
|  |     }, | ||
|  |     "properties": { | ||
|  |       "additionalProperties": {"$ref": "#"} | ||
|  |     }, | ||
|  |     "if": {"$ref": "#"}, | ||
|  |     "then": {"$ref": "#"}, | ||
|  |     "else": {"$ref": "#"}, | ||
|  |     "allOf": {"$ref": "#/definitions/schemaArray"}, | ||
|  |     "anyOf": {"$ref": "#/definitions/schemaArray"}, | ||
|  |     "oneOf": {"$ref": "#/definitions/schemaArray"}, | ||
|  |     "not": {"$ref": "#"}, | ||
|  |     "contains": {"$ref": "#"}, | ||
|  |     "propertyNames": {"$ref": "#"} | ||
|  |   } | ||
|  | } |