(presumimos que uma instância Konsolidate de trabalho esteja em $ K)
- Konsolidate – http://konsolidate.nl
- Raça – https://github.com/rspieker/konsolidate_breed
Existem algumas maneiras de trabalhar com o objeto de solicitação de raça
dada a solicitação GET: http://example.com/request.php?foo=bar
A abordagem implícita, apenas perguntando a própria solicitação, que determinará o tipo de solicitação apropriado (GET neste caso) e procurará a variável
$foo = $K->get('/Request/foo');
A abordagem explícita, pedindo ao Request para obter a variável do módulo GET RequestType
$foo = $K->get('/Request/GET/foo');
É o mesmo que a notação de destroços do trem, caso você prefira:
$foo = $K->Request->GET->foo;
Substitua GET pelo tipo de solicitação desejado
POSTAR:
$foo = $K->get('/Request/POST/foo');
EXCLUIR:
$foo = $K->get('/Request/DELETE/foo');
COLOCAR:
$foo = $K->get('/Request/PUT/foo');
Observe que todos os tipos de solicitação diferentes de GET sempre também criarão o tipo GET, que captura as variáveis adicionadas à string de consulta
Combinando tipos de solicitação
Imagine uma solicitação POST que posta ‘foo = bar’, mas também tem ‘foo = baz’ na string de consulta do URL:
por exemplo: curl -X POST --data "foo=bar" "http://example.com/request.php?foo=baz"
$foo = $K->get('/Request/foo');
retorna ‘bar’, pois a variável é lida do buffer POST (pois este é o tipo de solicitação real)
$foo = $K->get('/Request/GET/foo');
retorna ‘baz’, pois a variável é lida explicitamente do buffer GET
$foo = $K->get('/Request/POST/foo');
retorna ‘bar’, já que a variável é lida explicitamente do buffer POST
Solicitações adulteradas O
PHP tem algumas peculiaridades em como processa variáveis de solicitação
Injeção de byte NULL: Se um nome de variável contém um byte NULL, apenas a parte do nome até o byte NULL é usada.
Este comportamento é usado por visitantes maliciosos para enganar os aplicativos
por exemplo: curl -X POST --data "foo%00led=bar" "http://example.com/request.php?foo=baz"
A solicitação de raça tentará (!) Proteger contra este vetor de ataque
$foo = $K->get('/Request/foo');
retorna falso, pois a variável é lida do buffer POST, mas não pode ser confiável
$foo = $K->get('/Request/GET/foo');
retorna ‘baz’, pois a variável é lida explicitamente do buffer GET
$foo = $K->get('/Request/POST/foo');
retorna falso, pois a variável é lida explicitamente do buffer POST, mas não pode ser confiável
Como você pode ver, a Solicitação de raça não fornecerá o valor de ‘foo’ (nem ‘foo% 00led’, que não seria conhecido pelo PHP de qualquer maneira, a menos que você estivesse usando um POST com "Content-type: multipart/form-data"
, então a variável SERÁ conhecida)foo%00led