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

Какие альтернативы существуют для передачи нескольких параметров на страницу action, чтобы информация осталась скрытой от пользователя и была недоступной для редактирования?
  • 10 февраля 2024 г. 15:38
Ответы на вопрос 3
Чтобы создать скрытое поле ввода и передать техническую информацию на другую страницу, можно использовать элемент `<input>` с атрибутом `type="hidden"` в HTML. Вот пример формы, содержащей скрытое поле ввода:

```html
<form action="путь_до_обработчика" method="post">
  <input type="hidden" name="скрытая_информация" value="значение">
  <!-- другие поля формы -->
  <input type="submit" value="Отправить">
</form>
```

В этой форме данные из скрытого поля (с именем `скрытая_информация` и значением `значение`) будут отправлены вместе с остальными данными формы на сервер по адресу, указанному в атрибуте `action`.

Альтернативы передачи скрытых данных:

1. Использование сессий:
   На стороне сервера можно создать сессию, где хранятся все необходимые данные, а пользователю возвращается только идентификатор сессии (часто в виде cookie). Таким образом, данные остаются скрытыми и недоступными для редактирования со стороны клиента.

2. Токены и ключи:
   Можно сгенерировать уникальный токен или ключ, который будет ассоциирован с данными на сервере. Токен отправляется вместо самих данных и используется для их извлечения.

3. Скрытые поля с подписью:
   Для предотвращения редактирования скрытых данных можно использовать специальную подпись (например, HMAC), которая позволяет серверу проверить, что данные не были изменены клиентом.

4. Веб-страницы защищенные логином:
   Параметры можно передавать на защищенные зоны веб-сайта, где пользователь должен войти в систему для доступа. Доступ к данным будет разрешен только после аутентификации.

5. AJAX/JavaScript:
   Можно использовать клиентский скрипт для отправки данных на сервер асинхронно без отображения информации в адресной строке браузера или доступа к ней со стороны клиента.

6. Серверные перенаправления:
   В некоторых случаях сервер может хранить данные и перенаправлять клиента на новую страницу, передавая параметры в процессе внутренних обработок на сервере.

7. Кодирование данных:
   Можно кодировать данные на стороне клиента перед отправкой на сервер. Это может быть полезно для предотвращения их понимания и редактирования, но не обеспечивает полную безопасность, так как кодирование можно обратить.

Необходимо помнить, что безопасность данных при передаче их на сервер является критически важной, и ни один из способов передачи не должен использоваться для конфиденциальной информации, если он не соответствует стандартам безопасности данных.
Какие могут быть варианты решения проблемы?

Не выдумывать на ровном месте проблемы. Всё на стороне клиента можно отредактировать и подменить.
Тип hidden не подходит, потому что его можно редактировать? А что из html вы вообще можете НЕ редактировать? 

Вам тут стоит понять одну очень важную штуку: html/css/js образуют client side . Вы должны понимать, почему это называется вообще "Клиентом"? Потому что эта вся информация полностью загружается на клиента и он имеет к ней доступ.

По этому существует server side - часть программной системы, к какой конечный пользователь не имеет доступа, в отличии от клиентской части.

Цель сервера - обрабатывать запросы с клиента. Первое, что делает сервер с данными, которые ему отправил клиент - ВАЛИДИРУЕТ. Соответственно, если данные не валидны - запрос разворачивается обратно на клиента и отдаёт ему какую-то ошибку

Это всё так, к слову. Вам важно понять, что клиент может редактироваться, вы никак не сможете этого избежать. Но этого не стоит бояться, т.к. то, за что вы переживаете должно обрабатываться на сервере.

Client side должен обрабатывать данные перед отправкой на сервер (Но сервер обязан их повторно валидовать) и после получения данных от сервера для наилучшего представления ИХ конечному пользователю

UPD: для справки. Вы можете полностью редактировать html в режиме реального времени, но он не будет сохранён для всех пользователей, а только для вас, т.к. эта часть загружается только два вас как для конечного пользователя. Сам html хранится на сервере и является результатом работы сервера . Эту часть html, что вы видите в браузере вы можете редактировать.

Вы можете динамически подключать стили или их удалять. Можете менять скрипты , удалять их из сайта (Тогда отправка вообще работать не будет и, соответсвенно, отключится весь функционал, за который отвечаел скрипт) или добавить новые скрипты . А можете вообще написать свой скрипт прямо в консоли браузера и он будет работать.

Проблема в том, что даже после элементарной перезагрузки страницы (Через Ctrl + R или другими способами) это всё будет утеряно и вам загрузится тот самый html/css/js, который является результатом рабыты сервера того сайта, который вы просматриваете
Похожие вопросы