рдкрд╛рд╕рд╡рд░реНрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдХреИрд╕реЗ рдмрд┐рдЧрд╛рдбрд╝реЗрдВ, рд╣рдмрд░ рдХреЗ рдЯрд┐рдкреНрд╕

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

рджрд┐рд▓


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

рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдХрд╛ рдореБрджреНрджрд╛


рдХрд╛рд▓реА рдорд┐рд░реНрдЪ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рд╕рд╛рд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рднреА рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдиреЗ рд╣реЛрдВрдЧреЗред

рднрдВрдбрд╛рд░рдг рдХреА рд╕рдорд╕реНрдпрд╛


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

"рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рднреНрд░рдо" рдХреА рд╕рдорд╕реНрдпрд╛


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

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


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

рдбреЗрдореЛ рд╕рдордп


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

<?php //  .  .   . $pepper = '.dQUEtby7P35;k"5EhPB<j.;,9hqvs!(<"B]=#dBfhnyaN)v>8Z_bs%YJW/u~{w5:4B!s5F>'; //   - .   . $password = 'E&z89Usr?R7VF.^'; // ! $hash = password_hash($pepper . $password, PASSWORD_BCRYPT); var_dump($hash); //string(60) "$2y$10$0V95jRy9I.P3t7YRiMHT3O7JEveN1Gya/LbvNJ.H6K1mVPxPFRsUm" //     , ..    

рдФрд░ рдЕрдм, рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ (рдЕрдкрдиреЗ рд╣рд╛рде рджреЗрдЦреЗрдВ!):

 <?php //    $pepper = '.dQUEtby7P35;k"5EhPB<j.;,9hqvs!(<"B]=#dBfhnyaN)v>8Z_bs%YJW/u~{w5:4B!s5F>'; //    (  ) $hash = '$2y$10$0V95jRy9I.P3t7YRiMHT3O7JEveN1Gya/LbvNJ.H6K1mVPxPFRsUm'; // !    !     ! $password = 'habrahabr'; //      echo password_verify($pepper . $password, $hash) ? 'Login OK' : 'Wrong password'; // Login OK // WTF??? 

рдРрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рд╣рдордиреЗ рдЕрдкрдиреА рд╕рднреА рд░рдХреНрд╖рд╛ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ред

рдЕрдкрдбреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ


рд╢рдкрде PHP?
рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдБ:

 #!/usr/bin/env python import bcrypt pepper = '.dQUEtby7P35;k"5EhPB<j.;,9hqvs!(<"B]=#dBfhnyaN)v>8Z_bs%YJW/u~{w5:4B!s5F>' password = 'E&z89Usr?R7VF.^' hashed = bcrypt.hashpw(pepper + password, bcrypt.gensalt()) print(hashed) password = 'habrahabr' if bcrypt.hashpw(pepper + password, hashed) == hashed: print('Login OK') else: print('Wrong password') 

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

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

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


All Articles