вопрос безопасности платежного шлюза php - PullRequest
0 голосов
/ 31 мая 2018

У меня есть тестовый платежный шлюз, который я использую в локальной среде.

Я написал функцию, которая проверяет, является ли имя хоста localhost, а другие тестовые хосты затем перенаправляют на этот шлюз.

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

Мой BankController:

  function request($bankName, $price,$user = null)
{
    switch (strtoupper($bankName)) {
        case Bank::MELLAT:
            return $this->redirectTo(new Mellat(), $price,$user);



       //ZARINPAL is my test gateway
        case Bank::ZARINPAL:
            if (is_testing_host())
                return $this->redirectTo(new Zarinpal(), $price,$user);



        case Bank::SAMAN:
            return $this->redirectTo(new Saman(), $price,$user);

        case Bank::SAMANKISH:
            return $this->redirectTo(new SamanKish(), $price,$user);
        // other banks here...
    }

    throw new \Exception('Gateway not found');
}

is_testing_host функция:

 function is_testing_host()
{
 return in_array(@$_SERVER['REMOTE_ADDR'], ['localhost', '127.0.0.1','::1'])
 || request()->getHost() == 'site.test';
}

Html выбрать шлюз:

<select class="form-control" style="padding:5px;" name="bank" id="bank">
     @if(is_testing_host())
          <option value="zarinpal" selected="selected">Zarinpal</option>
     @else
          <option value="saman">درگاه پرداخت سامان کیش</option>
     @endif
</select>

Мой тест:

Я изменил выбранное значение на zarinpal (тестовый шлюз) с inspect elemnt, затем щелкнул submit btn.Он отправил zarinpal, но перенаправил на другой шлюз. (Похоже, что ошибки нет)

Может кто-нибудь помочь мне найти, как он использовал этот шлюз?!

...