как скрыть URL в кнопке ссылки в laravel - PullRequest
0 голосов
/ 12 сентября 2018

Я использую laravel 5.4, и у меня есть такой код

<td class="fit">
  <a href="{{url('addApprovalRequestor/'.$approval_requestor_id.'/'.$user->id)}}" 
     class="btn btn-primary btn-sm">Add
  </a>
</td>

Элемент проверки Google Chrome

enter image description here

My View

enter image description here Я чувствую, что использование этого кода небезопасно, есть способ как скрыть URL кода безиспользуя href или форму в laravel

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

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

Один из способов сделать это - передать значение в javascript и сделать событие щелчка следующим образом =>

<a href="#" 
     class="btn btn-primary btn-sm" onclick="go_to_link(event)">Add
  </a>

В javascript =>

let link = {{url('addApprovalRequestor/'.$approval_requestor_id.'/'.$user- >id)}};

function show_more_menu(e) {
    e.preventDefault();
    window.location = link;
 }

Но опять же нет способа скрыть код javascript.JS-Scripts работают внутри вашего браузера. Чтобы избежать этого, вы также можете попробовать сжать их, чтобы пользователь не мог их легко прочитать.=> здесь

Также вы можете отключить все нижеуказанные действия.

  • Щелкните правой кнопкой мыши
  • F12
  • Ctrl +Shift + I
  • Ctrl + Shift + J
  • Ctrl + Shift + C
  • Ctrl + U

    <body oncontextmenu="return false;">

     document.onkeydown = function(e) {
    
      if(event.keyCode == 123) {
         return false;
      }
      if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
         return false;
      }
      if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) {
         return false;
      }
      if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
         return false;
      }
      if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
         return false;
      }
    }
    
0 голосов
/ 12 сентября 2018

Что ж, я полностью согласен с @Erkan Özkök и @lofihelsinki, но, тем не менее, если вы хотите, чтобы проверка не выполнялась с помощью chrome inspect, попробуйте отключить кнопку правой кнопки мыши.

Вот фрагмент справки-

<html>
<head>
<script type="text/javascript">
    if (document.addEventListener) { // IE >= 9; other browsers
        document.addEventListener('contextmenu', function(e) {
            
            e.preventDefault();
        }, false);
    } else { // IE < 9
        document.attachEvent('oncontextmenu', function() {
            alert("You've tried to open context menu");
            window.event.returnValue = false;
        });
    }
</script>
</head>
<body>
Lorem ipsum...
</body>
</html>
0 голосов
/ 12 сентября 2018

Ответ на ваш вопрос: POST-запрос

Маршрут:

изменить тип маршрута с GET на POST

Route::post('/addApprovalRequestor','controllerName@methodName');

Blade

Используйте форму с пост-запросом, тогда URL будет скрыт

<form action="{{url('/addApprovalRequestor')}}" method="post">
     {{csrf_field()}}
     //save values in hidden input and this form will send it to server
     <input type="hidden" name="approval_requester_id" value="{{$approval_requester_id}}">
     <input type="hidden" name="user_id" value="{{$user->id}}">
   <button type="submit">submit</button>
</form>

Контроллер

function methodName(Request $request){
   dd($request->request);
   //do what you want here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...