Все вводимые пользователем данные небезопасны, поскольку вы не можете их контролировать! Пользователям даже не нужен веб-браузер, но они могут использовать какую-то другую программу (например, curl
или wget
) для отправки манипулируемых данных.
Как вы утверждаете, использование белого списка (не черного списка, поскольку вы никогда не можете быть уверены во всем плохом, но во всем хорошем!) - это хороший способ для начала.
Чтобы убедиться, что поля hidden
не были изменены, вы можете использовать некоторую контрольную сумму, которая рассчитывается на стороне сервера с использованием фиксированного секретного ключа. Этот секрет никогда не должен быть открыт вашим посетителям!
hash = md5(field_1 + field_2 + field_3 + my_secret)
Когда эти четыре скрытых поля (field_1..3, hash) поступают в вашу форму, вы можете пересчитать хэш и сравнить его с параметрами [: hash], чтобы убедиться, что поля от field_1 до field_3 не были изменены. 1011 *