.....
Есть мнение.
Использование eval - это огромная брешь в безопасности сайта.
В чем именно она проявляется?
Нет, я конечно понимаю, что если написать eval($_GET['str']); то это .... ну это господа просто крайности
....
Ближе к теме
есть код
eval('$POST["pValume"] = (int)$_POST["numin'.$i.'"];');
eval('$POST["pTovar"] = $_POST["id'.$i.'"];');
$i - всегда число (счетчик)
....
Вопрос только один!
Может ли этот код нести опасность для сайта?
----
сразу скажу, что он уже переписан:
$POST["pValume"] = (int)$_POST["numin".$i];
$POST["pTovar"] = $_POST["id".$i];
поэтому тему о том, как и что переписывать не стоит.
Заранее благодарен за конструктивные ответы.
Спустя 39 минут, 25 секунд (23.12.2008 - 09:57) Гость написал(а):
Зачем было писать, код и тут же добавлять что он переписан ?
Напиши код который у тебя сейчас есть вместе с eval.
Если ты знаешь что ты делаешь (точно знаешь что у тебя в eval) то никакой опасности не будет.
Хотя я не понял что у тебя происходит в коде.
Напиши код который у тебя сейчас есть вместе с eval.
Если ты знаешь что ты делаешь (точно знаешь что у тебя в eval) то никакой опасности не будет.
Хотя я не понял что у тебя происходит в коде.
Спустя 1 час, 46 минут, 26 секунд (23.12.2008 - 11:43) kirik написал(а):
Цитата (Гость @ 23.12.2008 - 01:57) |
Хотя я не понял что у тебя происходит в коде. |
++
kutsanov, напиши, зачем тебе eval() понадобился..
по теме - не должен если переменные все которые входят в eval обрабатываются..
сам попробуй написать $_POST["numin'.$i.'"] = 'нехороший echo'..
Спустя 1 час, 57 минут, 41 секунда (23.12.2008 - 13:41) kutsanov написал(а):
>> сам попробуй написать $_POST["numin'.$i.'"] = 'нехороший echo'..
этот конечно не сработает
eval('$POST["pValume"] = (int)$_POST["numin'.$i.'"];');
а этот работал нормально, пока не заставили переписать без EVAL
>> напиши, зачем тебе eval() понадобился..
да, если честно, в данном случае, тупо привычка, плюс, то, что я не вижу какой-либо угрозы в конкретно данной конструкции.
>> Хотя я не понял что у тебя происходит в коде.
Есть форма
в которой ну скажем 10 (не обязательно) текстовых полей с именами numin1, numin2, numin3..... numin10
нужно обработать все эти поля последовательно
для этого запускаем цикл for
от 1 до ... (в данном случае 10, но не обязательно)
когда выполняется код:
eval('$POST["pValume"] = (int)$_POST["numin'.$i.'"];');
eval('$POST["pTovar"] = $_POST["id'.$i.'"];');
получаем в каждом цикле массив из двух запчастей:
$POST["pValume"]
$POST["pTovar"]
----
потом с ними делается много разных операций.
Вопрос не в этом
у нас в канторе разгорелся нешуточный спор на тему, что это Дыра в сайте.
Хотя все объяснялось тем что EVAL пользовать нельзя. Просто нельзя и все.
Вот у меня и вопрос, к знающей братии... Действительно ли выше описанная конструкция является потенциальной брешью в безопасности сайта, и, если Да, то в чем косяк?
Спасибо за внимание к топику.
этот конечно не сработает
eval('$POST["pValume"] = (int)$_POST["numin'.$i.'"];');
а этот работал нормально, пока не заставили переписать без EVAL
>> напиши, зачем тебе eval() понадобился..
да, если честно, в данном случае, тупо привычка, плюс, то, что я не вижу какой-либо угрозы в конкретно данной конструкции.
>> Хотя я не понял что у тебя происходит в коде.
Есть форма
в которой ну скажем 10 (не обязательно) текстовых полей с именами numin1, numin2, numin3..... numin10
нужно обработать все эти поля последовательно
для этого запускаем цикл for
от 1 до ... (в данном случае 10, но не обязательно)
когда выполняется код:
eval('$POST["pValume"] = (int)$_POST["numin'.$i.'"];');
eval('$POST["pTovar"] = $_POST["id'.$i.'"];');
получаем в каждом цикле массив из двух запчастей:
$POST["pValume"]
$POST["pTovar"]
----
потом с ними делается много разных операций.
Вопрос не в этом
у нас в канторе разгорелся нешуточный спор на тему, что это Дыра в сайте.
Хотя все объяснялось тем что EVAL пользовать нельзя. Просто нельзя и все.
Вот у меня и вопрос, к знающей братии... Действительно ли выше описанная конструкция является потенциальной брешью в безопасности сайта, и, если Да, то в чем косяк?
Спасибо за внимание к топику.
Спустя 19 минут, 28 секунд (23.12.2008 - 14:00) Гость написал(а):
>> да, если честно, в данном случае, тупо привычка, плюс, то, что я не вижу какой-либо
>> угрозы в конкретно данной конструкции.
У вас в конторе все так пишут? То есть у кого то привычка, а кто то просто что бы поржать, ведь хуже то не(?) будет? Это печально. Сочуствую тем кто будет с этим кодом работать, то есть и вашей конторе в том числе.
Нельзя же так.
А если по делу, то я думаю что тут никакой угрозы нет. Дальше уже зависит от того как это всё используется, но eval() уже не при делах.
>> угрозы в конкретно данной конструкции.
У вас в конторе все так пишут? То есть у кого то привычка, а кто то просто что бы поржать, ведь хуже то не(?) будет? Это печально. Сочуствую тем кто будет с этим кодом работать, то есть и вашей конторе в том числе.
Нельзя же так.
А если по делу, то я думаю что тут никакой угрозы нет. Дальше уже зависит от того как это всё используется, но eval() уже не при делах.
Спустя 6 минут, 3 секунды (23.12.2008 - 14:06) FatCat написал(а):
Цитата (Гость @ 23.12.2008 - 14:00) |
А если по делу, то я думаю что тут никакой угрозы нет. Дальше уже зависит от того как это всё используется, но eval() уже не при делах. |
+++
Если оставишь открытый инклайд, или входящую цельночисленную переменную, позже подставляемую в sql-запрос, не заинтвалишь - уже не важно, есть ли eval или нет его...
Спустя 5 часов, 6 минут, 25 секунд (23.12.2008 - 19:13) kirik написал(а):
Цитата (kutsanov @ 23.12.2008 - 05:41) |
у нас в канторе разгорелся нешуточный спор на тему, что это Дыра в сайте. Хотя все объяснялось тем что EVAL пользовать нельзя. Просто нельзя и все. |
=))) нада насильно уточнить почему нельзя..=) С таким же успехом SQL запрос является дырищщей, да и вообще самый безопасный сайт - html-ный =)) eval(); тут вроде больших красных букв нет, что эту функцию использовать нельзя..=)
Спустя 1 час, 12 минут, 21 секунда (23.12.2008 - 20:25) Гость написал(а):
Наверное eval запрещён хостингом.
Спустя 13 часов, 54 минуты, 22 секунды (24.12.2008 - 10:20) kutsanov написал(а):
Цитата (Гость @ 23.12.2008 - 11:00) |
У вас в конторе все так пишут? То есть у кого то привычка, а кто то просто что бы поржать, ведь хуже то не(?) будет? Это печально. Сочуствую тем кто будет с этим кодом работать, то есть и вашей конторе в том числе. Нельзя же так. |
В канторе пишу код я.
Нет регламента как и что писать.
Дело не в этом и вопрос связан не с этим
еще раз
является ли конструкция
eval('$POST["pTovar"] = $_POST["id'.$i.'"];');
Потенциально опасной с точки зрения безопасности.
Вот лично я считаю что
eval('$POST["pTovar"] = $_POST["id'.$i.'"];');
она абсолютно равносильна
$POST["pTovar"] = $_POST["id".$i];
при условии что $i - есть число
Так ли это, или все же есть здесь подвох?
Спустя 51 минута, 25 секунд (24.12.2008 - 11:11) Sylex написал(а):
безопасный, только нафига так?
Спустя 9 часов, 16 минут, 21 секунда (24.12.2008 - 20:27) Alchemist написал(а):
Цитата (kutsanov @ 24.12.2008 - 09:20) |
Вот лично я считаю что eval('$POST["pTovar"] = $_POST["id'.$i.'"];'); она абсолютно равносильна $POST["pTovar"] = $_POST["id".$i]; при условии что $i - есть число |
ты не прав.
единственное что у этих конструкций одинакового - это результат.
При этом они будут отличаться:
1) временем работы скрипта
2) кол-вом требуемой памяти и системных ресурсов
3) читабельностью кода
4) простотой дебаггинга (ошибки внутри eval() кода не влияют на работу внешнего скрипта)
Спустя 10 часов, 4 минуты, 53 секунды (25.12.2008 - 06:32) kutsanov написал(а):
Цитата (Alchemist @ 24.12.2008 - 17:27) |
ты не прав. единственное что у этих конструкций одинакового - это результат. |
Вот с этим согласен.
Спасибо!