Skip to content

Fixing formSpoofing - #63

Open
3nderXP wants to merge 3 commits into
robsonvleite:masterfrom
3nderXP:master
Open

Fixing formSpoofing#63
3nderXP wants to merge 3 commits into
robsonvleite:masterfrom
3nderXP:master

Conversation

@3nderXP

@3nderXP 3nderXP commented Oct 25, 2024

Copy link
Copy Markdown

Nesta PR, corrigi um problema no formSpoofing que impedia a obtenção correta dos dados enviados via POST, PUT, PATCH e DELETE quando a requisição era originada de um servidor ou domínio diferente. Embora os dados fossem recebidos, não estavam sendo atribuídos corretamente ao body.

Agora, utilizei file_get_contents("php://input") para todos os métodos (exceto o GET), juntamente com filter_var_array e json_decode, de forma similar ao que era feito anteriormente com filter_input_array e parse_str().

Peço que revisem essa alteração e me informem se há necessidade de ajustes. Este update é crucial para que eu possa construir uma API que suporte servidores e domínios diferentes.

Fixing formSpoofing to receive body data in any method other than GET
@3nderXP

3nderXP commented Oct 25, 2024

Copy link
Copy Markdown
Author

Aproveitei e corrigi um erro da minha parte, onde, por não checar se o json_decode retornava null acabava por dar um erro no filter_var_array. Só acrescentei um json_decode(...) ?? [] que resolveu :)

@3nderXP

3nderXP commented Dec 17, 2024

Copy link
Copy Markdown
Author

Ajustei partes do meu código anterior, corrigindo um detalhe crucial na funcionalidade principal da função formSpoofing.

Inicialmente, removi uma parte do código original por considerar desnecessária, mas percebi agora que ela é fundamental. Reintroduzi a lógica anterior, com algumas melhorias, para garantir que os dados do POST sejam filtrados corretamente, incluindo o _method, e atribuídos ao httpMethod. Essa alteração foi feita especificamente para reabilitar o spoofing.

Um ponto interessante que observei: na versão original (sem as minhas alterações), dependendo de como e onde o request é feito, o body pode conter os dados do formulário/JSON junto com alguns caracteres e metadados bem peculiares — algo que chamou bastante minha atenção hahaha.

Adicionei abaixo algumas imagens para explicar melhor o motivo desses ajustes e contextualizar a necessidade das correções.
Obs: As prints foram feitas com o código original, antes dos meus updates.

Importante: O response deve ter o método HTTP dentro de message, enquanto os parâmetros identificados pelo router devem ficar dentro de data. Isso é necessário apenas para facilitar a identificação do problema e garantir que os dados estão sendo recebidos corretamente. Dessa forma, podemos verificar se o spoofing está funcionando corretamente e se o método HTTP está sendo manipulado como esperado.


Com JSON:

Captura de tela de 2024-12-17 11-17-54
Captura de tela de 2024-12-17 11-17-44


Com Form:

Captura de tela de 2024-12-17 11-07-54-1
Captura de tela de 2024-12-17 11-07-54
Captura de tela de 2024-12-17 11-07-35

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant