Trabalhar nas extensões do Phabricator me levou de volta ao mundo do PHP, uma linguagem que eu só tinha tocado por meio de plug-ins do WordPress e temas de blog nos últimos anos. Apesar de estar longe da linguagem, consegui voltar rapidamente e senti um pequeno conforto de “estar de volta em casa”… até perceber que o Phabricator não era muito documentado e que eu precisaria mergulhar fundo no código-fonte para descobrir como fazer quase todas as tarefas.


Um erro que me deixou perplexo por um tempo foi o seguinte:


O senhor está tentando salvar alguns dados no Phabricator, mas a solicitação feita pelo seu navegador incluiu um token incorreto. Recarregue a página e tente novamente. Talvez o senhor precise limpar seus cookies.


Eu estava tentando criar e salvar um PhabricatorAuthTemporaryToken para permitir o login por meio de um serviço de terceiros, e a solicitação desse serviço para o Phabricator foi feita em segundo plano, portanto, não havia PHCID porque não havia sessão, portanto, o token CSRF era inválido. Essencialmente, eu precisava de uma maneira de escrever no Phabricator sem uma etapa de validação CSRF (via PHCID). A solução era simples:



// Turn off CSRF check
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
// Save token
id(new PhabricatorAuthTemporaryToken())
  ->setTokenResource($transaction_code)
  // ...
  ->save();
// Turn CSRF check back on
unset($unguarded);


AphrontWriteGuard::beginScopedUnguardedWrites() me permitiu desativar a verificação de CSRF, salvar o token e, em seguida, ativar novamente a verificação de CSRF via unset. Pouco código, mas demorou muito tempo para ser encontrado!


Adoro o fato de bibliotecas avançadas como o Phabricator insistirem nessas verificações de segurança sem que os desenvolvedores tenham que fazer isso explicitamente; também adoro o fato de que é fácil desativar essa verificação momentaneamente. Compartilharei mais dicas sobre PHP/Fabricator à medida que tiver problemas!

  • 9 demonstrações de Canvas incríveis

    O <canvas> tem sido uma revelação para os especialistas em visual entre nós. O Canvas fornece os meios para animações incríveis e eficientes com o bônus adicional de não usar Flash; em vez disso, esses desenvolvedores podem exibir suas incríveis habilidades em JavaScript. Aqui estão nove demonstrações inacreditáveis de canvas que…

  • API fetch

    Um dos segredos mais mal guardados sobre AJAX na Web é que a API subjacente a ele, XMLHttpRequest, não foi realmente criada para o uso que estamos fazendo dela. Fizemos bem em criar APIs elegantes em torno do XHR, mas sabemos que podemos fazer melhor. Nosso esforço para…