Как скрыть пароль в URL - PullRequest
1 голос
/ 29 января 2020

Я не знаю, как скрытый пароль на URL, у меня возникла такая проблема http://127.0.0.1: 8000 / бюллетень /% 201 / edit? PasswordC = 11111 & page = 1

My View

<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"
                    ]);
                }

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Прежде всего, неправильно отправлять с GET. Но если это очень важно, у вас есть два пути:

1.use encrypt .но это тоже не безопасно. Потому что там есть даже онлайн сайты, которые можно расшифровать. 2.использование Hash:make. Хеширование является односторонним. Это означает, что вы не можете деха sh это

0 голосов
/ 29 января 2020

Проблема является побочным продуктом того, как вы написали это решение. Чтобы удалить пароль из URL, вам нужно будет найти другой механизм, чтобы попасть на страницу редактирования.

В текущем состоянии вы выполняете запрос GET к странице редактирования из формы, и, поскольку это запрос GET, параметры формы отправляются в URL-адресе.

Из метода контроллера редактирования вы затем возвращаете представление, поэтому URL никогда не переписывается.

То есть почему у вас возникла эта проблема относительно того, как Вы могли бы решить это, есть много вариантов; Вы можете отправить сообщение в конечную точку, которая сохраняет утверждение в сеансе, который вы затем проверяете в промежуточном программном обеспечении или в контроллере, а затем возвращаете представление. Вы можете использовать промежуточное ПО для повторного подтверждения пароля из Laravel. Или даже шаблон POST-REDIRECT-GET, в котором вы публикуете форму, а затем перенаправляете ее на страницу редактирования с тем, что вам нужно сделать для защиты конечной точки редактирования.

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

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