Проверка того, был ли ID изменен на стороне клиента перед обновлением базы данных

Учитывая приведенный ниже пример: HTML-страница:

<input type="text" name="update_12" /> 

Поле ввода с именем «update_12» и новый текст: «Некоторые другие данные» отправляются через форму на серверный PHP-скрипт (скажем, process.php)

Формат базы данных:

 ===================== message_ID Message ===================== 12 Some data 13 Another data 

Если PHP-скрипт взорвется на имени ввода как:

 foreach ($_POST as $key => $value) { if(strstr($key, "update_")){ $required_id = explode('_',$key)[1]; $query = "UPDATE <db_name> SET `Message`='".$_POST[$key]."' WHERE `message_id`='".$required_id."'"; } } 

Это обновляет БД новым сообщением для message_ID: 12

Я новичок в PHP и изучал базовое хранилище данных, обновление, извлечение и удаление в MySQL.

Поскольку клиент может изменить имя поля ввода: «имя» и отправить другое значение для обновления. Например: если клиент открывает firebug и изменяет поле «имя» поля ввода на «update_13», его операция будет перезаписывать сообщение другого пользователя.

Я попытался изучить это, попробовав удаление статуса в facebook. От первичного наблюдения за POST-данными для удаления я мог видеть, что некоторые важные параметры отправляются для удаления как:

 impression_id=456ab622 profile_id=100005552221116 __user=100005552221116 story_fbid=540912345678911 

Для удаления почты ассоциированный идентификатор выглядит так: story_fbid. Когда я изменил это, это может быть: 540912345678912 (последняя цифра изменена). И нажал на delete, fb требует времени и отвечает сообщением об ошибке: Эта операция не может быть выполнена. Это сообщение об ошибке появляется после отправки запроса POST для удаления (с измененной версией story_fbid). Ответ на запрос POST содержит сообщение об ошибке, которое отображается в модальном окне.

Я могу думать о способе, в котором идентификатор и его хэш (MD5 / SHA1 / SHA2) хранятся в БД и после получения идентификатора, получают хэш его и, если он соответствует любому, обновляют эту строку в БД. Однако есть вероятность, что хэш 13 (в нашем случае) может соответствовать любой другой строке и, следовательно, выполнить операцию обновления.

Можете ли вы предложить другие безопасные способы, с помощью которых мы можем проверить, что клиент не изменил значения?

Ответ на интересующий вас вопрос – именно то, что я ищу. Однако в этом обсуждении нет правильных решений / методов.