Я должен использовать оценку () или call_user_func ()?

Текстовые поля не подходят для форматированного текста.

Почему бы вам просто не разбить столбец F на 2 или более столбцов, сделать их меньше и, например, позволить значению ячейки перекрывать столбцы, где вы вычеркнуты черным? При необходимости вы также можете объединить ItemName поверх столбца F в H (в приведенном ниже примере).

enter image description here

5
задан Drahcir 19 March 2009 в 16:15
поделиться

6 ответов

Как правило я всегда пытаюсь остаться максимально далеко от оценки (). Этот случай, однако, похож на хорошего кандидата на него.

Вы говорите, что "нет никакого шанса небезопасного кода, вводимого", таким образом, большой вопрос: существует ли шанс нерабочего кода, находящегося в базе данных?

В противном случае оценка () является решением, но если существует затем надлежащий парсинг, и регистрация ошибок / и т.д. могла бы быть более безопасной ставкой. (я полагаю, что использование call_user_func_array () быстрее в теории, таким образом, любой парсинг наверху мог бы стать незначительным),

2
ответ дан 14 December 2019 в 01:17
поделиться

Хранение PHP в базе данных является плохим запахом дизайна сам по себе; даже при том, что в этом случае Вы вполне уверены, это никогда не может содержать небезопасный код, всегда хорошо минимизировать количество предположений или обороноспособности как этот, необходимо сделать. При хранении кода PHP в базе данных то нападение, в котором взломщик получает доступ к базе данных быстро, становится намного более серьезным, превращаясь в нападение, в котором взломщик может выполнить произвольный код! Я знаю, что взлом Вашей базы данных как это очень маловероятен, но тем не менее это - хорошая практика безопасности, чтобы не позволить даже маловероятной ситуации поставить под угрозу Вашу систему больше, чем это должно.

Многие люди соглашаются, что оценка () всегда должна, без исключения, избежаться в коде PHP. Всегда существует альтернатива.

В этом случае, однако, я думаю, что должен был бы сказать, что использование оценки () будет лучшим решением для Вас, потому что Вы уже храните код PHP в DB, таким образом использование оценки () не собирается увеличивать Ваш риск дальше, чем это.

Я, однако, рекомендовал бы это

  1. Вы пытаетесь проверить код перед Вами оценка () это, будучи консервативными в том, что Вы позволяете. Предположите, что так или иначе взломщик вошел в Вашу базу данных, даже думал, что это маловероятно.
  2. Вы, по крайней мере, уделяете некоторое серьезное внимание перезаписи Вашего приложения так, чтобы код PHP не был сохранен в базе данных. При хранении сложных структур данных думайте о чем-то как JSON или даже XML вместо этого. Безопасные синтаксические анализаторы существуют для них.

Я сожалею, если этот ответ кажется немного реакционным; я просто, оказывается, чувствую, что этот вид вещи очень важен.

4
ответ дан 14 December 2019 в 01:17
поделиться

Используйте оценку (). Что-либо еще не стоит усилия - они не имели бы никаких эффектов положительной стороны.

1
ответ дан 14 December 2019 в 01:17
поделиться

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

Удачи!

1
ответ дан 14 December 2019 в 01:17
поделиться

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

Если код, предполагают для осуществления под управлением кода, пойдите для оценки ().

1
ответ дан 14 December 2019 в 01:17
поделиться

Необходимо перенести код, который Вы собираетесь выполнить в блоке попытки/выгоды также, в случае, если существует ошибка (даже при том, что Вы сказали, что не будет, существует возможность, и это - лучшая практика),

0
ответ дан 14 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: