Php 如何在不使用隐藏表单字段的情况下将ID传递给控制器?

Php 如何在不使用隐藏表单字段的情况下将ID传递给控制器?,php,laravel-5.6,Php,Laravel 5.6,假设我有以下表格,我想在论坛的某个帖子上发表评论: <form action="{{ route('post.store') }}" method="POST"> @csrf <label>Response <textarea name="content"></textarea> <label> <button>Post Response</button> <

假设我有以下表格,我想在论坛的某个帖子上发表评论:

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

@csrf
回应
回复后
为了将这篇文章与我回复的线程相关联,我还想传递我回复的线程的ID。我可以用一个隐藏的输入字段来实现这一点,如下所示:

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

我的问题是,用户可以编辑ID的值,并最终将响应提交给论坛上的其他线程。我知道这是一个有点吹毛求疵的问题,但我不希望用户能够做到这一点

我还可以如何将此ID传递给控制器方法以存储帖子?我可以通过会话数据传递它吗,或者也许我忽略了另一种方式

我也不认为这是一个授权问题:经过身份验证的用户有权回复这些帖子-如果有一种方法可以让授权发挥我的优势,我很想知道,但我不认为它会像这样得到解决。

tl;博士 您可以将实际线程ID存储在临时会话变量或cookie中


我认为你正在错误地解决这个问题,你不应该担心用户输入的内容,而应该担心如何处理用户输入的内容。您的代码应该准备好处理任何此类绕过尝试,因此,您应该设置正确的验证/消毒,而不是遵循以下原则

通常,在执行任何其他验证之前,检查用户是否被允许对相关线程执行操作

你还提到:

我的问题是,用户可以编辑ID的值,并最终将响应提交给论坛上的其他线程

坦率地说,只要他们没有执行他们不应该执行的CRUD操作,我就看不出有什么问题。老实说,我并不认为这是我的问题(作为开发人员),因为用户将键入回复并将其发布到完全不同的线程