Ajax-вызов, скрывающий ключ API со стороны клиента? - PullRequest
0 голосов
/ 18 октября 2018

Во-первых, я не смог найти ответ для своей проблемы.

Проблема в том, что когда я звоню, мне нужно добавить ключ api в заголовок.Я использую Ajax, но я не хочу, чтобы другие видели ключ api от devtool.

Мой код выглядит так:

    $(document).ready(function(){
  $("#login").click(function(e){
    e.preventDefault();
      $.ajax({
        type:"POST",
        url:'/resource/auth/login',
        data: {
              username: username.value,
              password:password.value
            },

        headers: { "ApiKey": "mykey" },
        success: function(){
          alert("Logged in");

Есть ли способ скрыть значение "mykey"вызов API не будет работать, если я не предоставлю ключ в заголовке

Заранее спасибо!

1 Ответ

0 голосов
/ 19 октября 2018

Я надеюсь, что буду работать на вас, этот код для просмотра:

@php
$secret_key = hash('sha256', 'some_secret_key');
$secret_iv = substr(hash('sha256', 'some_secret_iv'),0,16);
@endphp

$(document).ready(function(){
  $("#login").click(function(e){
   e.preventDefault();
   $.ajax({
    type:"POST",
    url:'/resource/auth/login',
    data: {
          _token:{{csrf_token()}}
          username: "{{openssl_encrypt('your_username','AES-256-CBC', $secret_key, 0, $secret_iv)}}",
          password: "{{openssl_encrypt('your_password','AES-256-CBC', $secret_key, 0, $secret_iv)}}"
        },

    headers: { "ApiKey": "{{openssl_encrypt('your_apikey','AES-256-CBC', $secret_key, 0, $secret_iv)}}" },
    success: function(resp){
      console.log(resp);
      },
    error: function(err){ 
      console.log(err);
     }
}
);

в функции контроллера, которую вы можете расшифровать, это получить имя пользователя и пароль:

public function login(Request $request){
  $secret_key = hash('sha256', 'some_secret_key');
  $secret_iv = substr(hash('sha256', 'some_secret_iv'),0,16); 

  $username = openssl_decrypt($request->input('username'), 'AES-256-CBC', $secret_key, 0, $secret_iv);
  $password = openssl_decrypt($request->input('password'), 'AES-256-CBC', $secret_key, 0, $secret_iv);
  $apikey = openssl_decrypt($request->header('ApiKey'), 'AES-256-CBC', $secret_key, 0, $secret_iv)

  echo 'Hye! your username is ' $username. ',your password is '. $password .'and your api key is '.$apikey;

  }

здесь openssl_encrypt иopenssl_decrypt - это функции php, о них вы можете прочитать в документации: openssl_encrypt:

openssl_decrypt:

Убедитесь, что ваши secret_key и secret_iv должныбыть одинаковым с обеих сторон.

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