рдХреНрд░реЙрд╕ рд╕рд╛рдЗрдЯ рдЕрдиреБрд░реЛрдз рд╣рдорд▓реЛрдВ (CSRF) рд╕реЗ рдЕрдЬрд╛рдХреНрд╕ рдЖрд╡реЗрджрди рдХреА рд░рдХреНрд╖рд╛

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ CSRF рд╣рдорд▓реЛрдВ рд╕реЗ рдЕрдЬрд╛рдХреНрд╕ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рдХрд╛рдо рдорд┐рд▓рд╛ рдерд╛ред

рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рдорд▓реЗ рдХрд╛ рддрдВрддреНрд░ рдХреНрдпрд╛ рд╣реИ? рдирд┐рдЪрд▓рд╛ рд░реЗрдЦрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рддрд╣рдд рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рдЗрдЯ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ example.com/login/dropme рдЦрд╛рддреЗ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИред рдпрджрд┐ CSRF рд╣рдорд▓реЗ рд╕реЗ рдХреЛрдИ рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЯреИрдЧ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<img src="http://example.com/login/dropme"> 

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рддреБрд░рдВрдд рд╣реА img рдХреА рд╕рд╛рдордЧреНрд░реА рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, example.com рдкрд░ рдЙрд╕рдХрд╛ рдЦрд╛рддрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдЖрдкрдХреЛ рдХрдЯ рдХреЗ рддрд╣рдд рдЗрд╕рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред


рд╣рдорд▓реЗ рдХрд╛ рддрдВрддреНрд░


рд╣рдорд▓реЗ рдХрд╛ рд╕рд╛рд░ рдПрдХ рдЯреИрдЧ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рдЗрдЯ рд╕реЗ url рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордЧреНрд░реА рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЯреИрдЧ img, рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд▓рд┐рдВрдХ (рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд▓рд┐рдП), iframe, рдФрд░ рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рддреБрд░рдВрдд рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдирд╣реАрдВ рдЖрдПред


рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдорд╛рдирдХ рддрд░реАрдХреЗ рдФрд░ рд╡реЗ рдореБрдЭреЗ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдП


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

рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рддрд░реАрдХрд╛ рд╣реИ: url рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рджреМрд░рд╛рди рдЯреЛрдХрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред рдореБрдЭреЗ рдпрд╣ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛? рдПрдХ рддреИрдпрд╛рд░ рдЖрд╡реЗрджрди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреГрд╖реНрдареЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 100 рд╕реЗ рдЕрдзрд┐рдХ рд▓рд┐рдВрдХ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ <a href="..."> </a>, рдФрд░ url рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ, рддрджрдиреБрд╕рд╛рд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ 100 рд╕реНрдерд╛рдиреЛрдВ рдкрд░ред рдХрд┐рд╕реА рдЪреАрдЬ рдХреЛ рднреВрд▓рдиреЗ рдХрд╛ рдЦрддрд░рд╛ рд╣реЛрддрд╛ рд╣реИред

рдирд┐рд░реНрдгрдп


рд╕рдорд╛рдзрд╛рди рдЬрд▓реНрджреА рдорд┐рд▓ рдЧрдпрд╛ рдерд╛ред рдЪреВрдВрдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдЯреЛрдХрди рд╣реЗрдбрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, jQuery рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 $.ajaxSetup({ headers: { 'X-Csrf-Token':token } }); 

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

 <html> <body> <?php echo $loading_text; ?> <script type='text/javascript'> <?php /** check img and other left src tags **/ ?> if (parent.document.location.href == document.location.href){ <?php /** check iframe **/ ?> document.location.href='<?php echo $url; ?>'; } </script> </body> </html> 

рдпрд╣рд╛рдВ $ url рд╡рд╣ URL рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд┐рдП рдЧрдП & csrf_token рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ img, рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд▓рд┐рдВрдХ рдЯреИрдЧ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдорд▓рд╛рд╡рд░ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдХреЛрдб iframe рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрджрд┐ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдЙрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдХрдЯреМрддреА рдХрд░реЗрдЧреАред

рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ GET рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдЯреЛрдХрди рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рджрд┐рдпрд╛ рдЬрд╛рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рджреЗрдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдФрд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реИред рдПрдХ рдкреЗрдЬ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, example.com/profile рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣рдореЗрд╢рд╛ рдкреЗрдЬ example.com/profile?csrf_token= рдкрд░ рдЖрддреЗ рд╣реИрдВ ред
рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдЯреЛрдХрди рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред

рдЕрдВрддрднрд╛рд╖рдг


рдЬреЛ рдХреБрдЫ рдореИрдВрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЧреАрдереВрдм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХрдИ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдордп рдорд┐рд▓рддреЗ рд╣реА рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред

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


All Articles