тАЬASP.NET рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмреБрдирд┐рдпрд╛рджреА рдЗрдирдкреБрдЯ рдирд┐рдпрдВрддреНрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реА рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдХреЛрдб рдХреЛ рдХрд┐рд╕ рд╕рд╛рдордЧреНрд░реА рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред Microsoft рдХрд┐рд╕реА рднреА рд╕реНрд░реЛрдд рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдЗрдирдкреБрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдпрд╢реАрд▓рддрд╛ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╣рдорд╛рд░реА рд╡рд┐рдХрд╛рд╕ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, MSDN рд▓реЗрдЦ рдкрдврд╝реЗрдВ: msdn.microsoft.com/en-us/library/ff649487.aspx#pagguidelines0001_inputdatavalidation ред "
Microsoft рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗрдВрджреНрд░ ASP.NET рдЕрдиреБрд░реЛрдз рд╕рддреНрдпрд╛рдкрди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдерд┐рддрд┐
ASPR.NET рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреЛ рдмрд╛рдИрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдФрд░ рддрд░реАрдХреЗ рдХреА рдЦреЛрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд╡реЛрдЯрд┐рдпрдо рд░рд┐рд╕рд░реНрдЪ рд╕реЗрдВрдЯрд░ рдХреА рд╣рд╛рд▓рд┐рдпрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ MSRC рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрдЪрд╛рдирдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЙрд╕ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ рдЬреЛ рдЪреЗрдХ рдХреЗ рдореБрдЦреНрдп рд╕реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (System.Web.CrossSiteScriptingValidation) рдФрд░ рдЗрд╕рдХрд╛ рд╕рд╛рд░, рдЬрд┐рд╕рдореЗрдВ XSS рдЯрд╛рдЗрдк -1 рд╣рдорд▓реЛрдВ (рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди) рдФрд░ рд╡реЗрдм рд╕реНрдЯреИрдХ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдореВрд▓
рд▓реЗрдЦ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдмрд╕реЗрдЯ рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред ред рдПрдХ рдЕрдиреНрдп рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд┐рддрдиреА рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рдЖрджрд┐рдо рдирд┐рдпрдорд┐рдд рдлрд┐рд▓реНрдЯрд░ рд╕реЗ рдкреВрд░реНрдг рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА XSS рдЯрд╛рдЗрдк -1 рд╡реИрдХреНрдЯрд░ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ?
рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЗрд╕рдХреА рд╕реАрдорд╛рдУрдВ, рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдФрд░ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
1. ASP.NET рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ
ASP.NET рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ (.NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдирд╛), v1.1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ v4.5 рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реЗрдЯ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдореЗрдВ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЦрддрд░рдирд╛рдХ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдХреЛрдбрд┐рдВрдЧ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ, рдпрд╣ рдорд╛рдирдХ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдмрд┐рдирд╛ рднрд╛рд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдПрдХ рдорд╛рдиреНрдпрддрд╛ рдСрдЯреЛрдореЗрдЯрди рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдИ рдЦрддрд░рдирд╛рдХ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рднрд╛рд╖рд╛ рдХреЗ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдкрд╣рд▓реА рдмрд╛рд░, рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рддрдВрддреНрд░ ASP.NET v1.1 рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдЕрдиреБрд░реЛрдз рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреА рдЧрдИ рдереА рдпрджрд┐ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдкреНрд░рдкрддреНрд░ рдлрд╝реАрд▓реНрдб рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ:
- <? i [az! /]
- (? i: рд╕реНрдХреНрд░рд┐рдкреНрдЯ) \ s? \:
- (? i: on [az]) * \ s * =
- (? i: ex) рдкреНрд░реЗрд╕рд┐рдпрди \ (
рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, ASP.NET v2.0 рдореЗрдВ, рдХрдИ рдЦрддрд░рдирд╛рдХ рдорд╛рди рдмрд╣реБрдд рдХрдо рд╣реЛ рдЧрдП рдФрд░ v4.5 рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдП:
ASP.NET v4.0 рдХреА рддреИрдпрд╛рд░реА рдХреЗ рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдпрд╣ рднреА рдШреЛрд╖рдгрд╛ рдХреА рдХрд┐ рд╕реЗрдЯ (? I: рд╕реНрдХреНрд░рд┐рдкреНрдЯ) \ s?: рд╕реВрдЪреА рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ v4.0 рдпрд╛ v4.5 рдореЗрдВ рдирд╣реАрдВ рд╣реБрдЖред
рди рдХреЗрд╡рд▓ рдХрдИ рдЦрддрд░рдирд╛рдХ рдореВрд▓реНрдп рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓ рдЧрдП рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рднреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, v2.0 рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛, рдФрд░ v4.0 рдореЗрдВ рддрдерд╛рдХрдерд┐рдд рддрдерд╛рдХрдерд┐рдд рдПрдХ рдирдпрд╛ рдореЛрдб рдЖрд╕реНрдердЧрд┐рдд рджрд╛рдиреЗрджрд╛рд░ рд╕рддреНрдпрд╛рдкрди, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдЬрдм рдЗрд╕реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЪрд░рдг рдореЗрдВ рдирд╣реАрдВред V4.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдлрд╛рд░реНрдо рдХреНрд╖реЗрддреНрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рддреНрдпрд╛рдкрди рдХреНрд╖реЗрддреНрд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдореВрд▓реНрдп Request.Cookies рд╕реЗ;
- рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо Request.Files рд╕реЗ;
- Request.RawUrl, Request.Path рдФрд░ Request.PathInfo рдорд╛рди
2. ASP.NET v4.x рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╡реИрдзрддрд╛
ASP.NET рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдЕрдиреБрд░реЛрдз рд╕рддреНрдпрд╛рдкрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреЗрдХ рднреА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдирдХреА рдкреВрд░реА рд╕реВрдЪреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджреА рдЧрдИ рд╣реИ:
рдирд┐рд░реАрдХреНрд╖рдг | рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдореВрд▓реНрдпреЛрдВ |
---|
Request.Path рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ | <HttpRuntime> рд╕реЗрдХреНрд╢рди рдореЗрдВ maxUrlLength рд╡рд┐рд╢реЗрд╖рддрд╛ред рдЗрд╕реЗ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд░реНрдЪреБрдЕрд▓ рдкрдереЛрдВ рдпрд╛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
260 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмреЗ рдкрде рд╡рд╛рд▓реЗ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рди IIS рдпрд╛ http.sys рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реАрдорд╛ рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред |
рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рд▓реЗ Request.RawUrl рдЯреБрдХрдбрд╝рд╛ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ | <HttpRuntime> рдЕрдиреБрднрд╛рдЧ рдореЗрдВ maxQueryStringLength рд╡рд┐рд╢реЗрд╖рддрд╛ред рдЗрд╕реЗ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд░реНрдЪреБрдЕрд▓ рдкрдереЛрдВ рдпрд╛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
2048 рд╡рд░реНрдгреЛрдВ рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рд▓реЗ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рди IIS рдпрд╛ http.sys рдХреА рд╕реАрдорд╛ рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред |
ASP.NET рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рдХрд┐рд╕реА рднреА рд╡рд░реНрдг рдХреЗ рд▓рд┐рдП Request.Path рдХреЛ рд╕реНрдХреИрди рдХрд░реЗрдВ | RequestPathInvalidCharacters <httpRuntime> рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд░реНрдЪреБрдЕрд▓ рдкрдереЛрдВ рдпрд╛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдХрд┐рд╕реА рдкрде рдореЗрдВ рдХреЛрдИ рднреА рд╡рд░реНрдг рд╣реИ, рддреЛ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ:
- <(XSS рд╣рдорд▓реЗ)
- > (XSS рд╣рдорд▓реЗ)
- * (рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╡рд┐рд╣рд┐рддреАрдХрд░рдг рдкрд░ рд╣рдорд▓реЗ)
- % (URL рдбрд┐рдХреЛрдбрд░ рдЕрдЯреИрдХ)
- : (рд╡реИрдХрд▓реНрдкрд┐рдХ NTFS рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рдкрд░ рд╣рдорд▓рд╛)
- & (рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░реНрд╕рд░ рдкрд░ рд╣рдорд▓реЗ)
- \ _ (рдлрд╝рд╛рдЗрд▓ рдкрде рдХреЗ рд╡рд┐рд╣рд┐рддреАрдХрд░рдг рдкрд░ рд╣рдорд▓реЗ)
- ? (рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░реНрд╕рд░ рдкрд░ рд╣рдорд▓реЗ)
RequestPathInvalidCharacters рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ, рдЕрд╡реИрдз рд╡рд░реНрдг рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдкрде "\ .." рдХреЗ рд▓рд┐рдП рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЕрдиреБрдХреНрд░рдо рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ IIS v6 + рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ URI рдХреЗ рд╡рд┐рд╣рд┐рддрдХрд░рдг рдХреЛ рдареАрдХ рд╕реЗ рдХрд░рддрд╛ рд╣реИ, рдРрд╕реЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдорд╛рд░реНрдЧ рдореЗрдВ рдЖрдЧреЗ рдХреА рд╕реНрд▓реИрд╢ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдЬреБрдбрд╝реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдореБрджреНрд░реАрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд░рд┐рд╡рд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред |
рдкреНрд░рддреНрдпреЗрдХ Request.Path рдорд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдкреНрд░рдмрдВрдзрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдвреВрдБрдврдирд╛ | <HttpRuntime> рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд░рд┐рд▓реИрдХреНрд╕UrlToFileSystemMapping рд╡рд┐рд╢реЗрд╖рддрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ URL рдореЗрдВ рдШрдЯрдХ рдкрде рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ASP.NET рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ NTFS рдирд┐рдпрдореЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡реИрдз рдлрд╝рд╛рдЗрд▓ рдкрде рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред |
рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП Request.QueryString, Request.Form, Request.Files, Request.Cookies, Request.Path, Request.PathInfo, Request.RawUrl рдЪреЗрдХ рдХрд░рдирд╛ | <HttpRuntime> рдЕрдиреБрднрд╛рдЧ рдореЗрдВ RequestValidationMode рд╡рд┐рд╢реЗрд╖рддрд╛ред рдЗрд╕реЗ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд░реНрдЪреБрдЕрд▓ рдкрдереЛрдВ рдпрд╛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╣ рдореЛрдб рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред 4.0 рдХреЗ рдорд╛рди (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдореЗрдВ рдЖрд╕реНрдердЧрд┐рдд рджрд╛рдиреЗрджрд╛рд░ рд╕рддреНрдпрд╛рдкрди рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╕реАрдзреЗ рд╡реИрдз рдХреНрд╖реЗрддреНрд░ рд╕реЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ 2.0 рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ ASP.NET рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рддреНрдпрд╛рдкрди рдореЛрдб рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
<HttpRuntime> рдЕрдиреБрднрд╛рдЧ рдореЗрдВ requestValidationType рд╡рд┐рд╢реЗрд╖рддрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ RequestValidator рд╡рд░реНрдЧ рдХреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, System.Web.Util.RequestValidator рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред |
рдЕрдВрддрд┐рдо рдЬрд╛рдБрдЪ рд╣рд┐рдордЦрдВрдб рдХреЗ рдЙрд╕ рджреГрд╢реНрдп рднрд╛рдЧ рдХреЛ, рдЬрд┐рд╕реЗ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
3. рдЕрдиреБрд░реЛрдз рд╕рддреНрдпрд╛рдкрди рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛
ASP.NET v2.0 + рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рдпреБрдХреНрдд System.Web.Util.RequestValidator рд╡рд░реНрдЧ рдХреЗ IsValidRequestString рд╡рд┐рдзрд┐ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
protected internal virtual bool IsValidRequestString( HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) { if (requestValidationSource == RequestValidationSource.Headers) { validationFailureIndex = 0; return true; } return !CrossSiteScriptingValidation.IsDangerousString(value, out validationFailureIndex); }
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ IsValidRequestString рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рднреА рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рдХреА рд╕рднреА рдШрдЯрдирд╛рдПрдВ рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдХрдЯ рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ HttpRequest рд╡рд░реНрдЧ рдХреЗ ValidateString рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреНрд░реЙрд╕рдбрд╛рдЗрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╡рд┐рдзрд┐ рд╡рд░реНрдЧ рдХреЗ IsDangerousString рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИ:
internal static bool IsDangerousString(string s, out int matchIndex) { matchIndex = 0; int startIndex = 0; while (true) { int num2 = s.IndexOfAny(startingChars, startIndex); if (num2 < 0) { return false; } if (num2 == (s.Length - 1)) { return false; } matchIndex = num2; char ch = s[num2]; if (ch != '&') { if ((ch == '<') && ((IsAtoZ(s[num2 + 1]) || (s[num2 + 1] == '!')) || ((s[num2 + 1] == '/') || (s[num2 + 1] == '?')))) { return true; } } else if (s[num2 + 1] == '#') { return true; } startIndex = num2 + 1; } }
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдлрд┐рд▓реНрдЯрд░ рдПрдХ рдСрдЯреЛрдореЗрдЯрди рд╣реИ рдЬреЛ рдирд┐рдпрдорд┐рдд рд╕реЗрдЯ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреА рдШрдЯрдирд╛ рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ <? I [az! / \!] & # # рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, CrossSiteScriptingValidation рд╡рд░реНрдЧ рдЙрди рджреЛ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдирдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ:
internal static bool IsDangerousUrl(string s) { if (string.IsNullOrEmpty(s)) { return false; } s = s.Trim(); int length = s.Length; if (((((length > 4) && ((s[0] == 'h') || (s[0] == 'H'))) && ((s[1] == 't') || (s[1] == 'T'))) && (((s[2] == 't') || (s[2] == 'T')) && ((s[3] == 'p') || (s[3] == 'P')))) && ((s[4] == ':') || (((length > 5) && ((s[4] == 's') || (s[4] == 'S'))) && (s[5] == ':')))) { return false; } if (s.IndexOf(':') == -1) { return false; } return true; } internal static bool IsValidJavascriptId(string id) { if (!string.IsNullOrEmpty(id)) { return CodeGenerator.IsValidLanguageIndependentIdentifier(id); } return true; }
рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ URL рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЦрддрд░рдирд╛рдХ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рдорд╛рдирддрд╛ рд╣реИ рдЬреЛ ^ (?: I: https! :) | [^]] рд╕реЗрдЯ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рднрд╛рд╖рд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг рдирд┐рдпрдо рдХреЗ рдЦрд┐рд▓рд╛рдл рддрд░реНрдХ рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ: ^ ((I: [a-z _] [a-z0-9 _]) $ред ASP.NET v1.1 рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреЛ IsDangerousString рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдиреНрдп рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рд╡реЗ рдХреЗрд╡рд▓ рдХреБрдЫ ASP.NET рд╡реЗрдмрдлрд╝реЙрд░реНрдо рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ RequestValidException рдирд╣реАрдВ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред
4. рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдиреБрдХрд╕рд╛рди рдФрд░ рдЗрд╕реЗ рдмрд╛рдИрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдИ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрд╛рдВрдЪ рдХрд┐рдП рдЧрдП рдЪреЗрдХ рдХреЗрд╡рд▓ XSS рдЯрд╛рдЗрдк -1 рд╣рдорд▓реЛрдВ рдХреЗ рдПрдХ рд╕реАрдорд┐рдд рд╕рдмрд╕реЗрдЯ рд╕реЗ рд░рдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреИрдЧ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд XSS рдХрд╛ рд╣рдорд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЯреИрдЧ, рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдВрднрд╡ рд╣реИ, рдорд╛рдирдХ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рджреВрд╕рд░реЗ, рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдирд┐рдпрдВрддреНрд░рдг, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ, рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИред рдпрд╣ рдорд╛рдирдХ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдкреНрд░рд╕рд┐рджреНрдз рддрд░реАрдХреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реИ:
- <? I [az! / \?] рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рдЙрджреНрдШрд╛рдЯрди рдХреЛрдг рдХреЛрд╖реНрдардХ рдФрд░ рдЯреИрдЧ рдирд╛рдо (<% img src = # onerror = alert (1) />) рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рд╢рдд рдЪрд┐рд╣реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рд╡реГрддреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, HTML рдкрд╛рд░реНрд╕рд░ IE v9- рдЗрд╕реЗ рдПрдХ рд╡реИрдз рдЯреИрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрджрд┐ рдХреЛрдИ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдпреВрдирд┐рдХреЛрдб рдХреИрдиреЛрдирд┐рдХрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпреВрдирд┐рдХреЛрдб-рд╡рд╛рдЗрдб рдорд╛рди (% uff1c img% 20src% 3D% 23% 20onerrer% 3Dalert% 281% 29% 2f% uff1e) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред
- рдкреНрд░рддрд┐рдмрдВрдз ((рдореИрдВ? рдореИрдВ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ) \ s? \: рдФрд░ (? рдореИрдВ: рдкреВрд░реНрд╡) рдкреНрд░реЗрд╕рд┐рдпрди \ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмреАрдЪ рдФрд░ рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рдмреНрд░реИрдХреЗрдЯ (рдЬрд╛рд╡рд╛% 09 рд╕реНрдХреНрд░рд┐рдкреНрдЯ): рдЕрд▓рд░реНрдЯ (1) рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐% 09 ( рд╕рддрд░реНрдХ (1))ред
- # & # рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз HTML рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдирд╛рдорд╛рдВрдХрд┐рдд рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд╡реИрдХреНрдЯрд░ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ% 26Tab ;: рдЕрд▓рд░реНрдЯ (1)) рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ ASP.NET HTML рдбрд┐рдХреЛрдбрд░ (HttpUtility.HtmlDubble) рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди "рдХреЗрд╡рд▓ 253 рдирд╛рдорд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рдЬрд╛рдирддрд╛ рд╣реИ, рдЬрдмрдХрд┐ HTML рдорд╛рдирдХ рдЙрдирдореЗрдВ рд╕реЗ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдЖрдкрдХреЛ рдХрдИ HTML рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореЗрдВ рдлреЗрдВрдХрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕реНрддрд░ рдкрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХрд╛ HTML рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реЛред
рд▓реЗрдХрд┐рди рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрд░рдг рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЗрд╕рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдердЧрд┐рдд рдореЛрдб рдХреЗ рд╕рд╛рде, рдкрд╣рд▓реЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╣рдорд▓реЗ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЦрддрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рдзрд╛рд░рдгрд╛ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ HTML рдорд╛рд░реНрдХрдЕрдк рддрддреНрд╡реЛрдВ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдпрд╣ XSS рдЯрд╛рдЗрдк -1 рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдкрдиреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░реЗ рдХреЛ рдореБрдЦрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рд╣реИред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдЪрдпрди рдорд╛рдиреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдпрд╣ рдЬрд╛рдирдирд╛ рдЦрддрд░рдирд╛рдХ рд╣реИ рдХрд┐ рд╡реЗ SQL рдХреНрд╡реЗрд░реА рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣ рдХреЗ рддрд░реНрдХ рдХреЗ рдмрд╛рдж, ASP.NET рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдореЗрдВ SQL рд╕рд┐рдВрдЯреИрдХреНрд╕ рддрддреНрд╡реЛрдВ, рдкрде рдкрде, XPath рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдг рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреЛрдЬ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрд╢рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ, рдмрдЬрд╛рдп рдЦреБрдж рдХреЛ рд╣рдорд▓реЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЙрдкрд╕рдореВрд╣ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред XSS рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ред рдмреЗрд╢рдХ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рд╕рд╛рд░реА рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЙрджреНрднрд╡ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
nuget.org/packages-DisableRequestValidation )ред
рдлрд┐рд░ рднреА, рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдЕрд╡рд╕рд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдХрд░ рдЗрди рд╕рднреА рдХрдорд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
5. рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░
ASP.NET v4.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ред рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ System.eb.Util.RequestValidator рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╡рд╛рд░рд┐рд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕рдореЗрдВ IsValidRequestString рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗред рдпрд╣ рддрд░реАрдХрд╛ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЕрдЧрд▓реЗ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ:
- HttpContext рд╕рдВрджрд░реНрдн - HTTP рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕рдВрджрд░реНрдн рдЬрд┐рд╕рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди - рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдорд╛рди;
- RequestValidationSource requestValidationSource - рд╡рд╣ рд╕реНрд░реЛрдд рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд╣реИ;
- string collectionKey - рд╕реНрд░реЛрдд рдореЗрдВ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдорд╛рди рдХрд╛ рдирд╛рдо;
- int validationFailureIndex рд╕реЗ рдмрд╛рд╣рд░ - рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдорд╛рди рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рдЦрддрд░рдирд╛рдХ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рдерд╛ рдпрд╛ -1;
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <%, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
using System; using System.Web; using System.Web.Util; namespace RequestValidationExtension { public class BypassRequestValidator : RequestValidator { public BypassRequestValidator() { } protected override bool IsValidRequestString( HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) { validationFailureIndex = -1; for (var i = 0; i < value.Length; i++) { if (value[i] == '<' && (i < value.Length - 1) && value[i + 1] == '%') { validationFailureIndex = i; return false; } } return base.IsValidRequestString( context, value, requestValidationSource, collectionKey, out validationFailureIndex); } } }
рдлрд┐рд░, рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ httpRuntime рдЕрдиреБрднрд╛рдЧ рдореЗрдВ RequestValidationType = "RequestValidationExtension.BypassRequestValidator" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдХреЗ, рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рд╕рддреНрдпрд╛рдкрди рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
6. рдмреЗрд╣рддрд░ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди
рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рднреА рдореМрдЬреВрджрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦрддреНрдо рдХрд░рдирд╛ рдФрд░ рдкреВрд░реНрдг-рдЖрдзрд╛рд░рд┐рдд XSS рдЯрд╛рдЗрдк -1 WAF рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддреБрд░рдВрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрдкрдиреНрди рд╣реЛ рдФрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдЬреНрдЮрд╛рдд рд╣реЛред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдЦрдВрдбрддрд╛ рдкрд░ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, ASP.NET рдЕрдиреБрд░реЛрдз рд╕рддреНрдпрд╛рдкрди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдкрд╣рд▓реЗ рдЪрд░рдг рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реАрдзреЗ рдорд╛рдирдХ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЪреЗрдХ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рд╕реЗрдЯ ^ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдореИрдВ [A-Za-z0-9 _] + $ рдФрд░, рдЕрдЧрд░ рддреБрд▓рдирд╛ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрд╛рдж рдореЗрдВ рдЪреЗрдХ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рдВрдЪ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЕрд░реНрдерд╛рдд, рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░)ред рдпрд╣ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреА рдореМрдЬреВрджрд╛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдПрдХреАрдХрд░рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЬреНрдЮрд╛рдд-рдЦрддрд░рдирд╛рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрдзреАрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рднреА рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рдЪрд░рдг рдПрдХ ASP.NET рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рднреА рдЯреБрдХрдбрд╝реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреБрд░реЛрдз рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдмрдирддреЗ рд╣реИрдВред рд╕рдВрдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рддреАрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреАрд╕рд░рд╛ рдЪрд░рдг, рдПрдХ HTTP рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдВрдбрд░рд╕рд╛рдЗрдЬ рдЗрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдЦрдВрдбрддрд╛ рдкрд░ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЖрдХрд▓рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЦрдВрдбрддрд╛ рдкрд░ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЖрдХрд▓рди рддрдерд╛рдХрдерд┐рдд рд╕рдореНрдорд┐рд▓рди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдПрдХ рдлрдЬреА рдЦреЛрдЬ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ - рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреБрдХрдбрд╝рд╛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд╕рдореНрдорд┐рд▓рди рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╕реЗрдЯ рдПрдХ рд╕рдореНрдорд┐рд▓рди рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдореЗрдВ рдирд┐рд╖рд┐рджреНрдз рд╡рд░реНрдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд╕рд╛рде рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдЦрдВрдбрддрд╛ рдкрд░ рдЙрдирдХреЗ рдкреНрд░рднрд╛рд╡ рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЛ рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдкрд╛рд░реНрд╕рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (рдПрдЪрдЯреАрдПрдордПрд▓, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╕реАрдПрд╕рдПрд╕) рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд╛рд▓рдиреЗ рдХреЗ рдирдХреНрд╢реЗ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдкрд╛рд░реНрд╕ рдкреЗрдбрд╝реЛрдВ рдХреА рддреБрд▓рдирд╛ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рджреЗрддреА рд╣реИ рдХрд┐ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреЗрдбрд╝ рдХреЗ рдХреМрди рд╕реЗ рдиреЛрдбреНрд╕ рдПрдореНрдмреЗрдбреЗрдб рдереЗред
рд╕рддреНрдпрд╛рдкрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг- рдпрджрд┐ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯреНрд╕ рд╣реИрдВ, рддреЛ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рдкреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рда рдЖрд░ рдореЗрдВ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рднреА рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ 0.75 рдХреА рджрд╣рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рдлрдЬреА рдЦреЛрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреА рд╕реАрдорд╛рдПрдВ рд╕рдореНрдорд┐рд▓рди рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИрдВред рд╕рдореНрдорд┐рд▓рди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ рд╕рдореНрдорд┐рд▓рди рдореИрдк рдХрд░рддреЗ рд╣реИрдВред
- рдпрджрд┐ рдПрдо рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рдкрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ M рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдорд┐рдд рд╕реЗрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ <? I [az! / \?%]ред рдпрджрд┐ рдЕрдиреБрдкрд╛рд▓рди рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ R рдХреЛ рдкреЗрдбрд╝ рдХреЗ рдЖрд░ 'рдореЗрдВ HTML рдкрд╛рд░реНрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдпрджрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдФрд░ рдЙрдирдХреА рдШрдЯрдирд╛ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдПрдо рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЪреМрд░рд╛рд╣реЗ рд╣реИрдВ, рддреЛ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- HTML рдЯреИрдЧ рдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдкреЗрдбрд╝ R рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб N рдХреЗ рд▓рд┐рдП рдмрд╛рдж рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдЖрд░ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдПрди рдореЗрдВ рдПрдо рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЪреМрд░рд╛рд╣реЗ рд╣реИрдВ, рддреЛ рдЪреЗрдХ рдХреЛ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдПрди рдПрдХ рдПрдЪрдЯреАрдПрдордПрд▓ рдЯреИрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЖрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдПрдо рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪреМрд░рд╛рд╣рд╛ рд╣реИ, рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдПрди рдПрдХ рдЯреИрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рдЗрдирд░ рдЯреЗрдХреНрд╕реНрдЯ рд╡реИрд▓реНрдпреВ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб) рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдПрди рдПрдХ рдЯреИрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдЗрдирд░рдЯреЗрдХреНрд╕реНрдЯ (рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб) рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдПрдХ рдЪреЗрдХ рдХреЛ рдкрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред
HTML рддрддреНрд╡реЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рд╡рд┐рд╢реЗрд╖рддрд╛ A рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореИрдк M рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рда R):
- рдпрджрд┐ рдЖрд░ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдо рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪреМрд░рд╛рд╣рд╛ рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдЖрд░ рдореЗрдВ рдП рдХреЗ рдореВрд▓реНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдПрдо рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдП рдирд╛рдо рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдирд╛рдо A рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рддрддреНрд╡ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рдЪрд░рдг рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
- рдпрджрд┐ рдорд╛рди A рдореЗрдВ HTML рдЗрдХрд╛рдИ рдХреЗ рд╡рд┐рдХрд▓реНрдк "рдпрд╛ #" рдпрд╛ рдирд╛рдорд╛рдВрдХрд┐рдд рд▓рд┐рдВрдХ рд╕рдорд╛рд╣рд┐рдд рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдорд╛рди A рдореЗрдВ ":" рдирд╣реАрдВ рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рдкрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдорд╛рди A рдХреЛ URI рдкрд╛рд░реНрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ U рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реБрдИрдВ, рддреЛ рдЪреЗрдХ рдХреЛ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдпреВ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдпреВ рдЦрддрд░рдирд╛рдХ рд╕реВрдЪреА рдореЗрдВ рдореМрдЬреВрдж рд╕рд░реНрдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкрде рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдирд╛рдо рдП = "рд╢реИрд▓реА" рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ-рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рдЗрдирдкреБрдЯ рд╡реИрд▓реНрдпреВ рдмрдирд╛рдо рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╕реЗрдЯ рдПрдо рдХреЗ рддрддреНрд╡ рдХрд╛ рдорд╛рди Vm рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рдерд╛):
- рдпрджрд┐ L рдФрд░ Vs Vm рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд▓реНрдк 7 рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рдкрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдмрдирд╛рдо рдореВрд▓реНрдп рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд░реНрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдо 'рдкреЗрдбрд╝ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ
- рдпрджрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реБрдИрдВ, рддреЛ рдЪреЗрдХ рдХреЛ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЕрдЧрд░ Vs 'рдореЗрдВ рдЯреЛрдХрди рдХреА рд╕рдВрдЦреНрдпрд╛ 5 рд╕реЗ рдХрдо рд╣реИ рдпрд╛ Vs' рдореЗрдВ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рдкрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ L рдХрд╛ рдорд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреЗрдбрд╝ рдХреЗ рдПрдХ рдЯреЛрдХрди рд╡реАрдЯреА рдмрдирд╛рдо 'рдХрд╛ рдорд╛рди рд╣реИ, рддреЛ рдЪреЗрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- Vt рдХрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЬрд╛рдВрдЪ рдХреЗ рдЕрдзреАрди рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ Vm рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд╛рда рдерд╛ред
рд╢реИрд▓реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реАрдПрд╕рдПрд╕ рдкрд╛рд░реНрд╕рд░ рдФрд░ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдереНрд░реЗрд╢реЛрд▓реНрдб рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИред
рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рдХрд╛ рдкреНрд░реВрдл-рдСрдл-рдХреЙрдиреНрд╕реЗрдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЗрд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬреНрдЮрд╛рдд рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдХреЛрдИ рдареЛрд╕ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЦрддрд░рдирд╛рдХ рдореВрд▓реНрдп рдФрд░ 7-15% рдзреАрдореА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреАрдврд╝реА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдкреНрд░реВрдл-рдСрдл-рдХреЙрдиреНрд╕реЗрдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рддреНрдпрд╛рдкрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрди рдШрдЯрдХреЛрдВ рдХрд╛ рдЗрд╖реНрдЯрддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрддреНрдкрд╛рджрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред
7. рдирд┐рд╖реНрдХрд░реНрд╖
ASP.NET рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдХреНрд╖рдо рд╣реИ рдФрд░ XSS рдЯрд╛рдЗрдк -1 рд╡рд░реНрдЧ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреА рд╡рд░реНрддрдорд╛рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреНрд╖рдорддрд╛рдПрдВ рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╕рдВрд░рдХреНрд╖рдг рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдШреБрдбрд╝рд╕рд╡рд╛рд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕реНрд╡рдпрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдФрд░ рдЗрд░рд╡ рдпрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрддреНрдкрд╛рджреЛрдВ (рдЬреИрд╕реЗ рдХрд┐
IIS рдпрд╛
.netIDS рдХреЗ рд▓рд┐рдП рдореЙрдб-рд╕реБрд░рдХреНрд╖рд╛ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
www.troyhunt.com/2011/12/free-ebook-owasp-top -10-for-net.html рдпрд╛
wiki.mozilla.org/WebAppSec/Secure_Coding_Guinelines )ред