Как передать идентификатор в контроллер без использования скрытого поля формы? - PullRequest
0 голосов
/ 28 июня 2018

Предположим, у меня есть следующая форма, и я хочу опубликовать комментарий к теме на форуме:

<form action="{{ route('post.store') }}" method="POST">
    @csrf
    <label>Response
        <textarea name="content"></textarea>
    <label>
    <button>Post Response</button>
</form>

Чтобы связать это сообщение с темой, на которую я отвечаю, я также хочу передать идентификатор темы, на которую я отвечаю. Я могу сделать это с помощью скрытого поля ввода, например:

<input type="hidden" value="{{ $thread->id }}">

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

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

Также я не считаю, что это проблема авторизации: авторизованные пользователи имеют право отвечать на эти сообщения - если есть способ, которым я могу использовать авторизацию в своих интересах, я бы хотел знать, но я просто не вижу, чтобы это решалось так.

1 Ответ

0 голосов
/ 28 июня 2018

ТЛ; др

Вы можете сохранить фактический идентификатор потока во временной переменной сеанса или файле cookie.


Я думаю, что вы решаете эту проблему неправильно, вам не нужно беспокоиться о том, что пользователь вводит, скорее, вы должны беспокоиться о том, как поступить с тем, что пользователь вводит. Ваш код должен быть готов обработать любую такую ​​попытку обхода, и поэтому вы должны настроить правильную проверку / дезинфекцию вместо того, чтобы следовать философии «безопасность через неизвестность» .

Как правило, вы проверяете, разрешено ли пользователю выполнять CRUD действия с соответствующим потоком, прежде чем выполнять какую-либо другую проверку.

Вы также упоминаете:

Моя проблема в том, что пользователь может редактировать значение идентификатора и в конечном итоге отправлять ответ в какую-то другую ветку на форуме.

Откровенно говоря, до тех пор, пока они не выполняют CRUD-действия, на которые они не способны, я не вижу проблемы. По правде говоря, я не вижу в этом моей проблемы (как разработчика), поскольку пользователь будет печатать ответ и публиковать его в совершенно другой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...