InputProcessor

Initialisierung

Erzeuge neue Instanz bzw. speichere existierende in Variable

$inputProcessor = new InputProcessor($securityMonitor);

Aktiviere Custom Filters (base64, adresses etc)

$inputProcessor->activateBuiltinFilters();

Return ein Array mit den verfügbaren Filtern

$inputProcessor->getAvailableFilters();

Eingabeparameter validieren

skip_filter - Überspringe Filterung komplett

$whitelist = [
    'GET' => [
        'id' => 'SKIP_PROCESSING', // skip_filter
    ],
];

single_filter - Einfacher Filter

$inputProcessor = new InputProcessor($securityMonitor);
$whitelist = [
    'GET' => [
        'id' => FILTER_VALIDATE_INT, // single_filter
    ],
    'POST' => [
        'password' => FILTER_SANITIZE_STRING, // single_filter
    ],
];

$validatedInputs = $inputProcessor->validateInputs($whitelist, $_GET, $_POST);

flat_filter_array - Array mit Filter + Flags

$whitelist = [
    'POST' => [
        'username' => [FILTER_SANITIZE_STRING, STRIP_TAGS], // flat_filter_array
    ],
];

filter_flag_array - Array mit 'filter' und 'flags' Keys

$inputProcessor = new InputProcessor($securityMonitor);
$whitelist = [
    'POST' => [
        'username' => [ // filter_flag_array
            'filter' => FILTER_VALIDATE_INT,
            'flags' => FILTER_REQUIRE_ARRAY
        ],
    ],
];

$validatedInputs = $inputProcessor->validateInputs($whitelist, $_GET, $_POST);

filter_options_array - Array mit 'filter' und 'options' Keys

$inputProcessor = new InputProcessor($securityMonitor);
$whitelist = [
    'POST' => [
        'username' => [ // filter_options_array
            'filter' => IDS_FILTER_SANITIZE_NAME,
            'options' => [
                'max_length' => 50,
                'allow_numbers' => true
            ]
        ],
        'address' => [ // filter_options_array
            'filter' => IDS_FILTER_SANITIZE_ADDRESS,
            'options' => [
                'allow_special_chars' => ['-', '.', '/']
            ]
        ],
    ],
];

$validatedInputs = $inputProcessor->validateInputs($whitelist, $_GET, $_POST);

filter_flag_options_array - Array mit 'filter', 'flags' und 'options' Keys

$whitelist = [
    'POST' => [
        'data' => [ // filter_flag_options_array
            'filter' => IDS_FILTER_SANITIZE_B64,
            'flags' => 0,
            'options' => ['url_safe' => true]
        ],
    ],
];

associative_filter_array - Nested Array für komplexe Datenstrukturen

$inputProcessor = new InputProcessor($securityMonitor);
$_POST['artikelArray'] = [
            '123456',
            'not_an_int',
        ];

$whitelist = [
    'POST' => [
        'artikelArray' => [ // associative_filter_array (wenn Input Array ist)
            'filter' => FILTER_VALIDATE_INT,
        ],
    ],
];

$validatedInputs = $inputProcessor->validateInputs($whitelist, $_GET, $_POST);

numeric_filter_array - Array via Formdata from JS

$paramWhitelist = [
    'POST' => [
        'jahr' => [FILTER_UNSAFE_RAW],
    ]
];

$_POST['jahr'] = json_encode($_POST['jahr']);
$inputs = $security->validateInputs($paramWhitelist, $_GET, $_POST);
$inputs['POST']['jahr'] = json_decode($inputs['POST']['jahr'] ,true) ?? [];

Custom Filter Options

IDS_FILTER_SANITIZE_B64 / IDS_FILTER_VALIDATE_B64 - max_length: Maximale Länge - url_safe: URL-sichere base64 zeichen (- und _ statt + und /) - normalize: base64 neu encodieren für konsistentes format

IDS_FILTER_SANITIZE_ADDRESS / IDS_FILTER_VALIDATE_ADDRESS
- max_length: Maximale Länge - min_length: Minimale Länge - allow_special_chars: Array mit erlaubten Sonderzeichen ['|', '-']

IDS_FILTER_SANITIZE_NAME / IDS_FILTER_VALIDATE_NAME - max_length: Maximale Länge - min_length: Minimale Länge - allow_numbers: Zahlen erlauben - allow_punctuation: Satzzeichen erlauben (@, #, $, %, &, *) - min_words: Minimale Wörteranzahl - allow_special_chars: Array mit erlaubten Sonderzeichen

//scart.php im ihle-sis
// Dynamische Post Parameters
for ($i = 0; $i < $_POST['anzds']; $i++) {
    $paramWhitelist['POST']["anz$i"] = [FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_FLAG_STRIP_HIGH];
    $paramWhitelist['POST']["sonder$i"] = [FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_FLAG_STRIP_HIGH];
    $paramWhitelist['POST']["id$i"] = [FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_FLAG_STRIP_HIGH];
}
// ajax_angebot im ihle-sis
    'POST' => [
        'func' => [FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_FLAG_STRIP_HIGH],
        'artikel' => [
            'posnr' => FILTER_SANITIZE_SPECIAL_CHARS,
            'ianr' => FILTER_SANITIZE_SPECIAL_CHARS,
            'prs' => FILTER_SANITIZE_SPECIAL_CHARS, 
            'vkprs' => FILTER_SANITIZE_NUMBER_FLOAT,
            'menge' => FILTER_SANITIZE_NUMBER_FLOAT,
            'artikel_herkunft' => FILTER_SANITIZE_SPECIAL_CHARS,
        ],
    ]