рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреЛрдИ рд░рд╣рд╕реНрдпреЛрджреНрдШрд╛рдЯрди рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдпрд╣ рд╕рдм рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЦреБрдж рдХреЛ рдРрд╕рд╛ рдорд╛рдирддреЗ рд╣реИрдВред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред
рддреЛ рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВред
1. SQL рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЗрдирдкреБрдЯ рдлреЙрд░реНрдо рд╡рд╛рд▓реА рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдирд╛рдо рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
$query = "SELECT * FROM `Users` WHERE UserName='" . $_POST["Username"]. "'";
mysql_query($query);
$_POST[┬лUsername┬╗] тАФ .
Username
' or '1'='1
, :
SELECT * FROM `Users` WHERE UserName = '' OR '1'='1'
, , .
:
a';DROP TABLE `Users`; SELECT * FROM `userinfo` WHERE 't' = 't
:
SELECT * FROM `Users` WHERE `UserName` = 'a';DROP TABLE `Users`; SELECT * FROM `userinfo` WHERE 't' = 't'
SQL injection:
, . PHP MySQLi
$stmt = $db->prepare('update people set name = ? where id = ?');
$stmt->bind_param('si',$name,$id);
$stmt->execute();
PHP
mysql_real_escape_string, escape . :
$query = sprintf("SELECT * FROM `Users` WHERE UserName='%s'",
mysql_real_escape_string($_POST["Username"]));
mysql_query($query);
2. ross Site Scripting (XSS)
XSS , - , : , , . XSS - Javascript , , .
? , . . .
:
<form id="myFrom" action="showResults.php" method="post">
<div><textarea name="myText" rows="4" cols="30"></textarea><br />
<input type="submit" value="Submit" name="submit" /></div>
</form>
showResults.php:
echo("You typed this:");
echo($_POST['myText']);
, . :
, javascript . htmlentities() :
echo("You typed this:");
echo(htmlentities($_POST['myText']));
3. HTTPS
. , тАФ HTTPS. - .
4.
-, . , .
public_html/files, mysecretdoc.pdf
mysecurewebsite.com/files/mysecretdoc.pdf.
:
5.
тАФ
. (MD5+salt), , .
тАФ , - . , .
тАФ (-)
RSA . .
тАФ , Facebook, Twitter OpenID. .
6.
, , . , , . , .
, . , , .
PHP: ionCube,
ZendGuard,
SourceGuardian: Thicket Obfuscator for PHP7.
, , , .
. / . , .
MySQL.
delimiter |
CREATE TRIGGER insert_encrypt BEFORE INSERT ON cars
FOR EACH ROW BEGIN
SET NEW.Model = AES_ENCRYPT(NEW.Model,"my passphrase");
END;
|
delimiter |
CREATE TRIGGER update_encrypt BEFORE UPDATE ON cars
FOR EACH ROW BEGIN
SET NEW.Model = AES_ENCRYPT(NEW.Model,"my passphrase");
END;
|
SQLSELECT
...
AES_DECRYPT(Model,"my passphrase"),
...
FROM carscars
. , . .
:
тАФ
тАФ
8. (PHP, shared server)
, , - .
PHP:
userName|s:5:"admin";accountNumber|s:9:"123456789";
:
тАФ
тАФ . PHP
session_set_save_handler
9.
. .
, . PHP :
error_reporting(0);
@ini_set('display_errors', 0);
, , . PHP
set_error_handler().
, set_error_handler().
10.
.
, SSL MySQL PHP.
11. form spoofing
:
example.com/edit_user.php?id=12345. 12345 . .
, GET POST . . , POST .
, . , .
, . - .
<input name="gender" type="radio" value="m" />Male
<input name="gender" type="radio" value="f" />Female
, m f, .
.
<input name="gender" type="text" value="m';DROP TABLE `Users`; ... " />
mysql_real_escape_string(), ( ).
:
substr($_POST['gender'],0,1)
12. Cross-site request forgery (CSRF)
XSS, . , Vasya , :
<img src="http://mysecurebank.com/withdraw?account=petya&amount=1000000&for=vasya" />
Petya,
http://mysecurebank.com/withdraw?account=petya&amount=1000000&for=vasya
, , Petya , , , .
тАФ GET POST ( ). . :
<form id="f" action="http://mysecurebank.com/withdraw" method="post">
<input name="account" value="petya" />
<input name="amount" value="1000000" />
<input name="for" value="vasya" />
</form>
тАФ . .
?- HTTP . . , . .
- , . , (XmlHttpRequest ).
- ( ). тАФ .
:http://en.wikipedia.org/wiki/Cross-site_request_forgeryhttp://www.codinghorror.com/blog/2008/09/cross-site-request-forgeries-and-you.html. . PHP (
Yii,
CakePHP,
CodeIgniter,
Zend,
Symfony) (
PHPRunner) . , , , . тАФ .