mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
Add new sanitization cases for array-based input validation
Introduced 'sanitize_array_key_int' and 'sanitize_array_key' cases to enhance sanitization of array-based input in admin settings. This ensures default values are used for invalid keys and enforces stricter validation for cleaner and more secure input handling.
This commit is contained in:
@@ -1405,6 +1405,13 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
$sanitized[ $k ] = ( '' !== $v ) ? absint( $v ) : '';
|
||||
}
|
||||
break;
|
||||
case 'sanitize_array_key_int':
|
||||
if ( ! array_key_exists( 'default', $this->builder_input[ $k ] ) || ! array_key_exists( 'array', $this->builder_input[ $k ] ) ) {
|
||||
continue 2;
|
||||
}
|
||||
|
||||
$sanitized[ $k ] = ! in_array( absint( $v ), $this->builder_input[ $k ]['array'], true ) ? $this->builder_input[ $k ]['default'] : absint( $v );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1565,14 +1572,26 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
case 'text':
|
||||
$sanitized[ $k ] = sanitize_text_field( $v );
|
||||
break;
|
||||
case 'sanitize_array_key':
|
||||
if ( ! array_key_exists( 'default', UM()->admin_settings()->settings_map[ $k ] ) || ! array_key_exists( 'array', UM()->admin_settings()->settings_map[ $k ] ) ) {
|
||||
continue 2;
|
||||
}
|
||||
|
||||
if ( is_array( $v ) ) {
|
||||
$sanitized[ $k ] = array();
|
||||
foreach ( $v as $v_v ) {
|
||||
if ( in_array( sanitize_key( $v_v ), UM()->admin_settings()->settings_map[ $k ]['array'], true ) ) {
|
||||
$sanitized[ $k ][] = sanitize_key( $v_v );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$sanitized[ $k ] = ! in_array( sanitize_key( $v ), UM()->admin_settings()->settings_map[ $k ]['array'], true ) ? UM()->admin_settings()->settings_map[ $k ]['default'] : sanitize_key( $v );
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$data = $sanitized;
|
||||
|
||||
$data = apply_filters( 'um_save_settings_sanitize', $data );
|
||||
|
||||
return $data;
|
||||
return apply_filters( 'um_save_settings_sanitize', $sanitized );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user