Dva: oauth2 рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдирдореВрдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рд╕рд┐рддре░ 2016  ┬╖  26рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dvajs/dva

рдХреНрдпрд╛ dva рдХреЗ OAuth2 рдХреЗ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдореЛрдбрд▓ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ, рдФрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЬрд╣рд╛рдБ рддрдХ @u0x01 рдХреЗ рдЙрддреНрддрд░ рдХреА рдмрд╛рдд рд╣реИ, рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рднреНрд░рд╛рдордХ рдФрд░ рдмреЗрдХрд╛рд░ рдЬрд╛рдирдХрд╛рд░реА рдХрд╣реА

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рд╕реАрдзреЗ рд╕рддреНрд░ рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ рдлреЗрдВрдХрдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЛрдб рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдХреНрд╕рд░ рд╕рддреНрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рдПрдХ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рддреНрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

  2. XSS рдФрд░ CSRF рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

    2.1 рд╕реАрдПрд╕рдЖрд░рдПрдл рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП HTTP рд╣реЗрдбрд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдмреИрдХ-рдПрдВрдб рдХреЗрд╡рд▓ рд╣реЗрдбрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗрд╡рд▓ рдкреНрд░рдкрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддреА рд╣реИ, рдФрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ JS рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддрд╛ (рдЬрдм CORS рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рд╣реЛ)

    2.2 рдПрдХреНрд╕рдПрд╕рдПрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХрд╛ рдлреНрд░рдВрдЯ-рдПрдВрдб рднрдВрдбрд╛рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЬреЗрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЛрдореЗрди рдкрд░ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдФрд░ HttpOnly рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХреБрдХреАрдЬрд╝ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВред рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реАрдорд┐рдд рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкрд░ рд╕рдЦреНрддреА рд╕реЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд▓рдЧрднрдЧ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ, XSS рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдорддрд▓рдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛ рд░реЛрдХрдирд╛ + рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП?рдпрд╣ HttpOnly рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрд╛рдп рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

  3. рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрдкрд╛рдп рдмреИрдХ рдПрдВрдб рдкрд░ рдПрдХ рдкреНрд░рд╡реЗрд╢ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╣реИ, рдФрд░ CORS рдХреЗ Access-Control-Allow-Origin рдХреЛ рдХреЗрд╡рд▓ рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЛрдореЗрди рдирд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, HttpOnly рдХрд╛ рд╕рддреНрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЛрдб рдЬреИрд╕реЗ X-CSRF-TOKEN рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЛрдб OAuth рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд access_token рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИ . рдХреБрдХреА рдФрд░ рдЗрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб рдЕрдЬрд╛рдХреНрд╕ рдпрд╛ рдлрд╝реЗрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдмреИрдХ-рдПрдВрдб рдХреБрдХреА рдХреА рд╡реИрдзрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрд╕реЗ X-CSRF рд╣реЗрдбрд░ рдХреА рд╡реИрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ CSRF рдФрд░ рд╕рд╛рдзрд╛рд░рдг XSS рдХреЛ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЪреБрд░рд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, access_token рдХреЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдкреНрд░рдмрдВрдзрди рдХреЛ рдЕрд╕рднреНрдп рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЕрджреНрдпрддрди 1:

рдорд┐рдбрд▓рд╡реЗрдпрд░ рдпрд╛ рдмреИрдХрдПрдВрдб рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jwt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА, XSS рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬреЗрдХреНрд╢рди рдбрд┐рдЯреЗрдХреНрд╢рди рдФрд░ CSP рдмрдирд╛рддрд╛ рд╣реИред

рд╕рднреА 26 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ oauth2 рд╕рддреНрдпрд╛рдкрди url рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдпрджрд┐ рдЖрдк рдХреБрдХреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдареАрдХ рд╣реИред

OAuht2 рдореЗрдВ рд╕реЗ рдХреБрдЫ access_token рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, url рдирд╣реАрдВ, рд╢реБрджреНрдз RESTFul рдкреНрд░рд╛рд░реВрдк

рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ dva рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ Oauth2 рдПрдХреАрдХрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: D

@soulmachine рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реЛрдЧрд╛

@WhatAKitty access_token рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, access_token рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╕реНрдерд╛рдиреАрдп/рд╕реАрдЬрд╝рди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ XSS рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрдВрдЧреЗред

@ u0x01 рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдзрд┐рдХ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ рд╣реИред Access_token рдХреА рдПрдХ рд╕рдордп рд╕реАрдорд╛ рд╣реИред рдЖрдк рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдИ рд░рд┐рдлреНрд░реЗрд╢_рдЯреЛрдХрди рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдИ рджреВрд╕рд░рд╛ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдкреВрдЫреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╡реЗ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИрдВред

@WhatAKitty Now рд╣реИрдХрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред access_token рдХреА рджреЛ рдШрдВрдЯреЗ рдХреА рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рдмрд╣реБрдд рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЖрдк рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗ рдХрд┐ "рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ рд╣реИ"?
рджреВрд╕рд░рд╛, рд░реАрдлреНрд░реЗрд╢_рдЯреЛрдХрди рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдХрд╣рд╛рдВ рд░рдЦрддреЗ рд╣реИрдВ?
рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдПрдкреАрдкреА рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИред рд╢реБрджреНрдз рдЬреЗрдПрд╕ рдкрдХреНрд╖ рдХреЛ рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ рд╣рдорд▓реЛрдВ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЕрднреА рднреА рд╣реИред
рдЕрдм рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдорд╛рдзрд╛рди http-only рдХреЛ set-cookie рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рд▓реЙрдЧрд┐рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп, рдХреБрдХреА рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд▓рд╛рдПрдБ рддрд╛рдХрд┐ рд╕реАрдЬрд╝рди рд╕реНрдерд┐рддрд┐ рдЦреАрдВрдЪ рд╕рдХреЗред рдпрджрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реАрдзреЗ рд▓реЙрдЧрд┐рди рдкреГрд╖реНрда рдкрд░ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реБрд░рдХреНрд╖рд╛ рднреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ Taishan рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдпрд╣рд╛рдБ рдЖрд▓рд╕реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред

@ u0x01 рд░реАрдлреНрд░реЗрд╢_рдЯреЛрдХрди, рдореИрдВ рдЗрд╕реЗ рдЬреЗрдПрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдЗрд╕ рддрд░рд╣ рд╣реИ: access_token рдХреЗрд╡рд▓ рдПрдХ рдХреБрдВрдЬреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрд╕рдПрд╕рдПрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд╡рд┐рднрд┐рдиреНрди рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рдХрд╣рд╛ред
рдЬрд╣рд╛рдБ рддрдХ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреА рдмрд╛рдд рд╣реИ, рдореИрдВрдиреЗ рднреА рдХреБрдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ: рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдХреЛ OAUTH2 рдФрд░ LOGIN PASSWORD рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдВрдЧрдд рдирд╣реАрдВ рдмрдирд╛рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ LOGIN PASSWORD рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ access_token рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред , рдЕрдиреНрдп рддрд░реАрдХреЗ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рджреВрд╕рд░рд╛: рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдордЭреМрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдпреЛрдЬрдирд╛ рдереЛрдбрд╝реА рдЕрдиреБрдЪрд┐рдд рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

@WhatAKitty рдиреЗ рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдмрд╛рд░реЗ
рдпрджрд┐ рдЖрдк рдЧрд╛рд░рдВрдЯреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкреНрд░рдгрд╛рд▓реА XSS/CSRF рдХрдордЬреЛрд░рд┐рдпреЛрдВ рд╕реЗ 100% рдореБрдХреНрдд рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬреЗрдПрд╕ рдХреЛ рд╕реАрдзреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред (рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрднреА рдХрд┐рд╕реА рдРрд╕реА рдХрдВрдкрдиреА рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд┐рд╕рдиреЗ рд╡реЛрдЯ рджреЗрдиреЗ рдХреА рд╣рд┐рдореНрдордд рдХреА рд╣реЛ рдХрд┐ рдЙрд╕рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЛрдИ рд╕реБрд░рдХреНрд╖рд╛ рдЦрд╛рдорд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ)

рдФрд░ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред OAuth2 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ, access_token рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдпрд╛ рдкреНрд░рджрд╛рддрд╛) рдиреЗ рдЗрд╕ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ:
хЫаф╕║ц▓бц│ХхЬиф╜┐чФи LOGIN PASSWORD чЩ╗х╜ХхРОч╗ЩцИСш┐ФхЫЮф╕Аф╕кaccess_token
рдпрд╣ OAUth2 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдЧрд▓рддрдлрд╣рдореА рдФрд░ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рд╣реИред

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

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╕рддреНрд░ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА рд╕рддреНрд░ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рдХреЗрд╡рд▓ http рдХреБрдХреА рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

1. Don't use local storage for session identifiers. Stick with cookies and use the HTTPOnly and Secure flags.
2. If cookies won't work for some reason, then use session storage which will be cleared when the user closes the browser window.
3. Be cautious with storing sensitive data in local storage. Just like any other client side storage options this data can be viewed and modified by the user. 

рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ access_token рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рдордЭреМрддрд╛ рд╡рд┐рдзрд┐ рд╣реИ:

// GET /seesion
    access_token := ctx.Session().GetString("access_token")

    if access_token != "" {
        ctx.JSON(200, {"signed": true, "access_token": access_token})
    } else {
        ctx.Redirect("//yoursite.com/login")
    }

рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреБрдХреА рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред JS рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GET /seesion рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рд╕рд░реНрд╡рд░ рд╕реАрдзреЗ рд▓реЙрдЧрд┐рди рдкреЗрдЬ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ :

// GET /seesion
    access_token := ctx.Session().GetString("access_token")
    if signed != "" {
        ctx.JSON(200, {"signed": true})
    } else {
        ctx.Redirect("//yoursite.com/login"я╝М "you need login first.")
    }

// GET /posts/:postid
    access_token := ctx.Session().GetString("access_token")

    if access_token != "" && isValidAccessToken(access_token) {
        ctx.JSON(200, getPostWithAccessToken(access_token, postid))
    } else {
        ctx.Redirect("//yoursite.com/login"я╝М "you need login first.")
    }

рдмреЗрд╢рдХ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдХреЛрдИ рдЖрдХреНрд░рдордг рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рд╛ рд╣реИред

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

рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЕрднреА рд▓рдВрдмрд╛ рд╕рдлрд░ рддрдп рдХрд░рдирд╛ рд╣реИред

@u0x01
рдореБрдЭреЗ рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рджреЗрдВ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдерд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рди рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ_рдЖрдИрдбреА рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ_рд╕реЗрдХреНрд░реЗрдЯ (рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ XSS/CSRF рдХреЗ рдЖрдХреНрд░рдордг рд╕реЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ

рд╡рд╣рд╛рдБ CSRF рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред XSS рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рднреА рд╕рд╛рдордЧреНрд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреА рдФрд░ рдЕрд╡реИрдз рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЪреВрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред Microsoft рдФрд░ Apple рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╕рдЪ рд╣реИ рдореБрдЭреЗ рдЖрдк рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИред рд╕рд┐рд╕реНрдЯрдо 100% рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рд╕рддреНрд░ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рдХреЗрд╡рд▓ http рдХреБрдХреА рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреЗрд╡рд▓ рдПрдЪрдЯреАрдкреА рд╣реА рдмрд┐рд▓реНрдХреБрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

рдпрд╣ OAUth2 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдЧрд▓рддрдлрд╣рдореА рдФрд░ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рд╣реИред

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

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

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореЗрд░реА рдЖрджрд░реНрд╢ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ UA рдХреЗ рд▓рд┐рдП рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдпрд╣ рдХреЛрдИ рддреГрддреАрдп рдкрдХреНрд╖ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреГрд╖реНрда рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд Authorize_code рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реА рдЖрджрд░реНрд╢ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░рд╛ рд╕реНрддрд░ рд╕реАрдорд┐рдд рд╣реИ рдФрд░ рдореБрдЭреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЗ OAuth2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╣ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдкрдХреЗ рдирд┐рдпреЛрдХреНрддрд╛ рдХреЛ рдХрд┐рддрдирд╛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛

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

@ u0x01 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдкрдиреЗ рд▓рд┐рдП, рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рднреА рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ:

  1. рдореИрдВ рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрдХрдиреАрдХреА рд╕реНрддрд░ рд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВ рд╕реНрд╡рдпрдВ рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВред
  2. рдореЗрд░рд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреА рдХрдореА, рдЕрдЧрд░ рдХреЛрдИ рдореЗрд░рд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА

рдЕрдм рддрдХ, рдореЗрд░реА рд╕рднреА рддрдХрдиреАрдХреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдХрдо рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред

@WhatAKitty
рдЪреВрдБрдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬрд▓реНрджреА рдореЗрдВ рд╣реИ рдФрд░ рдмреЙрд╕ рдХреЛ рдХреЛрдИ рдлрд╝рд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдмрд╕ рдЗрд╕реЗ рдЕрднреА рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд░реЗрдВред

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

рдХреГрдкрдпрд╛ OAuth2 рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, OAuth2 рдореЗрдВ рдирд┐рд╣рд┐рдд рдЕрдиреБрдорддрд┐ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореЗрд░реА рдЖрджрд░реНрд╢ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ UA рдХреЗ рд▓рд┐рдП рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдпрд╣ рдХреЛрдИ рддреГрддреАрдп рдкрдХреНрд╖ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреГрд╖реНрда рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд Authorize_code рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ OAuth2 рдореЗрдВ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕реАрдПрд╕рдЖрд░рдПрдл рд╕реБрд░рдХреНрд╖рд╛ рдЕрдХреНрд╖рдо рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ... рдХреНрдпрд╛ рдпрд╣ рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдЧрдбреНрдврд╛ рдЦреЛрджрдирд╛ рдирд╣реАрдВ рд╣реИ?
рдореИрдВрдиреЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣рд╛ рдХрд┐ рдХреЗрд╡рд▓ http рд╣реА рдмрд┐рд▓реНрдХреБрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдореБрдЦреНрдп рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛ рдЬреЛ http рдХреЗрд╡рд▓ рд╣рд▓ рдХрд░рддреА рд╣реИ, рд╡рд╣ рд╣реИ js рдХреЛ рдХреБрдХреАрдЬрд╝ рдкрдврд╝рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ред рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЛ рдХреБрдХреАрдЬрд╝ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЧреИрд░-рдореИрди-рдЗрди-рдж-рдорд┐рдбрд┐рд▓ рд╣рдорд▓реЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)ред

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

рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдмрдЧ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ :)

@ u0x01 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк OAuth2 рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╕рдореВрд╣ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореБрдЭреЗ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрд╡реЗрджрди рд╕рдВрдмрдВрдзреА рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓реА, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдЖрдкрд╕реЗ рдХреБрдЫ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВред

@ u0x01 рдмреИрдХрдПрдВрдб рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╣реИ рдФрд░ рдХреЛрдИ рд╕рддреНрд░ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВредрдХреНрдпрд╛ рдореИрдВ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рдЯреЛрдХрди рдХрд╣рд╛рдБ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?

@longzb рд╕реНрдЯреЗрдЯрд▓реЗрд╕ тЙа рд╕рддреНрд░ рдХреЛрдИ рдирд╣реАрдВ, рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ

рд░реЗрдбрд┐рд╕ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, access_token рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рддреНрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред

рдЯреЛрдХрди рдХрд╣рд╛рдБ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?

рдЗрд╕реЗ http_only рдХреБрдХреА рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ JS рдХреЛ рд╕реАрдзреЗ рдХреБрдХреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ XSS/CSRF рд╣рдорд▓реЛрдВ рдХреЗ рдореВрд▓реНрдп рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@ u0x01 рд╣рдореНрдоред рдореИрдВ рдХрд▓ Baidu рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдХреБрдХреАрдЬрд╝ рдбрд╛рд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ, рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдпрд╣ рд▓реЗрдЦ рдирд┐рд╣рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИред
рдЖрдЬ рдореИрдВ SSM+ANTD рдирдореВрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдирд┐рд╣рд┐рдд рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рд░реНрд╡рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдФрд░ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдирд┐рд╣рд┐рдд рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕рдВрд╕рд╛рдзрди рд╕рд░реНрд╡рд░ред

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

рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, dva рдХреЛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рдЬрдм antd рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ dva рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ? @sorrycc

рдЖрдк рд╕рд╣реА рдЪреАрдЬреЛрдВ рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реНрдерд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдирд╛?

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

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

рдЪрд┐рдВрддрд╛ рдХрд░рдирд╛ рдХрд╣рд╛рдБ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?

рдЖрдо рддреМрд░ рдкрд░, рдЬрдм рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдЯреНрд░рд╛рдВрдЬрд╝рд┐рдЯ рдореЗрдВ рд╣реЛрддреА рд╣реИ рддреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрддреА рд╣реИред OAuth2 (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рд╡рд╛рд╣) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рдЯ рдореЗрдВ рд╣реЛрдЧрд╛:

рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░
рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╕рд░реНрд╡рд░ рддрдХ
рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рдЯ рдХреЗ рджреМрд░рд╛рди рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрдирд╛ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рд╣рд░ рдЬрдЧрд╣ TLS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЬреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдк OAuth2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЕрдм рдЕрд╕рд▓реА рд╕рдорд╕реНрдпрд╛

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк OAuth2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рд╡рд╣ рд╕рдВрднрд╡рддрдГ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рд╕рдВрднрд╡рддрдГ OAuth2 рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВрдЧреЗ, рдЖрдкрдХреЛ рдкреНрд░рд╡рд╛рд╣реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред OAuth2 4 рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ

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

рдирд┐рд╣рд┐рдд рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рдорд╕реНрдпрд╛

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

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

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

рдирд┐рд╣рд┐рдд рдкреНрд░рд╡рд╛рд╣ (response_type=token) рдореЗрдВ, рд╣рдорд▓рд╛рд╡рд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЯреЛрдХрди рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХ рдЪреИрдирд▓ рдореЗрдВ рдПрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕реА рддрд░рд╣ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЪреЛрд░реА рдХрд┐рдП рдЧрдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдЕрдЧрд▓рд╛ рд╣рдорд▓рд╛

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

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

рдЙрд╕ рд╣рдорд▓реЗ рдХреЛ рдХреИрд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ?

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

рд╡рд╣ рд╕рдм рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реИрдВред

рдПрдХ рддрд░рдХреАрдм

рдирд┐рд╣рд┐рдд рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЗ 100% рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдРрдк рдХреЛ рдЕрдм 100% рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдРрдк рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдк рдЙрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ OAuth2 рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ angularjs рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рд╕рдВрджрд░реНрдн: http://tools.ietf.org/html/rfc6749

@WhatAKitty рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╕рдордп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд▓рд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рддреЗ рд╕рдордп рдмреИрдХрдПрдВрдб рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЯреЛрдХрди рдмрд╛рдВрдз рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдЕрдЧрд▓рд╛ рдЕрдиреБрд░реЛрдз рдЯреЛрдХрди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдИрдбреА рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдЕрд╡реИрдз рдЕрдиреБрд░реЛрдз рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред .
рддреЛ рдореИрдВ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдРрд╕рд╛ рдХреЛрдИ рд▓реЛрдЧреЛ рд╣реИ рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ? ?

@longzb рдЖрдо рддреМрд░ рдкрд░

@WhatAKitty @soulmachine @longzb

рдЬрдм OAuth2.0 рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЛрдб рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХ-рдПрдВрдб рд╕рд░реНрд╡рд░ рдореЗрдВ рдПрдХ рдПрдВрдЯреНрд░реА рдкреНрд░реЙрдХреНрд╕реА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдлреНрд░рдВрдЯ-рдПрдВрдб CORS (рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ) рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Oauth2 CORS рдХреА рдкреВрд░реНрд╡-рдЙрдбрд╝рд╛рди рдХреЛ рд░реЛрдХрдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ)

рдлрд╝реНрд░рдВрдЯ-рдПрдВрдб рдкрд╛рд╕рд╡рд░реНрдб рдореЛрдб рдХреЛ рдХреЗрд╡рд▓ рдПрдЬреЗрдВрдЯ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдЬреЗрдВрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ access_token рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди SESSION_ID рдХреЛ рдлреНрд░рдВрдЯ-рдПрдВрдб рдкрд░ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдЬреЗрдВрдЯ рдХреЛ рдкреНрд░рдмрдВрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреА рд╕рдорд╛рдкреНрддрд┐ рдФрд░ рд░реАрдлреНрд░реЗрд╢ред рдлреНрд░рдВрдЯ-рдПрдВрдб рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬ рдпрд╛рдж рд░рдЦреЗрдВ- рдореБрдЭреЗ рдЗрддреНрдпрд╛рджрд┐ Set-Cookie: Expires=

рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЛрдб рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░реЙрдХреНрд╕реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ OAuth рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЬрд╛рдПрдВ

рдЬрд╣рд╛рдБ рддрдХ @u0x01 рдХреЗ рдЙрддреНрддрд░ рдХреА рдмрд╛рдд рд╣реИ, рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рднреНрд░рд╛рдордХ рдФрд░ рдмреЗрдХрд╛рд░ рдЬрд╛рдирдХрд╛рд░реА рдХрд╣реА

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рд╕реАрдзреЗ рд╕рддреНрд░ рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ рдлреЗрдВрдХрдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЛрдб рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдХреНрд╕рд░ рд╕рддреНрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рдПрдХ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рддреНрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

  2. XSS рдФрд░ CSRF рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

    2.1 рд╕реАрдПрд╕рдЖрд░рдПрдл рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП HTTP рд╣реЗрдбрд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдмреИрдХ-рдПрдВрдб рдХреЗрд╡рд▓ рд╣реЗрдбрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗрд╡рд▓ рдкреНрд░рдкрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддреА рд╣реИ, рдФрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ JS рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддрд╛ (рдЬрдм CORS рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рд╣реЛ)

    2.2 рдПрдХреНрд╕рдПрд╕рдПрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХрд╛ рдлреНрд░рдВрдЯ-рдПрдВрдб рднрдВрдбрд╛рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЬреЗрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЛрдореЗрди рдкрд░ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдФрд░ HttpOnly рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХреБрдХреАрдЬрд╝ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВред рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реАрдорд┐рдд рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкрд░ рд╕рдЦреНрддреА рд╕реЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд▓рдЧрднрдЧ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ, XSS рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдорддрд▓рдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛ рд░реЛрдХрдирд╛ + рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП?рдпрд╣ HttpOnly рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрд╛рдп рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

  3. рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрдкрд╛рдп рдмреИрдХ рдПрдВрдб рдкрд░ рдПрдХ рдкреНрд░рд╡реЗрд╢ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╣реИ, рдФрд░ CORS рдХреЗ Access-Control-Allow-Origin рдХреЛ рдХреЗрд╡рд▓ рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЛрдореЗрди рдирд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, HttpOnly рдХрд╛ рд╕рддреНрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЛрдб рдЬреИрд╕реЗ X-CSRF-TOKEN рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЛрдб OAuth рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд access_token рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИ . рдХреБрдХреА рдФрд░ рдЗрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб рдЕрдЬрд╛рдХреНрд╕ рдпрд╛ рдлрд╝реЗрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдмреИрдХ-рдПрдВрдб рдХреБрдХреА рдХреА рд╡реИрдзрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрд╕реЗ X-CSRF рд╣реЗрдбрд░ рдХреА рд╡реИрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ CSRF рдФрд░ рд╕рд╛рдзрд╛рд░рдг XSS рдХреЛ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЪреБрд░рд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, access_token рдХреЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдкреНрд░рдмрдВрдзрди рдХреЛ рдЕрд╕рднреНрдп рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЕрджреНрдпрддрди 1:

рдорд┐рдбрд▓рд╡реЗрдпрд░ рдпрд╛ рдмреИрдХрдПрдВрдб рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jwt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА, XSS рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬреЗрдХреНрд╢рди рдбрд┐рдЯреЗрдХреНрд╢рди рдФрд░ CSP рдмрдирд╛рддрд╛ рд╣реИред

@mdluo рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░реЗрдВ

@mdluo рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдВред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдИ рдЧрдИ рддреАрд╕рд░реА рд╡рд┐рдзрд┐ рдореЗрдВ, рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ + рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдмреИрдХ-рдПрдВрдб рднрд╛рдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдХреАрдЬрд╝ рдХреЛ рдлреНрд░рдВрдЯ-рдПрдВрдб рдлрд╝реЗрдЪ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдКрдВ? рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ credentials: "include" рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред POST рдФрд░ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдирд╛ рдмреЗрд╡рдХреВрдлреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдкрд░реНрдпрд╛рд╡рд░рдг рд╣реИ:
рдлреНрд░рдВрдЯ рдПрдВрдб: рдбреАрд╡реАрдП рдкреЛрд░реНрдЯ 8000
рдмреИрдХрдПрдВрдб: рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ + рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реБрд░рдХреНрд╖рд╛, рдПрдХреНрд╕-рд╕реАрдПрд╕рдЖрд░рдПрдл-рдЯреЛрдХрди рдФрд░ рдХреБрдХреА

@ yoster0520 рдмреИрдХрдПрдВрдб рдкрд░ CORS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдпрджрд┐ рдлреНрд░рдВрдЯрдПрдВрдб рдореЗрдВ рдХрдИ рдкрддреЗ рд╣реИрдВ, рддреЛ рдмреИрдХрдПрдВрдб рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╢реНрд╡реЗрддрд╕реВрдЪреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЗрд╡рд▓ Access-Control-Allow-Origin рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдпрд╣ рдХреБрдХреАрдЬрд╝ рд▓рд╛ рд╕рдХреЗ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

zouyan532 picture zouyan532  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pengfeiWang picture pengfeiWang  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ljjsimon picture ljjsimon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

not3 picture not3  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bjwulin picture bjwulin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ