Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prevenir ataque CSRF #8

Open
bitts opened this issue Apr 5, 2021 · 1 comment
Open

Prevenir ataque CSRF #8

bitts opened this issue Apr 5, 2021 · 1 comment
Assignees

Comments

@bitts
Copy link
Owner

bitts commented Apr 5, 2021

Implementação de bloqueio cross-site request forgery (falsificação de solicitação entre sites)

Método: utilização de token
Esse método consiste em incluir um token (string) aleatório em cada solicitação, ou seja, será adicionado um campo oculto a cada formulário existente com o token como valor.

Esse token é gerado pelo PHP e armazenado em uma sessão para quando existir uma requisição, o sistema fazer a comparação com o valor que foi preenchido automaticamente (ou mal-intencionada) no formulário.

$_SESSION['token'] = md5(uniqid(rand(), true));)

Ou

function generateRandomString($length = 15) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++)
        $randomString .= $characters[rand(0, $charactersLength - 1)];

    return $randomString;
} 
$_SESSION['Token'] = generateRandomString();

<input type="hidden" name="token" value="<? php echo $_SESSION['token']?>" />
@bitts bitts self-assigned this Apr 5, 2021
@bitts bitts added the Melhorias label Apr 5, 2021
@bitts
Copy link
Owner Author

bitts commented Apr 5, 2021

Tratando SESSION no Joomla

$session = JFactory::getSession();

$session->set('number', 5);
echo $session->get('number');

$session->clear( 'number' );

$token = $session->getToken(true); 

JFactory::getApplication()->getSession()->destroy();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant