← retour aux snippets

sys.set_int_max_str_digits: limiter la conversion d'entiers énormes

Réduire le risque DoS sur int(str) en bornant le nombre de chiffres (3.11+).

python security #sys#security

objectif

Réduire le risque DoS sur int(str) en bornant le nombre de chiffres (3.11+).

code minimal

import sys
if hasattr(sys, "set_int_max_str_digits"):
    old = sys.get_int_max_str_digits()
    sys.set_int_max_str_digits(1000)
    print(sys.get_int_max_str_digits() == 1000)  # attendu: True
else:
    print(True)  # API non disponible: rien à faire

utilisation

import sys
if hasattr(sys, "set_int_max_str_digits"):
    sys.set_int_max_str_digits(2000)
    print(sys.get_int_max_str_digits() == 2000)
else:
    print(True)

variante(s) utile(s)

import sys
print(hasattr(sys, "set_int_max_str_digits"))

notes

  • Disponible en Python 3.11+; sur versions antérieures, ignorez.
  • Fixez une limite raisonnable selon vos besoins (ex: 1000–5000).