рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЯреЛрдХрди рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗрдВ

рд╣рд╛рдп% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%ред рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рд╕рд╡рд╛рд▓ рдкреВрдЫрд╛ рдЬрд╛рддрд╛ рд╣реИ - "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЯреЛрдХрди рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ?"ред рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдордп рд╡рд┐рд╖рдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рджрд░реНрдЬрди рднрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдиреЗ рдореБрдЭреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд┐рди рдХреЛрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдЖрдЗрдП рд╕рдмрд╕реЗ рдЖрдо рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ:

  • рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдФрд░ рдирдП рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RefreshToken рдХреЗ рд╕рд╛рде рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рдкрд┐рди рдХреЛрдб рднреЗрдЬрдирд╛ред - рдЦрд░рд╛рдм, рд░рд┐рдлреНрд░реЗрд╢рдЯреЛрдХрди рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рднреМрддрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдореИрд▓рд╡реЗрдпрд░ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдореИрд╕реЗрдЬ рдореЗрдВ рдкрд┐рди рдХреЛрдб рдХреЛ RefreshToken рдХреЗ рд╕рд╛рде рд╕реЗрд╡ рдХрд░рдирд╛, рдлрд┐рд░ рдкрд┐рди рдХреЛрдб рдХрд╛ рд▓реЛрдХрд▓ рд╡реЗрд░рд┐рдлрд┐рдХреЗрд╢рди рдФрд░ RefreshToken рдХреЛ API рдкрд░ рднреЗрдЬрдирд╛ред - рдПрдХ рдмреБрд░рд╛ рд╕рдкрдирд╛, RefreshToken рдкрд┐рди рдХреЗ рд╕рд╛рде рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдФрд░ рд╡реЗрдХреНрдЯрд░ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред
  • рдкрд┐рди рдХреЛрдб рдХреЗ рд╕рд╛рде рдЦрд░рд╛рдм рд░реАрдлреНрд░реЗрд╢рдЯреЛрдХрди рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди, рдЬреЛ рдЖрдкрдХреЛ рдкрд┐рди рдХреЛрдб рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рд░рд┐рдлреНрд░реЗрд╢рдЯреЛрдХрдиред - рдкрд┐рдЫрд▓реА рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛, рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╢реЛрд╖рдг рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЯреЛрдХрди рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рднрдВрдбрд╛рд░рдг рдХреЗ рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдорд╛рдгреАрдХрд░рдг / рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдЬреБрдбрд╝реА рдмреБрдирд┐рдпрд╛рджреА рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╕рд╛рдордиреЗ рд░рдЦрддрд╛ рд╣реИ:

рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ - (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо + рдкрд╛рд╕рд╡рд░реНрдб) - рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
+ рдкрд╛рд╕рд╡рд░реНрдб рдХрднреА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рддреБрд░рдВрдд рд░реИрдо рд╕реЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
+ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ GET рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
+ рдХреАрдмреЛрд░реНрдб рдХреИрд╢ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рд╣реИ
+ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд╛рда рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рд╣реЛрддрд╛ рд╣реИ
+ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡реЗ рддрд╛рд░рд╛рдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ), рд╕рд╛рде рд╣реА, рдкрд╛рд╕рд╡рд░реНрдб рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ

AccessToken - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
+ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рдХрднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
+ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ GET рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

RefreshToken - рдПрдХ рдирдпрд╛ AccessToken + RefreshToken рдмрдВрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
+ рд░реИрдо рдореЗрдВ рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреА рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдпрд╛ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдореЗрдореЛрд░реА рдФрд░ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рддреБрд░рдВрдд рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
+ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд
+ рдЬрд╛рджреВ рдФрд░ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдкрд┐рди рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдиреАрдЪреЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдЧрд░ рдкрд┐рди рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рди рд╕рд╣реЗрдЬреЗрдВ
+ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ GET рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдкрд┐рди - (рдЖрдорддреМрд░ рдкрд░ 4 рдпрд╛ 6 рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) - рдХрд╛ рдЙрдкрдпреЛрдЧ RefreshToken рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ / рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
+ рдХрднреА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рддреБрд░рдВрдд рд░реИрдо рд╕реЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
+ рдХрднреА рднреА рдЖрд╡реЗрджрди рдХреА рд╕реАрдорд╛ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИ, рд╡реЗ рдХрд╣реАрдВ рднреА рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ
+ рдХреЗрд╡рд▓ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди RefreshToken рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

OTP 2FA рдХрд╛ рдПрдХ рдмрд╛рд░ рдХрд╛ рдХреЛрдб рд╣реИред
+ OTP рдХреЛ рдХрднреА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рд░реИрдо рд╕реЗ рддреБрд░рдВрдд рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
+ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ GET рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
+ рдУрдЯреАрдкреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╡рд╛рд▓реЗ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХреАрдмреЛрд░реНрдб рдХреИрд╢ рдЕрдХреНрд╖рдо
+ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдореЗрдВ рдЙрди рдкрд╛рда рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдУрдЯреАрдкреА рд╣реЛрддрд╛ рд╣реИ
+ OTP рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ
+ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдЬрд╛рдиреЗ рдкрд░ рд╕реНрдХреНрд░реАрди рд╕реЗ рдУрдЯреАрдкреА рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ

рдЕрдм рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рдЬрд╛рджреВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдХреЛ рдРрд╕реЗ рд░рд┐рдлреНрд░реЗрд╢рдЯреЛрдХрди рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рддрдВрддреНрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдкрд░рд┐рдгрд╛рдо рдХреЛ рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдХрд┐рд╕реА рд╣рдорд▓рд╛рд╡рд░ рдиреЗ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЪрд╛рдмреА рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХрдорд╛рддреНрд░ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдПрдкреАрдЖрдИ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрдпрди рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдФрд░ рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рд╣рдорд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЯреЛрдХрди рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо UUID рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
aec27f0f-b8a3-43cb-b076-e075a095abfe
AES / CBC / PKCS5Padding рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде, рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИ - рдХреБрдВрдЬреА рдореЗрдВ рдмрд╣реБрдд рдХрдо рдПрдиреНрдЯреНрд░реЙрдкреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

  1. рдкреИрдбрд┐рдВрдЧ - рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдЯреЛрдХрди рдореЗрдВ 36 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдПрдИрдПрд╕ рдореЗрдВ 128 рдмрд┐рдЯреНрд╕ рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЯреЛрдХрди рдХреЛ 48 рдмрд╛рдЗрдЯреНрд╕ (рдЬреЛ рдХрд┐ 128 рдмрд┐рдЯреНрд╕ рдХреА рдПрдХ рдмрд╣реБ рд╣реИ) рддрдХ рдЦрддреНрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкреВрдВрдЫ рдХреЛ PKCS5Padding рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рддред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдЬреЛрдбрд╝рд╛ рдореВрд▓реНрдп рдмрд╛рдЗрдЯреНрд╕ рдмрдЯреНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ
    01
    режреи режреи
    03 03 03
    04 04 04 04
    05 05 05 05 05
    06 06 06 06 06 06
    рдЖрджрд┐
    рд╣рдорд╛рд░рд╛ рдЖрдЦрд┐рд░реА рдмреНрд▓реЙрдХ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
    ... | 61 62 66 65 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА 0 рд╕реА |
    рдФрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЗрд╕ рдкреИрдбрд┐рдВрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╣рдо рдЧрд▓рдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ (рдЕрдорд╛рдиреНрдп рдЕрдВрддрд┐рдо рдмреНрд▓реЙрдХ рджреНрд╡рд╛рд░рд╛) рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореБрдбрд╝ рд╣реАрдк рд╕реЗ рдорд╛рдиреНрдп рд░реАрдлреНрд░реЗрд╢рдЯреЛрдХрди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдЯреЛрдХрди рдХрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рд╛рд░реВрдк - рднрд▓реЗ рд╣реА рд╣рдо рдкреИрдбрд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЯреЛрдХрди рдХреЛ 128 рдмрд┐рдЯреНрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд╛рдЗрдлрд╝рди рдирд┐рдХрд╛рд▓рдирд╛) рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЖрдПрдВрдЧреЗред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдореБрдбрд╝ рдХреЗ рд╕рднреА рд╣рдо рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдпреВрдпреВрдЖрдИрдбреА рдкреНрд░рд╛рд░реВрдк рдХреЗ рддрд╣рдд рдЖрддрд╛ рд╣реИред рдЕрдкрдиреЗ рд╡рд┐рд╣рд┐рдд рдкрд╛рда рд░реВрдк рдореЗрдВ UUID рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ 32 рдЕрдВрдХ 5 рд╕рдореВрд╣реЛрдВ 8-4-4-4-12 рдореЗрдВ рдПрдХ рд╣рд╛рдЗрдлрд╝рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
    XXXXXXXXXXXX-Mxxx-Nxxx-XXXXXXXXXXXX
    рдЬрд╣рд╛рдБ M рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ N рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрд╣ рд╕рдм рдЧрд▓рдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдЯреЛрдХрди рдХреЛ рдЫрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдПрдХ рдЙрдкрдпреБрдХреНрдд рдпреВрдпреВрдЖрдИрдбреА рд░рд┐рдлреНрд░реЗрд╢рдЯреЛрдХрди рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЫреЛрдбрд╝рдХрд░ред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ 64 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд╛рдЗрдЯреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмреЗрд╕ 64 рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛:

public String createRefreshToken() { byte[] refreshToken = new byte[64]; final SecureRandom secureRandom = new SecureRandom(); secureRandom.nextBytes(refreshToken); return Base64.getUrlEncoder().withoutPadding() .encodeToString(refreshToken); } 
рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЯреЛрдХрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
YmI8rF9pwB1KjJAZKY9JzqsCu3kFz4xt4GkRCzXS9-FS_kbN3-CF9RGiRuuGqwqMo-VxFDhgQNmgjlQFD2GvbA
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ (рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рдорд╛рди рд╣реЛрдЧрд╛):

 private static final String ALGORITHM = "AES"; private static final String CIPHER_SUITE = "AES/CBC/NoPadding"; private static final int AES_KEY_SIZE = 16; private static final int AES_BLOCK_SIZE = 16; public String encryptToken(String token, String pin) { decodedToken = decodeToken(token); //   rawPin = pin.getBytes(); byte[] iv = generate(AES_BLOCK_SIZE); //      CBC byte[] salt = generate(AES_KEY_SIZE); //       byte[] key = kdf.deriveKey(rawPin, salt, AES_KEY_SIZE); //  -    Cipher cipher = Cipher.getInstance(CIPHER_SUITE); //    cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, ALGORITHM), new IvParameterSpec(iv)); return cipher.doFinal(token); } public byte[] decodeToken(String token) { byte[] rawToken = token.getBytes(); return Base64.getUrlDecoder().decode(rawToken); } public final byte[] generate(int size) { byte[] random = new byte[size]; (new SecureRandom()).nextBytes(random); return random; } 

рдХрд┐рди рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ:

 private static final String CIPHER_SUITE = "AES/CBC/NoPadding"; 

рдХреЛрдИ рдкреИрдбрд┐рдВрдЧ рдирд╣реАрдВ, рдареАрдХ рд╣реИ, рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИред

 decodedToken = decodeToken(token); //   

рдЖрдк рдмреЗрд╕ 64 рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдХреЛ рдХреЗрд╡рд▓ рд▓реЗ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рд░реВрдк рд╣реИ (рдареАрдХ рд╣реИ, рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ)ред

 byte[] key = kdf.deriveKey(rawPin, salt, AES_KEY_SIZE); //  -    

рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ AES_KEY_SIZE рдЖрдХрд╛рд░ рдХреА рдПрдХ рдХреБрдВрдЬреА рдорд┐рд▓рддреА рд╣реИ, рдЬреЛ AES рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред Argon2, SHA-3, Scrypt рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдХрд┐рд╕реА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпреБрддреНрдкрддреНрддрд┐ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦрд░рд╛рдм рдЬреАрд╡рди pbkdf2 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ kdf рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ FPGA рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдирддрд╛ рд░рдЦрддрд╛ рд╣реИ)ред

рдЕрдВрддрд┐рдо рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдЯреЛрдХрди рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рдЗрд╕реЗ рдЪреБрд░рд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдореИрд▓рд╡реЗрдпрд░ рдпрд╛ рдПрдХ рдЗрдХрд╛рдИ рд╣реИ рдЬрд┐рд╕реЗ рдиреИрддрд┐рдХ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рддреМрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреБрдЫ рдФрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ:

  • рдмреИрдХрдЕрдк рд╕реЗ рдЯреЛрдХрди рдирд┐рдХрд╛рд▓ рджреЗрдВред
  • IOS рдкрд░, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдЪреЗрди рдореЗрдВ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░реЗрдВред
  • рдЖрд╡реЗрджрди рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рд▓реЗрдЦ (рдХреБрдВрдЬреА, рдкрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб, рдЖрджрд┐) рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рддрд┐рддрд░ рдмрд┐рддрд░ рди рдХрд░реЗрдВред
  • рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬреИрд╕реЗ рд╣реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рди рд░рдЦреЗрдВред
  • рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╕рд┐рдХреНрдпреЛрд░ рд░реИрдВрдбрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рд░реИрдВрдбрдо рдмрд╛рдЗрдЯреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП iOS рдкрд░ SecRandomCopyBytesред

рд╣рдордиреЗ рдЯреЛрдХрди рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдиреБрдХрд╕рд╛рди рдХреА рдЬрд╛рдВрдЪ рдХреА, рдЬреЛ рдХрд┐, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЬрд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд┐рд╖рдп, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХрд┐рд╕реА рднреА рдХрджрдо рдкрд░ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреВрдЫреЗрдВред рдкрд╛рда рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рднреА рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рд╕рдВрджрд░реНрдн:

CWE-311: рд╕реЗрдВрд╕рд┐рдЯрд┐рд╡ рдбреЗрдЯрд╛ рдХреА рдЧреБрдо рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди
CWE-327: рдмреНрд░реЛрдХрди рдпрд╛ рд░рд┐рд╕реНрдХреА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ
CWE-327: CWE-338: рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд░реВрдк рд╕реЗ рдХрдордЬреЛрд░ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ (PRNG) рдХрд╛ рдЙрдкрдпреЛрдЧ
CWE-598: GET рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪрдирд╛ рдПрдХреНрд╕рдкреЛрдЬрд░

Source: https://habr.com/ru/post/hi423753/


All Articles