jump to navigation

Como generar nonces para Twitter 13.2.14

Posted by Migsar in Desarrollo Web.
Tags: , , , , , ,
trackback

Muchas veces programar es más cuestión de experiencia que de inteligencia, conocer el lenguaje y lo que ofrece y estar familiarizado con el tema. Ayer llevaba un par de horas viendo el API de Twitter para hacer un request firmado para poder usarlo como autorización para un sitio, en fin leyendo código de otros, viendo bibliotecas, stackoverflow y demás encontré una forma rápida y sencilla de generar nonces en Sitepoint – Understanding OAuth, me gustó mucho el artículo y recomiendo leerlo, sin embargo, aquí sólo hablaré de los nonces. La idea del nonce es un numero aleatorio que se usa sólo una vez, esto ayuda a la seguridad ya que es un parámetro más que es difícil de duplicar y en esencia, permite que las peticiones no sean duplicables, claro que para que funcione tiene que tener ciertos lineamientos, que no comprendo completamente por ser conceptos avanzados de criptografía.

La idea aquí es que tiene que ser una cadena alfanumérica de 32 bytes que no contenga caracteres especiales, en términos de Twitter “non-word characters”, se puede crear de muchas maneras y esta me gustó por práctica aunque al ponerlo en Google aparecen otras.

Primero resolvemos el problema del número de bytes, php tiene una función llamada md5() que regresa un numero hexadecimal de 32 caracteres, es decir, el string que necesitamos. Esta es una función usada para revisar la integridad de los datos, y produce este hash a partir de cierta entrada. En nuestro caso no interesa cual sea la salida o la entrada con tal de que el resultado sea aparentemente aleatorio, por lo que podemos usar otra función de php, mt_rand(), que es una versión nueva de un generador de números aleatorios basada en el algoritmo para generación de números aleatorios Mersenne Twister.

En resumen, nuestro nonce se reduce a dos funciones anidadas:

oauth_nonce = md5(mt_rand());

Finalmente, un poco al margen de esta entrada, php tiene una función para codificar de acuerdo al estandar RFC 3986 que es el que pide Twitter, esta función es rawurlencode().

Anuncios

Comentarios»

No comments yet — be the first.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: