Как вы сказали, обеспечение наличия продуктов в базе данных - хорошее начало. Если вы берете информацию об адресе с почтовым индексом, убедитесь, что она действительна для указанного города. Сделайте выпадающий список стран и городов и убедитесь, что город действителен для данной страны.
Если вы берете адреса электронной почты, убедитесь, что они являются действительными адресами электронной почты, и, возможно, отправьте подтверждение по электронной почте со ссылкой до авторизации транзакции. То же самое для телефонных номеров (код подтверждения в тексте), хотя проверка номера телефона может быть затруднена.
Никогда не храните данные кредитной карты или платежные данные , если этого вообще можно избежать (я склонен полагать, что существует очень мало ситуаций, когда необходимо хранить данные).
По сути, правило , убедитесь, что все входные данные соответствуют ожидаемым . Вы не поймаете все (имена и адреса должны будут принимать практически любой символ), но большинство из них должны получить их.
Я не думаю, что есть какой-либо способ полностью гарантировать, что они исходят из вашей формы. HTTP Referrer и, возможно, скрытые поля в вашей форме могут помочь, но они ненадежны . Все, что вы можете сделать, это проверить все как можно более строго.