peresign 0 Опубликовано 5 апреля, 2011 Жалоба Share Опубликовано 5 апреля, 2011 Всем известно из покон веков что функция include() имеет ряд уязвимостей при определенном обращении с ней. Так вот, что бы мне не переживать, я потом (но еще не решил) поменять все функции include на require. Повлияет ли это на функциональность магазина? Если да то как и где? Надеюсь на развернутый ответ. Спасибо Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 5 апреля, 2011 Жалоба Share Опубликовано 5 апреля, 2011 А что за уязвимости?! На функциональность, по идее, не должно повлиять, но, в любом случае, надо пробовать. Ссылка на сообщение Поделиться на другие сайты
peresign 0 Опубликовано 5 апреля, 2011 Автор Жалоба Share Опубликовано 5 апреля, 2011 Уязвимость известна еще с 2005 (может и еще раньше) и сами разработчики php, на php.net выкладывали рекомендации о том что не стоит использовать эту функцию, если очень надо, можно но, осторожно. Если погуглить "php include функция уязвимость" и/или "php include function vulnerability" можно найти кучу инфы. Еще для самореализации в качестве программиста можно почитать пару слов о функциях include, include_once, require, require_once на php.net. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 6 апреля, 2011 Жалоба Share Опубликовано 6 апреля, 2011 Спасибо Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 6 апреля, 2011 Жалоба Share Опубликовано 6 апреля, 2011 Саша, не стоит тратить на это время. По двум причинам: 1. Замена include на require ничего не даст - уязвимость общая для всего семейства (include, include_once, require, require_once). 2. Сама уязвимость связана не с оператором include, а с его не безопасным использованием. include делает своё дело - подключает указанный файл. Поэтому возникает опасность подключения "левого" файла: - Когда ты ему укажешь файл с другого сайта, если это не запрещено конфигурацией PHP (allow_url_fopen). - Когда ты ему укажешь "не свой" локальный файл, например классический пример - /etc/passwd где-то на своём сервере и у тебя не установлены в конфигурации PHP include_path. Понятно, что человек в здравом уме и сознании этого делать не будет. Значит опасность возникает тогда, когда имя подключаемого файла передаётся через переменную и не контролируется скриптом. Классический примеры: include($_GET['file']); $file = $_GET['file']; include($file); Много у тебя таких? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 6 апреля, 2011 Жалоба Share Опубликовано 6 апреля, 2011 Да я менять ничего и не собирался, просто почитать, интересно. Спасибо за разъяснение. Нет, не много, да вроде бы и вообще нет, в том смысле, что нет include, require из $_GET, $_POST Ссылка на сообщение Поделиться на другие сайты
YuraS 4 Опубликовано 6 апреля, 2011 Жалоба Share Опубликовано 6 апреля, 2011 Уязвимость известна еще с 2005а еще известно, что бывает горе от ума.не, думать, конечно, умом надо. но не надо пытаться анализировать каждый свой пук из глубины души. :) Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 6 апреля, 2011 Жалоба Share Опубликовано 6 апреля, 2011 вообще нет, в том смысле, что нет include, require из $_GET, $_POST Вот и я о том же. Конечно необходимо заметить, что при включённых глобальных переменных ситуация усложняется и нужно позаботиться о достоверности используемых переменных. Что вообще-то нужно делать всегда :) Ссылка на сообщение Поделиться на другие сайты
peresign 0 Опубликовано 6 апреля, 2011 Автор Жалоба Share Опубликовано 6 апреля, 2011 2ABerezin:Ответ #4: В вашем варианте нужна дополнительная проверка данных. Без нее сломают на раз-два. А лучше вообще использовать другой вариант реализации сей идеи. А вот сами разработчики php настоятельно рекомендовали использовать require за место include. Лучше думать заранее чем голову ломать потом ;) Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения