Вместо того, чтобы просто слепо обрабатывать все в $_POST
(хотя просто передавать их через htmlspecialchars()
довольно безопасно), вы можете использовать белый список допустимых ключей:
// An array of $_POST keys that are acceptable
$whitelist = array('var1','var2','var3');
foreach($_POST as $key => $value) {
// Only handle $_POST keys you expect to receive...
if (in_array($key, $whitelist)) {
$$key = htmlspecialchars($_POST[$value]);
}
}
Это исключает возможность того, что злонамеренный пользователь отправит сотни значений в POST и потребит дополнительные системные ресурсы.
Обновление
Комментаторы верны. Лучше перебирать белый список, чем $_POST
:
// Iterate over $whitelist and check for corresponding keys in $_POST
$missing_keys = array();
foreach($whitelist as $key) {
if (isset($_POST[$key])) {
$$key = htmlspecialchars($_POST[$key]);
}
else $missing_keys[] = $key;
}
echo "Missing keys: " . implode(",", $missing_keys);