FastAPI 0.140.0-0.141.1 inaweza kufichua thamani ghafi zilizofungwa na madarasa ya Secret ya Pydantic wakati njia (route) inaporudisha dictionary au list ya kawaida bila response model. Kuvuja huku kunaweza kufichua nywila, funguo za API, au sifa nyingine yoyote ambayo msanidi programu alijaribu kuificha.

Kwa nini hitilafu hii ni muhimu

FastAPI hujenga majibu ya JSON kwa kuchunguza aina ya kitu kinachorudishwa na function ya view. Ukitoa response model, FastAPI inampa object hiyo Pydantic, ambayo huficha SecretStr kama "**********". Katika matoleo yaliyoathiriwa, framework inatambua tu aina ya SecretStr iliyojengwa ndani. Unapounda subclass ya Secret (au kutumia aina ya siri iliyobinafsishwa) na kurudisha object hiyo ndani ya dict au list ya kawaida, FastAPI inatumia mchakato wa jumla wa kubadilisha object kuwa dict. Mchakato huo unafikia sifa ya siri (private attribute) inayoshikilia thamani halisi ya siri na kuituma kwa mteja bila mabadiliko.

Kuvuja huku hutokea tu wakati masharti yote matatu yanatimizwa:

  • Aina ya siri ni subclass ya darasa la msingi la Secret la Pydantic.
  • Njia (route) haijatangaza response model.
  • View inarudisha siri hiyo ndani ya dict au list ya kawaida.

Jinsi ya kulinda siri zako leo

  • Tangaza response model kwa kila endpoint ambayo inaweza kurudisha data yenye siri. Kisha FastAPI itaruhusu Pydantic ishughulikie serialization, ambayo huficha thamani kwa usahihi.
  • Funga siri ndani ya uwanja (field) wa Pydantic BaseModel badala ya kurudisha vyombo (containers) vya kawaida. Aina ya uwanja wa model inaweza kuwa darasa la siri linalotambulika, kuhakikisha ushughulikiaji sahihi.
  • Sajili custom JSON encoder kwa subclass yako ya siri ikiwa lazima uendelee na mtindo wa sasa wa kurudisha data. Encoder inaweza kurudisha uwakilishi uliofichwa ("**********").

Ukali na mwitikio wa jamii

Tatizo hili lina ukali wa chini. Linahitaji mipangilio maalum ili litokee, lakini kufichuka kwa sifa (credentials) kwa bahati mbaya ni hatari, hasa katika API za umma au huduma zinazorekodi majibu.

Funzo: Kuacha kuweka response model kunaweza kugeuza kifuniko cha siri kilichokusudiwa vizuri kuwa uvujaji wa data. Kuongeza response models za wazi au encoders za kustom ni njia rahisi na ya kuaminika ya kuficha sifa hadi FastAPI itakapotoa marekebisho ya ndani.