ASP.NET MVC 3/4: рдПрдВрдЯреА-рд╣реИрдХрд┐рдВрдЧ



рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ рдореИрдВрдиреЗ рд╣рдм рдкрд░ SQL рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓рд╛ рд▓реЗрдЦ рдкрдврд╝рд╛ рдлрд┐рд░ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрджрд╛ рд╣реБрдЖ рдХрд┐ ASP.NET MVC рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХреИрд╕реА рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд╛рдЗрдЯ рдмрдирд╛рдПрдВрдЧреЗ, рдореИрдВрдиреЗ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╣реВрдБрдЧрд╛: ASP.NET MVC4 рдФрд░ рдЗрдХрд╛рдИ рдлреНрд░реЗрдорд╡рд░реНрдХ 4.3.1 (рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдЖрд░рдПрдо)ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╕рдорд╛рдЪрд╛рд░ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдЗрдЯ рдорд┐рд▓реАред

рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ (XSS)



XSS рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╣реИрдХ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдкреГрд╖реНрда рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдореНрдмреЗрдб рдХрд░реЗрдВрдЧреЗред
рдЕрдм рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ:



рд╣рдо рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рдЕрдлрд╕реЛрд╕, рд╣рдо рдХрднреА рд╡рд┐рдзрд┐ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ:



рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рдмреЗрд╢рдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдХрд╛рдЯ рд▓реЗрдВ:

[ValidateInput(false)] 

рдпрд╣ рдПрдХ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рд╕реЗ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ:



рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рдкрд╛рда рдПрдиреНрдХреЛрдбреЗрдб рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдПрдиреНрдХреЛрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ, рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИ:

 @Html.Raw() 

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

рдПрд╕рдХреНрдпреВрдПрд▓ рдЗрдВрдЬреЗрдХреНрд╢рди



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



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

рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ рдЕрдиреБрд░реЛрдз рдХреНрд╖рдорд╛ (CSRF)



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

рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдорд╡реАрд╕реА рдХреЗ рдкрд╛рд╕ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рд╣реИ, рдЬреЛ рдлреЙрд░реНрдо рдмреЙрдбреА рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 @Html.AntiForgeryToken() 



рдЕрдм рдирд┐рдпрдВрддреНрд░рдХ (рдПрдХреНрд╢рди) рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛:

 [ValidateAntiForgeryToken] 

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ (рдореИрдВрдиреЗ XSS рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдореЗрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рдЬреЛрдбрд╝рд╛), рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ:



рдЫрд┐рдкреЗ рд╣реБрдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдХреБрдХреАрдЬрд╝ рднреА рдорд┐рд▓реАрдВ:



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



рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╣рд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреИрдХреЗрдЯ рдХреЛ рд╣реИрдХ рдХрд░рдХреЗ рд╣реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬрд╛рдирдХрд╛рд░реА рдЫрд┐рдкрд╛рдирд╛



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

рдпрд╣рд╛рдБ рдореЗрд░реА рд╕рд╛рдЗрдЯ рдЕрдм рд▓реМрдЯ рд░рд╣реА рд╣реИ:



X-Powered-by рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВ:
 <system.webServer> ... <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> ... </system.webServer> 

ASP.NET рд╕рдВрд╕реНрдХрд░рдг:
 <system.web> ... <httpRuntime enableVersionHeader="false" /> ... </system.web> 

Application_Start рдореЗрдВ MVC рд╕рдВрд╕реНрдХрд░рдг:

 MvcHandler.DisableMvcResponseHeader = true; 

рдФрд░ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╕рд░реНрд╡рд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ HttpModule рдмрдирд╛рдпреЗрдВрдЧреЗ:

  public class CustomServerHeaderModule : IHttpModule { public void Init(HttpApplication context) { context.PreSendRequestHeaders += OnPreSendRequestHeaders; } public void Dispose() { } private void OnPreSendRequestHeaders(object sender, EventArgs e) { HttpContext.Current.Response.Headers.Set("Server", "Apache 2000 Server"); } } 

рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

  <system.webServer> ... <modules runAllManagedModulesForAllRequests="true"> ... <add name="CustomServerHeader" type="HackingMVC.HttpModules.CustomServerHeaderModule" /> </modules> ... <system.webServer> 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛:



рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп



рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ ASP.NET рдЕрдкрдиреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рд╣реИ, MVC рдмрд╣реБрдд рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рдкрд░ рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рдЪреЛрд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рдкреГрд╖реНрда рдкрд░ рд╕рддреНрд░, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЯреЛрдХрди рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдЪреЛрд░реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдмрд╣реБрдд рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред JSON рд╣рд╛рдЗрдЬреИрдХрд┐рдВрдЧ рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдлреЗрдВрдХрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдЖрдк рдЕрдиреБрдорддрд┐ рдХреЗ рдмрд┐рдирд╛ GET рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдпрд╛рдж рд░рдЦреЗрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЦреЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рджрд┐рдЦрд╛рдпрд╛, рдЬреЛ рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдЖ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдЬрд┐рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдкреАрдПрд╕ рд╡рд┐рд╢ рдФрд░ рд╣реИрдХрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ: рдЬрд╝рд┐рдк рдЖрд░реНрдХрд╛рдЗрд╡ ред (8.7 рдПрдордмреА, рдЪреВрдВрдХрд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП NuGet рдкреИрдХреЗрдЬ рд╕рдорд╛рдзрд╛рди / рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рдпрд╛ рдкреИрдХреЗрдЬ рдХреЗ рдмрд┐рдирд╛ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ (706 Kb)ред

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

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


All Articles