Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Защита от SQL инекций (https://javascript.ru/forum/server/17763-zashhita-ot-sql-inekcijj.html)

0931454574 01.06.2011 17:38

Защита от SQL инекций
 
Добрый день.
Взгляните на код запроса пожалуйста. Достаточно ил таких проверок для устранения угрозы?
$strquery = "SELECT * FROM `topics` WHERE  `id`='%d'";
   $query =  sprintf($strquery,mysql_real_escape_string($_GET[id]));

firstchild 01.06.2011 23:13

Ё, чувак, как ты умудрился заработать такую карму(-751)?

0931454574 02.06.2011 00:30

firstchild,
Наверное такой результат потому, что я её не зарабатывал.Ё

x-yuri 02.06.2011 00:34

во-первых, такое впечатление, что ты все свои знания вложил в эту строку, лишь бы как-нибудь чего-нибудь не просочилось. Это называется уличная магия. В данном случае достаточно убрать все нечисловые символы либо проверить их наличие. Во-вторых, не надо сравнивать со строковым значением, если столбец численный. В-третьих, используй фреймворки

firstchild 02.06.2011 09:13

Ё, int?

$strquery = "SELECT * FROM `topics` WHERE  `id`='".(int)$_GET['id']."'";


пакажи мне чудо

x-yuri 02.06.2011 09:53

вы, конечно, можете сказать, что int'а в любом случае хватит. Но я бы сделал лучше, если тип столбца не помещается в int. Потому что это не сложно: либо is_numeric, либо filter_var('122312147483648', FILTER_SANITIZE_NUMBER_INT). Хотя возможно бд и к числу в виде строки адекватно отнесется, надо проверять

Serg_pnz 02.06.2011 09:55

Цитата:

Сообщение от x-yuri (Сообщение 107043)
В-третьих, используй фреймворки

Кстати да http://dklab.ru/lib/DbSimple/manual.html

0931454574 02.06.2011 11:04

Прекрасно.

0931454574 03.06.2011 10:03

Цитата:

Сообщение от x-yuri (Сообщение 107043)
во-первых, такое впечатление, что ты все свои знания вложил в эту строку, лишь бы как-нибудь чего-нибудь не просочилось. Это называется уличная магия. В данном случае достаточно убрать все нечисловые символы либо проверить их наличие. Во-вторых, не надо сравнивать со строковым значением, если столбец численный. В-третьих, используй фреймворки

Я так понимаю это комплимент_)_

dmitriymar 03.06.2011 11:03

Цитата:

Сообщение от 0931454574
во-первых, такое впечатление, что ты все свои знания вложил в эту строку,

не похоже это на комплимент...


Часовой пояс GMT +3, время: 03:15.