【问题标题】:How To Hidden Password in URL如何在 URL 中隐藏密码
【发布时间】:2020-05-14 12:51:08
【问题描述】:

我不知道 url 上的密码是如何隐藏的 我遇到了这样的问题http://127.0.0.1:8000/bulletin/%201/edit?passwordC=11111&page=1

我的观点

<form>
                        <div class="form-row" style="specified-width:200; position: absolute; bottom:0; margin-bottom:10">
                            <input style="width:150px" type="password"  placeholder="Password" name="passwordC">
                            <input type="hidden"  value="{{$buletin->currentPage()}}" name="page">
                            <button style="margin:0 5px" formAction="/bulletin/ {{ $tampil_B->id }}/deleteOper" type="submit" class="btn btn-danger">Delete</button>
                            <button formAction='(url(edit))' type="submit" class="btn btn-primary">Edit</button>
                        </div>
                    </form>

我的路由器

route::get('/bulletin/{id}/edit','BulletinController@edit');

我的控制器

  public function edit (Request $request, $id)
{
    $buletin = \App\Dashboard::find($id);
    $url = "/?page={$request->page}";



    if(is_null($buletin->password)){

        $request->session()->flash('failed', 'Cant Edit Because this post not had been set  password ');
        return view('bulletin.edit_nopass', ['buletin' => $buletin,'url'=> $url]);

    }

    if (hash::check($request->passwordC,$buletin->password)){
        return view ('bulletin.edit', ['buletin' => $buletin, 'url'=> $url]);//save and go back to card

        } else {

            $request->validate([
                'passwordC' => 'required|required_with:password|same:password'
                ],[
                'passwordC.required_with' => "Password not match",
                'passwordC.required' => "Password Required",
                'passwordC.same' => "The Password You Entered Do Not Match.Please Try Again"
                    ]);
                }

【问题讨论】:

  • 使用 Post 方法
  • 你能发布你的整个编辑操作代码吗?
  • 我显示在顶部
  • 所以你更新了一些你的行动
  • 不,还是一样

标签: laravel function view controller routing


【解决方案1】:

问题是您如何编写此解决方案的副产品。要从 URL 中删除密码,您必须找到不同的机制来访问编辑页面。

就目前而言,您正在从表单向编辑页面发出 GET 请求,并且因为它是 GET 请求,所以表单参数在 URL 中发送。

然后从编辑控制器方法返回一个视图,因此永远不会重写 URL。

这就是为什么你会遇到这个问题,至于如何解决这个问题,有很多选择;您可以发布到将批准存储在会话中的端点,然后您在中间件或控制器中签入,然后返回视图。你可以使用 Laravel 的重新确认密码中间件。甚至是 POST-REDIRECT-GET 模式,您可以在其中发布表单,然后从那里重定向到编辑页面,并执行您需要做的任何事情来保护编辑端点。

有很多选择,但不可能告诉你如何解决这个问题,因为你需要重新考虑如何解决它。

【讨论】:

  • 我听不懂,先生,
【解决方案2】:

首先,使用GET 发送是不正确的。但如果它非常重要,你有两种方式:

1.使用encrypt。但它也不安全。因为甚至有可以解密的在线网站。 2.使用Hash:make。散列是单方面的,意思是你不能去散列

【讨论】:

    猜你喜欢
    • 2017-07-29
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2021-11-15
    相关资源
    最近更新 更多