рд╕реБрд░рдХреНрд╖рд┐рдд рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 12 рдХреМрд╢рд▓

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

рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ 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 PHP

7.


, , , .

. / . , .

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;
|

SQL
SELECT
...
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://en.wikipedia.org/wiki/Cross-site_request_forgery
http://www.codinghorror.com/blog/2008/09/cross-site-request-forgeries-and-you.html


. . PHP (Yii, CakePHP, CodeIgniter, Zend, Symfony) (PHPRunner) . , , , . тАФ .

 

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


All Articles