Выписка из чата, читать снизу вверх:
Цитата |
#12762 Отправитель: Rivalryzerg 25.08.2010 - 16:38 запрос должен выглядеть: " .. WHERE `id`=" . quote($d); в функция quote: return "'" . mysql_real_escape_string($value) . "'"; #12761 Отправитель: Rivalryzerg 25.08.2010 - 16:37 если так писать запросы - то горе тому программисту ) #12760 Отправитель: waldicom 25.08.2010 - 16:29 select * from tbl where id = $d; $d = "1 union select 1,2 from tbl1 /*" - такое mysql_*escape_string не отловит #12759 Отправитель: Rivalryzerg 25.08.2010 - 16:19 Типа найти символ в какой-либо таблице символов, который воспринимается mysql как ковычка, но пропускается функцией escape. По-моему из разряда фантастики #12758 Отправитель: Rivalryzerg 25.08.2010 - 16:17 Я читал, что в теории можно. Но лично я не верю в это) #12757 Отправитель: waldicom 25.08.2010 - 16:04 можно сделать sql-injection даже если используется mysql_*escape_string - так будет правельнее звучать #12756 Отправитель: Basili4 25.08.2010 - 16:02 ну это слишком .... #12755 Отправитель: twin 25.08.2010 - 16:00 кувалдой #12754 Отправитель: Basili4 25.08.2010 - 15:55 как ???? #12753 Отправитель: twin 25.08.2010 - 15:53 можно #12752 Отправитель: Basili4 25.08.2010 - 15:39 судя по тому что знаю и что начитал скажу что не обходится #12751 Отправитель: Basili4 25.08.2010 - 15:39 не тут просто один чел заявил что знает как обойти я вот думаю троль или нет ? #12750 Отправитель: IamSmorodin 25.08.2010 - 15:36 хакерством решил заняться?smile.gif #12749 Отправитель: Basili4 25.08.2010 - 15:35 и mysql_real_escape_string ? #12748 Отправитель: Basili4 25.08.2010 - 15:34 Вопрос у меня возник можно как нибудь обойти mysql_escape_string |
Цитата |
запрос должен выглядеть: " .. WHERE `id`=" . quote($d); в функция quote: return "'" . mysql_real_escape_string($value) . "'"; |
$users->findById($value);
Цитата (Rivalryzerg @ 25.08.2010 - 17:15) |
вы поняли почему обойти mysql_real_escape_string я считаю невозможно на данный момент |
... WHERE `id`=" . (int)$id;либо
... WHERE `id`= '" . mysql_real_escape_string($d) . "'";в последнем случае хакеру придётся использовать кавычку, которая будет успешно экранирована mysql_real_escape_string() и попытка инъекции не пройдёт. Кривой программер оставит дыру даже там, где нормальному покажется 100% защита.
Цитата |
#12762 Отправитель: Rivalryzerg 25.08.2010 - 16:38 запрос должен выглядеть: " .. WHERE `id`=" . quote($d); в функция quote: return "'" . mysql_real_escape_string($value) . "'"; #12761 Отправитель: Rivalryzerg 25.08.2010 - 16:37 если так писать запросы - то горе тому программисту ) |
Цитата (UScorp @ 22.06.2011 - 10:27) |
А почему горе тому программисту, что он делает не так? |
Цитата |
... WHERE `id`=" . (int)$id; |
<?php
if(!is_numeric($_GET['id']))
return;
$query = 'SELECT * FROM `tbl` WHERE `id` = ' .$_GET['id'];
?>