рдЕрдЧрд░ рдореБрдЭреЗ рдиреЙрди-рд╕реНрдХреЗрд▓реЗрдмрд▓ рдУрд░реЗрдХрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рдХрд┐рддрд╛рдм рд▓рд┐рдЦрдирд╛ рдерд╛, рддреЛ рдЗрд╕рдХрд╛ рдкрд╣рд▓рд╛ рдФрд░ рдПрдХрдорд╛рддреНрд░ рдЕрдзреНрдпрд╛рдп "рдбреЛрдиреНрдЯ рдпреВрдЬрд╝ рдмрд╛рдЙрдВрдб рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕" рд╢реАрд░реНрд╖рдХ рд╣реЛрдЧрд╛ред
рдЯреЙрдо рдХрд╛рдЗрдЯ, рдУрд░реЗрдХрд▓ рдХреЗ рдЙрдкрд╛рдзреНрдпрдХреНрд╖
рд╣рд╛рд▓ рд╣реА рдореЗрдВ,
рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░рдкреАрдПрдЪрдкреА рд╕реЗ рдПрдХ рд▓реЗрдЦ тАЬрд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд╕рдХреНрдпреВрдПрд▓ рдЗрдВрдЬреЗрдХреНрд╢рдиред рднрд╛рдЧ 1 тАЭред рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдФрд░ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪрд░ рдХреНрдпрд╛ рд╣реИрдВ, рдХреНрдпреЛрдВ рдЙрдиреНрд╣реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╡реЗ рдХреНрдпрд╛ рдлрд╛рдпрджреЗ рджреЗрддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрди рдореБрджреНрджреЛрдВ рдкрд░ рдереЛрдбрд╝рд╛ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдмрд┐рдВрдж рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
, prepared statements, ( ; , ) тАФ SQL- , SQL-. , :
insert into someTable(name) values(тАШтАЩ);
, ? -, insert , 90% ORM; ( '') тАФ . , , ():
$request = sql_prepare('insert into table(name) values(:1)');
/* insert into someTable(name) values(?);*/
sql_execute($request, Array(''));
, (:1, :2,...) . , , .
insert into someTable(name) values(тАШтАЩ);
, , .
:
1. тАФ , .
2. , .
3. SQL-.
.
тАФ :
$request = sql_prepare('insert into table(name) values(:1)');
sql_execute($request, Array(''));
sql_execute($request, Array(''));
sql_execute($request, Array(''));
sql_execute($request, Array(''));
SQL- , , тАФ .
, SQL-. , SQL- - , , . тАФ , , . , тАФ ┬л┬╗ ( , ). (, , MySQL ), ┬л┬╗ . , SQL- тАФ . 1 тАФ , , тАФ . :
sql_execute("insert into table(name) values('')");
sql_execute("insert into table(name) values('')");
sql_execute("insert into table(name) values('')");
sql_execute("insert into table(name) values('')");
( ), . , ┬л┬╗ .
. тАФ SQL- ( , , )? ( ), prepared statements тАУ ┬л┬╗ sql_execute (mysql_real_query, ),
, sql_execute, .
. prepared statement тАУ . , . , , , . (
MySQL C API,
PostgreSQL C library).
: тАФ PHP PDO , SQL- . ( StackOverflow):
$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass');
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
тАФ , . .
. ( тАФ ).
, - ; , .
Robert');drop table students;
, , тАФ , , .
, :
Rhaps107
mysql_real_escape_string? - ?
тАФ mysql_real_escape_string , . . (, ┬л┬╗ , , - ), .
@m_z21
PDO ORM . pdo , sql-.
ORM тАУ . PDO ( MySQLi) , SQL injection
, .
@VolCh21
(, ), . . mysql_* libmysql, mysqli/pdo ?
. mysqli::prepare тАФ MySQL. ,
PHP. , ( ) , . ┬л ┬╗.
, - , (prepared statements). , , . , , - , .
1.
http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php тАФ StackOverflow.
2.
https://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java тАФ Java.
3.
. Oracle . тАФ .