J'exploite actuellement la vulnérabilité discutée ici
https://auth0.com/blog/2015/03/31/critique-vulnérabilités-in-json-web-Token-Libraires/
Lorsque le type d'algorithme dans JWT peut être changé de RSA en HMAC et signer le jeton avec une clé publique donnée.
Cependant, j'ai écrit le ci-dessous python code:
import jwt
import base64
# consider 'publickey' as the servers public key
code =
jwt.encode({'login':'test'},'publickey',algorithm='HS256')
Cela jette une erreur:
InvalidKeyError: The specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.
Je cherche une alternative où je peux le signer avec succès à l'aide de la clé asymétrique.
Merci
Utilisez une ancienne version de Pyjwt (0.4.3) où cette exception n'a pas encore été mise en œuvre.
pip install pyjwt==0.4.3
Lors de l'exécution de votre programme, il indique la ligne qui jette l'exception:
File "/some-path/site-packages/jwt/algorithms.py", line 151, in prepare_key
'The specified key is an asymmetric key or x509 certificate and'
jwt.exceptions.InvalidKeyError: The specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.
Donc, éditez le fichier /some-path/site-packages/jwt/algorithms.py autour de la ligne 151, de sorte qu'il ne jette plus l'exception.
Par exemple, mettez ceci là-dessus:
invalid_strings = []