Trabalhar com OAuth e protocolos de autenticação semelhantes requer o uso de tokens temporários que representam handshakes exclusivos entre vários serviços da Web. Esses tokens devem ser exclusivos, armazenados de forma segura e, quanto mais longos, melhor.
Como estou fora do jogo do PHP há algum tempo, estava pesquisando como criar esses tokens sem bibliotecas adicionais. O snippet a seguir faz o truque:
// bin2hex(random_bytes($length)) $token = bin2hex(random_bytes(64)); /* Examples: 39e9289a5b8328ecc4286da11076748716c41ec7fb94839a689f7dac5cdf5ba8bdc9a9acdc95b95245f80a00d58c9575c203ceb541507cce40dd5a96e9399f4a 1c46538c712e9b5bf0fe43d692147004f617b494d004e29daaf33e4528f253db5d911a690856f0b77cfa98103c8231bffff869f179125d17d28e52bfadb9f205 ... */
Se não estiver usando o PHP7 ou superior, o senhor pode recorrer ao seguinte:
$token = bin2hex(openssl_random_pseudo_bytes(64));
Ter o respaldo do OpenSSL para a geração de tokens dá a confiança de que o token será exclusivo. É claro que o senhor também pode fazer uma verificação de armazenamento para garantir que o token não esteja em uso, mas se usar um comprimento de 64 ou maior, as chances de repetir um token são incrivelmente pequenas!
Designing for Simplicity
Antes de começarmos, vale a pena dedicar um breve momento para me apresentar aos senhores. Meu nome é Mark (ou @integralist se o Twitter for sua ferramenta de comunicação preferida) e atualmente trabalho para a BBC News em Londres, Inglaterra, como engenheiro principal/técnico…
API de visibilidade de página
Um evento que sempre faltou no documento é um sinal de quando o usuário está olhando para uma determinada guia ou para outra guia. Quando o usuário sai do nosso site para ver outra coisa? Quando ele volta?