TESTES DE DADOS DE CARTÃO
Vem se tornando cada vez mais frequente testes de dados de
cartão no e-commerce (transações para descoberta de números de
cartão, data de validade e código de segurança válidos).

Muitas vezes são utilizados “robôs” que adicionam automaticamente
os dados de cartão a serem testados no site.
Cada tentativa de compra é enviada ao banco, gerando para o
estabelecimento inúmeras transações invalidas.

Para evitar utilização de robôs
Consideramos como a melhor forma de prevenir estas ações a
implementação de um recurso denominado Captcha (Figuras com
números e/ou letras que são requisitadas em algumas compras e
cadastros na Internet).
Este recurso é utilizado para impedir a ação de softwares
automatizados, reduzindo a probabilidade de utilização de “robos” de
testes e deve ser implementado na página onde é efetuada a digitação
dos dados de cartão e para toda nova tentativa de pagamento deve
ser regerada a figura.

Para evitar a reutilização da página de pagamento
Temos histórico de casos onde é possível recarregar a página onde
os dados de cartão são digitados. O fraudador, utilizando a
chamada do browser, realiza uma transação e ao aparecer a página
de resposta informando a negação ou efetivação da compra, ele volta,
através do browser para a página de digitação dos dados e efetua
novamente o teste, sem necessitar passar por todo o processo de
compra.
Script para evitar esta utilização:

A primeira recomendação é em Javascript . Como funciona no
browser, possui fragilidade alta, porém é interessante sua utilização
em conjunto com outros recursos.

     <script type="text/javascript">
     function noBack(){window.history.forward()}
     noBack();
     window.onload=noBack;
     window.onpageshow=function(evt){if(evt.persisted)noBack()}
     window.onunload=function(){void(0)}
     </script>

Para chamar a função:

     Código: Selecionar todos
     echo "<a href="ExpirarSessão" onclick='function
     noBack();'>Sair</a>";


Outra opção é validar o REFERER, que apresenta uma fragilidade
baixa. Este campo na requisição HTTP informa de onde a requisição
veio, tornando possível verificar se a requisição originou da página
que processa o cartão e expirar a sessão:
Validar o Referer em php

     if (! $_SERVER['HTTP_REFERER'] ==
     'http://banco.com.br/formulario/transferencia/enviar.php)
     {
         chama o expira sessão;
     }


Validar o Referer em asp clássico:

     If Request.ServerVariables("HTTP_REFERER") = "URL que
     processa cartão" Then
        chama o expira sessão;


A recomendação mais complexa, porém a mais robusta, é a
implementação de tokens de sessão.
Exemplos estão disponíveis em:
https://www.owasp.org/index.php/Cross-
Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet.

Teste de dados de cartão

  • 1.
    TESTES DE DADOSDE CARTÃO Vem se tornando cada vez mais frequente testes de dados de cartão no e-commerce (transações para descoberta de números de cartão, data de validade e código de segurança válidos). Muitas vezes são utilizados “robôs” que adicionam automaticamente os dados de cartão a serem testados no site. Cada tentativa de compra é enviada ao banco, gerando para o estabelecimento inúmeras transações invalidas. Para evitar utilização de robôs Consideramos como a melhor forma de prevenir estas ações a implementação de um recurso denominado Captcha (Figuras com números e/ou letras que são requisitadas em algumas compras e cadastros na Internet). Este recurso é utilizado para impedir a ação de softwares automatizados, reduzindo a probabilidade de utilização de “robos” de testes e deve ser implementado na página onde é efetuada a digitação dos dados de cartão e para toda nova tentativa de pagamento deve ser regerada a figura. Para evitar a reutilização da página de pagamento Temos histórico de casos onde é possível recarregar a página onde os dados de cartão são digitados. O fraudador, utilizando a chamada do browser, realiza uma transação e ao aparecer a página de resposta informando a negação ou efetivação da compra, ele volta, através do browser para a página de digitação dos dados e efetua novamente o teste, sem necessitar passar por todo o processo de compra.
  • 2.
    Script para evitaresta utilização: A primeira recomendação é em Javascript . Como funciona no browser, possui fragilidade alta, porém é interessante sua utilização em conjunto com outros recursos. <script type="text/javascript"> function noBack(){window.history.forward()} noBack(); window.onload=noBack; window.onpageshow=function(evt){if(evt.persisted)noBack()} window.onunload=function(){void(0)} </script> Para chamar a função: Código: Selecionar todos echo "<a href="ExpirarSessão" onclick='function noBack();'>Sair</a>"; Outra opção é validar o REFERER, que apresenta uma fragilidade baixa. Este campo na requisição HTTP informa de onde a requisição veio, tornando possível verificar se a requisição originou da página que processa o cartão e expirar a sessão:
  • 3.
    Validar o Refererem php if (! $_SERVER['HTTP_REFERER'] == 'http://banco.com.br/formulario/transferencia/enviar.php) { chama o expira sessão; } Validar o Referer em asp clássico: If Request.ServerVariables("HTTP_REFERER") = "URL que processa cartão" Then chama o expira sessão; A recomendação mais complexa, porém a mais robusta, é a implementação de tokens de sessão. Exemplos estão disponíveis em: https://www.owasp.org/index.php/Cross- Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet.