рд╕рд╛рдордЧреНрд░реА рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрдд рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╣реИред
рдкрд░рд┐рдЪрдпред
рдЕрдХреНрд╕рд░ рдореБрдЭреЗ рдЙрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╕реНрд╡рдпрдВ-рд▓рд┐рдЦрд┐рдд рд╕реАрдПрдордПрд╕ рдпрд╛ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рд╣реИрдВ, рдЬреЛ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХреА рд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред
рдпрд╣рд╛рдБ рдореИрдВ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпреЛрдВ рдХрд╛ рдпрдерд╛рд╕рдВрднрд╡ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдареАрдХ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рдмрддрд╛рдКрдВрдЧрд╛ред
рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдкреВрд░реНрдг рдФрд░ рдмрд┐рдирд╛ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рдирд╣реАрдВ рд╣реИрдВред
рдбреАрдмреНрд░реАрдлрд┐рдВрдЧред
рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ред рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ рез
рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЪрд░ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдВрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
$number = $_GET['input_number']; if (intval($number)) { ... SQL ... }
рдпрд╣ SQL рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд░
input_number рдореЗрдВ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
1'+UNION+SELECT
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЪреЗрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐
intval рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд 1, рд▓реЗрдХрд┐рди
$ рдирдореНрдмрд░ рдЪрд░ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб SQL рдХреНрд╡реЗрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдЙрдЪрд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ:
$number = intval($_GET['input_number']); if ($number) { ... SQL ... }
рдмреЗрд╢рдХ, рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
if ($number >= 32 AND $number <= 65)
рдпрджрд┐ рдЖрдк рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЪреЗрдХрдмреЙрдХреНрд╕ рдпрд╛ рдорд▓реНрдЯреАрд╕реЗрдкрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрдХ рдХрд░реЗрдВ:
$checkbox_arr = array_map('intval', $_POST['checkbox']);
array_mapрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдлреЙрд░реНрдо рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реВрдВ:
$number = htmlspecialchars(intval($_GET['input_number']));
htmlspecialcharsрдпрд╛:
$number = mysql_escape_string(intval($_GET['input_number']));
mysql_escape_stringрдпрд╣ рдПрдХ рдореБрд╕реНрдХрд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ :)
рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ред рдЧрд▓рддреА # 2ред
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд░ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
$input_text = addslashes($_GET['input_text']);
рд╕рдорд╛рд░реЛрд╣
рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖ рдмрдЪ рдирд┐рдХрд▓рддрд╛ рд╣реИред рд╡рд░реНрдг, рд▓реЗрдХрд┐рди рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдмрд╛рдИрдкрд╛рд╕ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдореИрдВ рдЗрд╕ рднреЗрджреНрдпрддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЦрдХ рдХреЗ рдкрд╛рда рдХреА рдирдХрд▓ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдореИрдВ рд╕рд┐рд░реНрдл
рдХреНрд░рд┐рд╕ рд╢рд┐рдлрд▓реЗрдЯ рд▓рд┐рдВрдХ (рдЖрдк RuNet рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рджреЗ рджреЗрдВрдЧреЗред
Mysql_escape_string рдпрд╛
mysql_real_escape_string рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг:
$input_text = mysql_escape_string($_GET['input_text']);
рдпрджрд┐ рдЖрдк HTML рдЯреИрдЧреНрд╕ рдХреЗ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ:
$input_text = strip_tags($_GET['input_text']); $input_text = htmlspecialchars($input_text); $input_text = mysql_escape_string($input_text);
strip_tags - html рдЯреИрдЧ рд╣рдЯрд╛рддрд╛ рд╣реИред
htmlspecialchars - рд╡рд┐рд╢реЗрд╖ рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред HTML рдЗрдХрд╛рдИ рдореЗрдВ рд╡рд░реНрдгред
рддреЛ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ SQL рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, XSS рд╣рдорд▓реЛрдВ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ html рдЯреИрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП, рддреЛ рдмрд╕ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
$input_text = htmlspecialchars($_GET['input_text']); $input_text = mysql_escape_string($input_text);
рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЪрд░ рдХрд╛ рдорд╛рди рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рддреЛ
рдЯреНрд░рд┐рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг:
$input_text = trim($_GET['input_text']); $input_text = htmlspecialchars($input_text); $input_text = mysql_escape_string($input_text);
рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ред рдЧрд▓рддреА # рейред
рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЦреЛрдЬ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдЦреНрдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реА рддреНрд░реБрдЯрд┐ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдкрд╛рда рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реА рддреНрд░реБрдЯрд┐ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдХреИрд╡рд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рдеред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рдХреЛ рд╣рдЯрд╛рдирд╛ рдпрд╛ рд╕реНрдХреНрд░реАрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред SQL рд╡рд░реНрдгред
рдмрд┐рдирд╛ рдЬреЛрдбрд╝ рдХреЗ рдЙрджрд╛рд╣рд░рдгред рд▓рд╛рдЗрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг:
$input_text = htmlspecialchars($_GET['input_text']);
рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ рдлрд╝реЙрд░реНрдо рдХрд╛ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддрд╛ рд╣реИ:
... WHERE text_row LIKE '%".$input_text."%' ...
рдЗрд╕рд╕реЗ рдЖрдзрд╛рд░ рдкрд░ рд▓реЛрдб рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред
рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдореИрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЙрди рд╡рд░реНрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЦреЛрдЬ рд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП:
function strip_data($text) { $quotes = array ("\x27", "\x22", "\x60", "\t", "\n", "\r", "*", "%", "<", ">", "?", "!" ); $goodquotes = array ("-", "+", "#" ); $repquotes = array ("\-", "\+", "\#" ); $text = trim( strip_tags( $text ) ); $text = str_replace( $quotes, '', $text ); $text = str_replace( $goodquotes, $repquotes, $text ); $text = ereg_replace(" +", " ", $text); return $text; }
рдмреЗрд╢рдХ, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЪрд░рд┐рддреНрд░ рдЦрддрд░рдирд╛рдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЦреЛрдЬ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг:
$input_text = strip_data($_GET['input_text']); $input_text = htmlspecialchars($input_text); $input_text = mysql_escape_string($input_text);
рдореИрдВ рдЖрдкрдХреЛ рдЦреЛрдЬ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рднреА рджреЗрддрд╛ рд╣реВрдВ, рдХрдо рд╕реЗ рдХрдо 3 рд╕реЗ рдХрдо рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВ, рддреЛ 1-2 рд╡рд░реНрдгреЛрдВ рдХреА рдЦреЛрдЬ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓реЛрдб рдмрдврд╝ рдЬрд╛рдПрдЧрд╛ред
рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ред рдЧрд▓рддреА рдирдВрдмрд░ 4ред
$ _COOKIE рдЪрд░ рдореЗрдВ рдорд╛рди рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдХреБрдЫ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЪреВрдВрдХрд┐ рдЗрд╕ рдЪрд░ рдХреЛ рдПрдХ рдлреЙрд░реНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред
рд╕рд╛рдЗрдЯ рдХреА рдХреБрдХреАрдЬрд╝ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдирдХрд▓реА рдпрд╣ рдЪрд░ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рд╕реАрдПрдордПрд╕ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рд╕рд╛рдЗрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдПрдХ рдЪреЗрдХ рдерд╛:
if (@is_dir ( MAIN_DIR . '/template/' . $_COOKIE['skin'] )){ $config['skin'] = $_COOKIE['skin']; } $tpl->dir = MAIN_DIR . '/template/' . $config['skin'];
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЪрд░
$ _COOKIE ['рддреНрд╡рдЪрд╛'] рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреВрд░реНрдг рдкрде рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдХреАрдЬрд╝ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрд░реЛрдХреНрдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЪрд░
$ _SERVER рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ред рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ релред
Register_globals рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдпрд╣ рдЪрд╛рд▓реВ рд╣реИ рддреЛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдк рдПрдХ рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдореВрд╣ рд╣реИрдВ, рддреЛ рд╕рдореВрд╣ 2 рдореЗрдВ $ рд╕рдореВрд╣ рдЪрд░ рдЦрд╛рд▓реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ 0 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреЛрдб рдЬреЛрдбрд╝рдХрд░ рдлрд╝реЙрд░реНрдо рдХреЛ рдХреЗрд╡рд▓ рдирдХрд▓реА рдХрд░реЗрдВ:
<input type="text" name="group" value="5" />
рдПрдХ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ,
$ рд╕рдореВрд╣ рдЪрд░ 5 рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ред рдЧрд▓рддреА рдирдВрдмрд░ 6ред
рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорджреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
- рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ: php, php3, php4, php5, рдЖрджрд┐ред
- рдХреНрдпрд╛ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рд╣реИ move_uploaded_file
- рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░
рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ 1ред
AJAX рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдкреНрд░рддрд┐рд╖реНрдард╛ рдореЗрдВ рд╡реГрджреНрдзрд┐) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдпрд╛ рдЗрд╕рдХреА рдЖрдИрдбреА (рдЬреЛ рдкреНрд░рддрд┐рд╖реНрдард╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ) рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди PHP рдореЗрдВ рд╣реА рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдХреЛрдИ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
$user_id = intval($_REQUEST['user_id']); ... INSERT INTO REPLOG SET uid = '{$user_id}', plus = '1' ... ... UPDATE Users SET reputation = reputation+1 WHERE user_id = '{$user_id}' ...
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИред
рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЧрд▓рддреА # 2ред
рдЬрдм рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдХреНрд░рд┐рдпрд╛рдПрдВ (рдЬреЛрдбрд╝рдирд╛, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛, рд╣рдЯрд╛рдирд╛) рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ (HTML рдЯреИрдЧ рдпрд╛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд┐рдирд╛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛)ред
рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рдПрдХ рдордВрдЪ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рддрдп рдХреА рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╢рд╛рд╕рди рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЧрд▓рддреА # рейред
рдпрджрд┐ рдХрдИ php рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВред
Index.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ) рдЕрдиреНрдп php рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рд▓рд┐рдЦреЗрдВ:
define ( 'READFILE', true );
рдЕрдиреНрдп php рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
if (! defined ( 'READFILE' )) { exit ( "Error, wrong way to file.<br><a href=\"/\">Go to main</a>." ); }
рдЗрд╕рд▓рд┐рдП рдЖрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЧрд▓рддреА рдирдВрдмрд░ 4ред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ XSS рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
$secret_key = md5( strtolower( "http://site.ru/" . $member['name'] . sha1($password) . date( "Ymd" ) ) );
рдЕрдЧрд▓рд╛, рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдкреЛрдВ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрд╢ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
<input type="hidden" name="secret_key" value="$secret_key" />
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди:
if ($_POST['secret_key'] !== $secret_key) { exit ('Error: secret_key!'); }
рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ релред
SQL рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╕рдордп, рд╕реВрдЪрдирд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкрд░ рдПрдХ рд╕рд░рд▓ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдПрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GET рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░реЗрдВ:
if ($_GET['passsql'] == "password") { ... SQL ... } else { ... , ... }
рдпрд╣ рд╣реИрдХрд░ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдЫрд┐рдкрд╛рдПрдЧрд╛ рдЬреЛ рд╕рд╛рдЗрдЯ рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдЙрд╕рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ релред
рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдмрд╛рд╣рд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рди рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
if (isset($_GET['file_name'])) { include $_GET['file_name'] .'.php'; }
рд╕реНрд╡рд┐рдЪ
рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
switch($_GET['file_name']) { case 'file_1': include 'file_1.php'; break; default: include 'file_0.php'; break; }
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдиреБрд▓рдЧреНрдирдХ рдХреЛ рд░реЛрдХреЗрдВрдЧреЗ рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗред
рдкрд░рд┐рд╖рджред
рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╡рд░реНрдг / рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдпрд╛рдж рди рдХрд░реЗрдВред рдЗрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рднреА рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдЪреБрдирдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИред
UPD: рдкреЛрд╕реНрдЯ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЯрд┐рдкреНрд╕ рд▓реЗ рдЧрдПред