LINUX.ORG.RU

Безопасность PHP изнутри


0

0

Читайте интервью со специалистом по безопасности PHP - Stefan Esser'ом, который недавно покинул команду разработчиков и известен, прежде всего, своим проектом Hardened PHP. Из интервью вы узнаете, что на данный момент накоплена база из 31 серьёзных ошибок, что PHP лучше не запускать в виде модуля апача, что, не смотря на все ухищрения, сам язык PHP крайне небезопасен.

Тем временем, вышел PHP 5.2.1, в котором исправлена большое количество ошибок (более 180), а также произведены некоторые оптимизации: http://www.php.net/releases/5_2_1.php

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Ответ на: комментарий от tesla

>А вот веб это в первую очередь текст, а уж во вторую графика, флеш, видео, аудио.

Угу. Веб тот же текст относительно перла приблизительно то же что и все в компьютере байты. Нету в вебе общих задач для которых нужен перл как Practical Extraction and Report Language.

r ★★★★★
()
Ответ на: комментарий от r

> Ты (вроде ты) к стати сам приводил аргумент - доступность на хостингах - та же самая фигня.

На хостингах он начал появляться, потому что им начали пользоваться и он стал востребованым.

> Так что таже фигня - PHP сильно пропиарили

Кто, я спрашиваю, кто? php стал понастоящему популярен с третьей версии. Хотя уже вторая хорошо использовалась. А бабки в него вкладывать начали, насколько я помню, позже.

> Это показывает хотябы отсутсвие переходов на него с серьезных платформ.

Зачем переходить, если всё работает?

atrus ★★★★★
()
Ответ на: комментарий от r

> Приведите хоть одно преймущество пыха перед ну хотя бы javascript.

Не понял? Это языки с разными целевыми областями.

atrus ★★★★★
()
Ответ на: комментарий от atrus

>>Phyton не пробовал, судя по использованию профессионалами - должно быть гуд.

>Тут сложно. В качестве скрипт-движка жалобы слышал, типа медленный. Тогда понятно, что он на web делает. Php в нынешней ипостаси только ленивый не обгонит. :)

Вообщето - быстрее к примеру чем Perl. Даже shootout это подтверждает :)

anonymous
()
Ответ на: комментарий от atrus

>Зачем переходить, если всё работает?

Обратные переходы - есть. При чем на разных уровнях - от переписывания больших проектов (проектов ставших большими) на java/.net/python, до программистов, которые слезают с пыха и пересаживаются туда же, а потом ставят свечки, что этот ужасть кончислся наконец.

r ★★★★★
()
Ответ на: комментарий от anonymous

> Вообщето - быстрее к примеру чем Perl.

Ну, Perl5 я вообще в качестве встраиваемой скрипт-системы не встречал. Что, не исключает варианта, что кто-то так делал. :)

atrus ★★★★★
()
Ответ на: комментарий от r

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

Это в большинстве своём пример тех самых разработчиков, которые ССЗБ. Таким надо учиться проектировать архитектуру ПО, и никакой язык их не остановит :)

Ay49Mihas ★★★★
()
Ответ на: комментарий от atrus

>Не понял? Это языки с разными целевыми областями.

Стоп, стоп, стоп. Там вон народ вовсю распинается что php это general purpose язык. Так это таки язык общего назначения или с "целевой областью"? Потому что если с целевой областью тогда a) вернем тезис о том что для этой области он _никак_ - хреново приспособлен b) развивается он совершенно нетуда - приведи примеры, что там улучшилось существенно в применении именно к области. Насколько я вижу народ в дизайнеров "хочу быть java"-языков играется.

Если же это таки язык общего назначения - вопрос все тот же чем он лучше того же JavaScript?

r ★★★★★
()
Ответ на: комментарий от Ay49Mihas

>Таким надо учиться проектировать архитектуру ПО, и никакой язык их не остановит :)

Надо научиться выбирать right tool for the right job. А не "архитектуру ПО" проектировать на том, что для этого не предназначено.

r ★★★★★
()
Ответ на: комментарий от r

>Надо научиться выбирать right tool for the right job. А не "архитектуру ПО" проектировать на том, что для этого не предназначено.

Проблемы, описанные выше, характерны для plain PHP в процедурном стиле. Стоит только применить какой-нибудь нормальный фрейморк, да задействовать некоторые другие возможности (хоть и не люблю я ООП, но и его тоже) --- как сразу ошибок стало меньше. Right tool? Right. Так в чём же вопрос?

Для "проектирования архитектуры ПО" предназначены только бумага с карандашом :)

Ay49Mihas ★★★★
()
Ответ на: комментарий от r

>Так это таки язык общего назначения или с "целевой областью"?

Начинался как язык с целевой областью, а начиная с версии 5 старается быть языком общего назначения. Глупо отрицать очевидное (и исторически доказанное). Хороших сторон _языка_ это не отменяет.

Ay49Mihas ★★★★
()
Ответ на: комментарий от atrus

> В php, начиная с 5.0 появилась нормальная поддержка ООП.

Чего мне не хватает в этой "нормальной поддержке ООП": - переопределить метод того же класса - удалить метод из класса - добавить новый метод, при необходимости - сделать алиас на метод - поддержка анонимных функций - примитивы были объектами, а не хер знает чем: -- "Это строка".length , вместо strlen("Это строка") -- 5.is_odd вместо is_odd(5) -- null объект, а не хер знает что - возможность получить доступ к области видимости, что выше по иерархии - множественное наследование или миксины

Про библиотеки вообще говорить не хочется. Такой кучи безполезного гавно-кода больше нет нигде. А по-настроящему нужных вещей найти тяжело.

Cris
()
Ответ на: комментарий от atrus

> А вот тут я не вкурсе. Какие ошибки и огрехи были внесены в 4-ой и 5-ой версии?

Эта, зайди на тот же секуритифокус и посмотри. Я неточно выразился, "ошибки и огрехи"=="уязвимости".

Deleted
()
Ответ на: комментарий от r

> Обратные переходы - есть.

Ну и что? Понятно, что в определённый момент придётся искать средство пошустрее. В конце концов, некоторые на суперкомпьютеры пересаживаются. Объявить обычные отстоем? ;-)

> а потом ставят свечки, что этот ужасть кончислся наконец.

Если ставят свечки, то стоит всерьёз подумать об их квалификации.

atrus ★★★★★
()
Ответ на: комментарий от r

r, чего вы добиваетесь своим пламенным (от flame) выступлением? Доказать, что пхп говно? Так все это и так знают. Если он у вас вызывает такое отторжение, так не используйте, забудьте и не обращайте внимания на язык и топики про него. Если людям хочется использовать пхп, то пусть используют, вам-то что с этого?

anonymous
()
Ответ на: комментарий от atrus

>Ну, Perl5 я вообще в качестве встраиваемой скрипт-системы не встречал. >atrus *** (*) (09.02.2007 20:31:25)

Тьфу! Предупреждать надо!(С)Обыкновенное чудо
Тогда вам нужен Lua - кстате еще и быстрее Python'a :)

anonymous
()
Ответ на: комментарий от Cris

Если вам не хватает этого в пхп, то вам надо искать другой инструмент для решения своих задач, а не ругать этот. (про ежиков и кактусы слышали, да?)

anonymous
()
Ответ на: комментарий от r

> Там вон народ вовсю распинается что php это general purpose язык.

Ну, извините, я к ним не отношусь. :) Теоретически, php можно использовать general purpose. Но это будет бульон китайскими палочками. :)

> вернем тезис о том что для этой области он _никак_ - хреново приспособлен

Верните. Только я его отклбню опять. :) _Язык_ хорошо приспособлен. В нём на уровне языка и базовой rtl есть поддержка необходимого минимума для работы с http. Всё остальное можно и нужно реализовать средствами язкыка. Потому что вчера были одни требования, а сегодня - другие.

> вопрос все тот же чем он лучше того же JavaScript?

Кстати, а разве JS - общего назначения?

atrus ★★★★★
()
Ответ на: комментарий от r

>Надо научиться выбирать right tool for the right job. А не "архитектуру ПО" проектировать на том, что для этого не предназначено.
>r *** (*) (09.02.2007 20:37:59)

А мне мама говорила что нужно И архитектуру И right tool for the right job ... :)

anonymous
()
Ответ на: комментарий от r

> Надо научиться выбирать right tool for the right job.

Таки да. :) И судя по переходу - выбирать они не умеют. ;-) Напомню, я вывсе не предлагаю всё всем бросить и писать на одном лишь php. :)

atrus ★★★★★
()
Ответ на: комментарий от atrus

>Кстати, а разве JS - общего назначения?
>atrus *** (*) (09.02.2007 20:54:40)

Здрасте вам .... у виндузистов оно стандартный скриптовый язык (WSH)

anonymous
()
Ответ на: комментарий от Cris

Посмотрите уже, наконец, PDO и MySQLi-модули.

anonymous
()
Ответ на: комментарий от Cris

> 5.is_odd вместо is_odd(5)

*качает головой* Это вам в Java надо. Между прочим - ещё вопрос, надо ли доводить до полной объектизации. Преимущества, конечно, есть...

> поддержка анонимных функций

Это в связке или как? Аниномные функции есть.

> А по-настроящему нужных вещей найти тяжело.

Всё понятно. Хорошие вещи не вынесли на блюдечке. Сочувствую.

atrus ★★★★★
()
Ответ на: комментарий от Deleted

> Я неточно выразился, "ошибки и огрехи"=="уязвимости".

А... А в других проектах такого не бывает? В Linux kernel уже ошибок не находят? А если находят, то только немерянно крутые?

Значит запишем, с 4-ой версии плохих иделологических решений не делали, наоборот...

atrus ★★★★★
()
Ответ на: комментарий от anonymous

> Здрасте вам .... у виндузистов оно стандартный скриптовый язык (WSH)

Один из. Стандартный там VB. Приходилось скриптовать... ;-)

atrus ★★★★★
()
Ответ на: комментарий от atrus

> P.S. Применительно к примеру, я считаю, что лучше научиться использовать ложку. ;-)

Зачем, если именно эта ложка сама по себе корява? Не лучше ли взять прямую ложку или трубочку для коктейля?

>> А в пхп когда будут

> Когда реально понадобятся. Это как с ящиком для инструментов. Красивы и полезны, но не все понастоящему необходимы.

хм, они уже реально надобятся. Потому как сложность современных веб-проектов значительно превосходит ту, которая предполагалась для решения _методами_ пхп. Т.е. ИМХО тут дело даже не в языке, а в самом подходе.

> Впрочем, это вопрос навыка. Надеюсь, вы не решили, что я агитирую на переход на php? ;-)

"гостя, который свалил вужосе через окно, не заманиш обратно через дверь" (С) Толкиен

>> Ибо, как и венда, пхп из незамысловатого инструмента для дел, на которые что-то более солидное расходовать бессмысленно, вырос в монстра и покусился ИМХО на ту долю, которой недостоин в силу своих собственных недостатков.

> Ыыыы... :) Я про пайтон ссылки приводил, там тоже ошибки надодят. В т.ч. и в том, что идёт в штатной поставке.

Аха, питон это ужоснах, летящий на крыльях тормозов...

> К этому добавить то, что изначально он создавался, как язык обучения програмированию и можно смело заменить в вышеприведённом php на него. :)

Язык обучения программированию - ЗЛО. Потому что после него не переучиваются на нормальное. Вы же не хотите изучать автовождение при помощи инвалидной коляски?

> Потом ещё сходить про руби почитать. (Это же студенческая поделка! Тут вообще говорить не про что.) ;-)

Про руби ничего не знаю. И не очень чесно говоря хочется...

> Так что надо решать - или мы позволяем вещам расти над собой, превосходя то, чем они были изначально, или нет.

Смотря зачем. Есть в пхп какие-то идеи, поднимающие его над остальными 2000 наречиями? ИМХО нету. А очередной монстр с старыми болячками и новыми дырами...

> Я думал вы вкурсе. 8-() DOS, а затем венду пользуют потому что в период бурного роста рынка PC, M$ активно продвигала эти продукты на новые компы, в основном благодаря OEM версиям. Так что последние лет 20 их системы просто навязывались пользователям PC.

Ну в принципе, так оно и было, но _сейчас_ венда держится благодаря только укоренившемуся положению.

> А вот кто тогда так же продвигал php?

Он в какой-то мере сам продвигался, ибо его примитивность соответствовала задачам. Сейчас он уже мешает. Тебе перешивали в детстве штаны, когда вырастал из них, или покупали новые?

bugmaker ★★★★☆
()
Ответ на: комментарий от atrus

> Вы будете героически переписывать весь существующий php-код

почему бы и нет? пхп проекты не сравнимы ни по сложности ни по требованиям с фортраньими и кобольими

> на python или ruby? ;-)

нет, только не это.

> А предвосхищая вопрос: "зачем начинать новые проекты на php"? Отвечу, что за тем же, зачем начинают новые расчётные проекты на fortran, а не на C++.

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

bugmaker ★★★★☆
()
Ответ на: комментарий от soomrack

>Если мастер г-но перемешает с сахаром и закатает в банку с надписью

>варенье и будет продавать, то г-на станет еще больше, а любой купивший

>и попробовавший сей продукт будет жить с одной целью: достать этого

>мастера.

Да лана, пипл хавает...

anonymous
()
Ответ на: комментарий от atrus

>> Здрасте вам .... у виндузистов оно стандартный скриптовый язык (WSH)
>Один из. Стандартный там VB. Приходилось скриптовать... ;-)
>atrus *** (*) (09.02.2007 21:05:02)

artus - ну врать то зачем? там .vb и .js "из коробки". У ыМэСов на сайте все примеры на обоих языках .... Так что vb - "стандартен" только у Вас в голове :)

На самом деле к WSH можно цеплять хоть хрена лысого ... я мельком слышал что де Active State Perl можно так впендюрить (за что купил ...).

Но лично я хочу змея на WSH - скрптовать на нем есть праздник души :)

anonymous
()
Ответ на: комментарий от atrus

> А... А в других проектах такого не бывает? В Linux kernel уже ошибок не находят? А если находят, то только немерянно крутые?

Бывают, разумеется. И сравнивать ядро операционки и язык разметки страниц, пытающийся выглядеть языком общего назначения как-то некорректно.

> Значит запишем, с 4-ой версии плохих иделологических решений не делали, наоборот...

Не приписывай мне слов, которые я не то, что говорил - даже не подумал.

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

Deleted
()
Ответ на: комментарий от atrus

Безопасность PHP - как истина, где-то рядом...

> Язык_ хорошо приспособлен. В нём на уровне языка и базовой rtl есть поддержка необходимого минимума для работы с http. Всё остальное можно и нужно реализовать средствами язкыка.

Так всё-таки, хшё приспособлен или необходимый минимум?

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

> Потому как сложность современных веб-проектов значительно превосходит ту, которая предполагалась для решения _методами_ пхп.

Это очень зависит от того, о каких проектах идёт речь. В php тоже появляются новые методы. Не думаете же вы, что и сегодня там формы процедурно обрабатываются? ;-) Не, кто-то так делает. Но это его проблемы.

> Аха, питон это ужоснах, летящий на крыльях тормозов...

> Про руби ничего не знаю.

Не пайтон, не руби. Делаю вывод, что вы из Java программеров. Тогда вообще непонятно, что вы здесь делаете. :) Это же действительно разные классы задач. Насовместные. На боинге так же нелепо пытаться выйти на суборбиталку, как летать в атмосфере на шаттле. ;-)

> Тебе перешивали в детстве штаны, когда вырастал из них, или покупали новые?

Понимаю, но аналогия некорректная. Полчается _любую_ программу надо не совершенствовать, по мере потребностей, а переписывать с нуля.

atrus ★★★★★
()
Ответ на: комментарий от Cris

Вообще говоря для пхп есть куча всего с плейсхолдерами (вопросиками) Обрати внимание на PDO.

pento ★★★★★
()
Ответ на: комментарий от atrus

>> Потому как сложность современных веб-проектов значительно превосходит ту, которая предполагалась для решения _методами_ пхп.

> Это очень зависит от того, о каких проектах идёт речь. В php тоже появляются новые методы. Не думаете же вы, что и сегодня там формы процедурно обрабатываются? ;-) Не, кто-то так делает. Но это его проблемы.

Ну появляются. Объекты вот появиись. А с мультиметодами в них как? Про continuations благополучно замяли...

> Не пайтон, не руби. Делаю вывод, что вы из Java программеров.

Не совсем угадал. Если интересно, в веб я работал на пыпых (совсем мало), жабе, сейчас пользую лисп, и сдобренный огромным количеством плевков и матюков джанго, который питон.

> Тогда вообще непонятно, что вы здесь делаете. :)

Развлекаюсь :)

> Это же действительно разные классы задач. Насовместные. На боинге так же нелепо пытаться выйти на суборбиталку, как летать в атмосфере на шаттле. ;-)

Хм, хромая аналогия, весьма. То есть по сути верно, гостевуху на полстранички на пхп может быть и проще сваять. Только вот гостевуха на полстранички мало кому надобна...

> Понимаю, но аналогия некорректная.

Достаточно корректная. Пхп задумывался как _детские_ штаны.

> Полчается _любую_ программу надо не совершенствовать, по мере потребностей, а переписывать с нуля.

Не совсем так. В некоторых случаях выгодно очень долго дорабатывать, в некоторых - переделать, в некоторых - создать новое, вычленив из старой удачные идеи. А в некоторых - забыть как страшный сон. Зависит от качества заложенных идей. Дыры можно пропатчить, глюки исправить, но кривую изначально задумку уже ничем не выправиш...

bugmaker ★★★★☆
()

С огромным интересом изучил сей познавательный флейм. Пришел к выводу, что язык становится уродским не только когда на нем пишут перпендикулярно его предназначению, но и когда развивают в том же, перпендикулярном, направлении.

Долгими ночами, пока писал на PHP4 искренне надеялся на существенные изменения в PHP5. Перейдя с PHP4 на PHP5 могу сказать только одно, но зато от чистого сердца: чтоб у этих разработчиков всю жизнь ж-па на скринсейвере летала!

soomrack ★★★★
()
Ответ на: комментарий от soomrack

>Долгими ночами, пока писал на PHP4 искренне надеялся на существенные изменения в PHP5.

По ночам надо спать, или книжки про ruby/python читать

anonymous
()

Ошибка на ошибке! Как зае_али безграмотные поставщики новостей! Бирди, ну хоть книгу какую-нибудь прочитайте! Я просто обескуражен! Сергей.

anonymous
()
Ответ на: комментарий от prizident

>пхп хороший язык и на нем написано много хороших и полезных приложений

Плакаль. Спасибо.

anonymous
()
Ответ на: комментарий от atrus

>> 5.is_odd вместо is_odd(5)

> *качает головой* Это вам в Java надо. Между прочим - ещё вопрос, надо ли доводить до полной объектизации. Преимущества, конечно, есть...

Этого в Яве нет. Есть в Руби и Питоне.

>> поддержка анонимных функций

> Это в связке или как? Аниномные функции есть.

Анонимные функции - это когда их использовать можно, как closures. А в пхп этим и не пахнет - тело функции - строка, в которую максимум можно впиндюрить строчное или численное значение. Про то, чтобы завернуть объект и речи нет.

Сразу отвечу на вопрос, зачем это нужно. Это нужно затем, чтобы делать одноуровневые кастомные итераторы(только не тыкайте foreach-ем в пятерке), красивые DSL-и и т.п. Ниже пример с 5.method (который вы к жабе приписали):

1) 5.times {|i| puts i} # => 0 # => 1 # => 2 # => 3 # => 4

2) 1.upto(5) {|i| puts i} # => 1 # => 2 # => 3 # => 4 # => 5

Выше в коде у числа есть методы times и upto. Они принимают как параметры (пятерка для 1.upto(5)) так и анонимную функцию( {|i| puts i} ). Анонимная функция передается методу и он при каждой итерации ее вызывает, передавая значение итератора (в данном случае это i).

А вот пример использования анонимных блоков в разметке Маркаби для Рельсов: http://redhanded.hobix.com/inspect/markabyForRails.html. Только здесь используются не скобки, а do/end. Фишка в том, что для реализации не пришлось делать Смарти. Все использует синтаксис языка.

>> А по-настроящему нужных вещей найти тяжело.

> Всё понятно. Хорошие вещи не вынесли на блюдечке. Сочувствую.

Давай без сарказма. В Руби есть библиотека РМеджик. Целый фотошоп. Есть фотка, пользователь ее аплоадит. Но вокруг фотки есть "молоко". Его нужно убрать, чтобы место зря не хавало. В Рмеджике это делается функцией trim. Может ты подскажешь как это сделать в пхп?

ЗЫ: насколько я понял, на вещи, которые я писал раньше и не упомянутые в цитировании, пхп5 сромно шаркает ножкой и спрашивает "а оно вам надо?"...

Cris
()
Ответ на: комментарий от prizident

> пхп хороший язык и на нем написано много хороших и полезных приложений

Совершенно верно. Язык хороший и много хороших программ на нём написанно. Форумы, вики, интерфейсы к почте и все они на PHP. Отличный язык, кто бы чего не говорил. Те, кто его ненавидит, просто не отличается острым умом и сообразительностью, присущей программистам на PHP, умным, совестливым, трудолюбивым и православным.

anonymous
()
Ответ на: комментарий от DOKA

> Для больших проектов - лучше Java.

Сколько раз ещё повторять, что жаба того же поля ягода, что и пэхапэ?

Нравится ковыряться в говняном коде - ваше дело. Только нефиг никого агитировать.

anonymous
()
Ответ на: комментарий от anonymous

>Сколько раз ещё повторять, что жаба того же поля ягода, что и пэхапэ?

+1

anonymous
()
Ответ на: комментарий от anonymous

> Те, кто его ненавидит, просто не отличается острым умом и сообразительностью, присущей программистам на PHP, умным, совестливым, трудолюбивым и православным.

Спасибо, добрый человек. День прошел не зря :)

Cris
()
Ответ на: комментарий от Cris

> Давай без сарказма. В Руби есть библиотека РМеджик. Целый фотошоп. Есть фотка, пользователь ее аплоадит. Но вокруг фотки есть "молоко". Его нужно убрать, чтобы место зря не хавало. В Рмеджике это делается функцией trim. Может ты подскажешь как это сделать в пхп?

http://www.magickwand.org/

Cris, у тебя явно проблемы с поиском в интернет. Купи книжку какую, что ли... Вроде "google for dummies in 24 hours"

WindowsUser ★★
()
Ответ на: комментарий от r

>Приведите хоть одно преймущество пыха перед ну хотя бы javascript.

Не ожидал от вас такого заявления... Почитайте внимательно - http://phpfaq.ru/na_tanke

Кстати JS в Вин (WSH) - ужос... Тот же пхп-cli удобне, хотя он тож не подарок...

А вообще беда пхп в том, что по нему написали дофига руководств из серии "Для чайников", и теперь любой школьник считает себя мегапрограммером, способным написать проект любой сложности...

Korrvin
()
Ответ на: комментарий от Deleted

ты придуриваешься или как ?
это не "внутренняя" функция пхп - это обертка для аналогичной ф-ции mysql api
а ссылка - бред идиота :)
я бы наверное посоветовал использовать постгрес, но промолчу :)

proforg
()
Ответ на: комментарий от proforg

+1 Кстати данная функция очень не рекомендуется к использованию... При правильной обработке входного запроса она на% не нужна...

Korrvin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.