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 ()

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

>В Руби есть библиотека РМеджик. Целый фотошоп.

Мосье искренне думает, шо ЭТО написано на Руби? :))

Можно конечно вам посоветовать посетить сайт ImageMagick, но боюсь что это будет для вас серьезное потрясение. Ибо привязка к пыхпыху у него эсть. Не в защиту пыхпыха будет сказано.

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

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

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

Просвяти же скорее нас, нубов, чем самый популярный язык в мире так плох! Наверное ты самый умный, да? У каждого свои предпочтения, если ты у нас альтернативно одаренный и любишь делать всё не так как все, это не значит, что ты умнее. Пояснишь? Или ты уже настолько устал это делать что не снизойдёшь?

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

>чем самый популярный язык в мире так плох!

"Популярность" уже стала критерием качества? Альтернативная ОС, говорят, тоже популярна. Но почему-то не все верят, что она качественная. Аналогию сам проведешь?

П.С. Я не тот анонимус.

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

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

> "Популярность" уже стала критерием качества?

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

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

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

А где можно почитать, что в ней хорошего, и где найти книжки/статьи типа "переходим с Ruby на Java", "Переходим с RoR на Spring" ?

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

> Это вообще убило намертво: http://www.openproj.ru/21/1813/

человек просто относится к армии "быдлокодеров". в его случае нужно использовать не mysql_real_escape_string, а mysql_escape_string. И то и другое, кстати, относится к MySQL API и к PHP напрямую отношения не имеют.

BOLK

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

>Мне Джава нравится назависимо от мнения анонимусов. Миллионы других людей выбрали Джаву, подозреваю, тоже не с проста.

Мне сериал "Просто Мария" нравится назависимо от мнения анонимусов. Миллионы других людей выбрали этот сериал, подозреваю, тоже не с проста.

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

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

Вот так навскидку не скажу, не вставало именно такой задачи, но, вероятно, для простой подрезки, воспользуюсь функцией imagecopy, модуля gd2. Благо, оно, практически обязательно. :) Если же потребуется "photoshop в миниатюре", то посмотрю в сторону MagickWand.

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

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

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

>Так в чём же вопрос?

Можно и для ассемблера написать фреймворк, который сделает написание вебприложений мягким и пушистым - из этого не будет проистекать, что ассемблер - right tool.

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

>Хороших сторон _языка_ это не отменяет.

В виде списка. 4тый раз спрашиваю.

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

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

Почему? Ядро или php пишут не люди? У Linux не было болезней роста?

> Я, к счастью, не столь хорошо разбираюсь в php

Ага, понятно. Но всё-таки назвать плохую вещь, введённую в php начиная с 4.x можешь?

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

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

"необходимый минимум" есть во всех языках - наверняка даже на ассемблере кто-нибудь извратился. В специализированном должен быть удобный максимум.

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

Да.

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

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

Дело даже не совсем в этом. Большинство указанных ошибок (по ссылке) - это не там где "границы массива проверить забыли" или тому подобное - это ошибки в самой задумке. А задумка не правится и не пересматривается, вместо нее пытаются наделать побольше костылей.

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

> Мосье искренне думает, шо ЭТО написано на Руби? :))

Конечно же нет :)

> Можно конечно вам посоветовать посетить сайт ImageMagick, но боюсь что это будет для вас серьезное потрясение. Ибо привязка к пыхпыху у него эсть. Не в защиту пыхпыха будет сказано.

Привязка есть, но на хостингах ее нет. Теперь вспоминаем главное преимущество пхп: "Да пхп есть на любом хостинге!". Теперь смотрим выше - "Привязка есть, но на хостингах ее нет." Следствие: даже если оно есть, я этим воспользоваться не могу.

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

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

Популярное всегда всплывает на поверхность.

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

> Вот так навскидку не скажу, не вставало именно такой задачи, но, вероятно, для простой подрезки, воспользуюсь функцией imagecopy, модуля gd2. Благо, оно, практически обязательно. :) Если же потребуется "photoshop в миниатюре", то посмотрю в сторону MagickWand.

У меня нет заданного размера этой рамки. Молоко разное. На одной 
фотке одно количество пустого места. На другой - другое. Как минимум 
нужно сделать поиск области, чтобы воспользоваться imagecopy.

А про MagickWand уже писал - не ставят на хостингах imagemagic :(.

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

Ну ты же сам написал, что в пхп5 хорошее ООП. А хорошим оно там уже 
никогда не станет, потому что примитивы не объекты. И отсюда лезет 
куча граблей. Да и элементарно метод нельзя добавить.

Вот пример где это используется. Расширяем класс String:

class String
  def save_as(path)
      File.open(path, "w") { |f| f.write self }
  end
end

"Тестовый текст для сохранения в файле".save_as("test.txt") 

Сохраняет содержимое строки в файл. Вот это нормальное ООП.

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

Ещё раз.

антипыхпыхер: Есть проблемема со скул инъекциями.

пыхпыхер: Есть костыль, который её решает.

антипыхпыхер: Этот костыль сам подвержен скул инъекциям и бажный до ужаса.

пыхпыхер: Это говнокостыль, не надо его использовать.

Вопрос: разве это не возращает нас к первому утверждению антипыхпыхера?

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

>Что не хватает пхп как языку до "энтырпрайз" по твоему мнению?

Для начала нужно определиться какие задачи он должен решать. Если например посмотреть на такую энтерпрайз платформу как Java, то можно заметить, что для разных сфер имеются не просто фреймворки, но и DSLи типа JSP, EL, EJBQL, XSP, туева хуча темплейтных движков, и т.д. Надо представлять себе: что, для чего и где работает: сама java(и ее RTL) это низкий уровень платформы обеспечивающий секурность, стабильность блабла, и _платформу_ для написания более высокоуровневых вещей таких как фреймворки и DSL, в последней уже появилась стандартная архитектура для скриптующих движков. Но при этом сама java не понимает, что такое форма, веб и тд - для этого есть специализированный фреймворк - то есть есть разделение обязанностей.

То есть пыху надо решить наконец он фремворк или язык. Но вся беда что как язык - он ничего интересного не представляет - и потому я говорю, что у него проблемы в ДНК, это просто фреймворк, который вместо того, чтобы быть фреймворком пытается стать языком, в результати усилия направлены не на то, чтобы его сделать классным фреймворком для написания несложных веб-приложений, а пытаются сделать "такой странной типа java". При чем пытаются сделать еще более хаотично чем внесение новых фичь в C# (но там хоть видно откудаи куда ветер дует). Взять хотя бы такую хрень как интерфейсы в PHP. Обясните мне нерусскому накой хрен в динамическом языке декларативное описание интерфейса? Эти типовые манифестации в прогрессивных статических то выкинули нахрен: в C# избавляются постепенно например для локальных переменных манифестации типов не нужны в последней спеке - еще чуть чуть и хиндли-мильнера везде сделают, в жабе начиная с пятой вовсю работает вывод типов для генериков, не говоря о всяких камламх с хаскелями где отродясь было. А тут мы что видим? Фигачат типовую манифестацию по модели 20летней давности (от которых все наоборот избавяются), да еще в динамический язык (куда даже 20 лет назад никому и мысли бы не пришло такую глупость сделать).

Короче медитации разработчиков, что они собственно делают, посмотреть вокруг и решить чего не хватает PHP, чтобы дорости не до энтерпрайза, но до нормальной продуманной вещи.

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

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

ээээ:))))

я не в том смысле спросил. Я в смысле фичастости языка. JavaScript он ведть не только в бровзере. Я например его как скриптабле энжин на серверсайде использую.

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

>это не "внутренняя" функция пхп - это обертка для аналогичной ф-ции mysql api

Что такое "внутренняя функция php"?

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

>А где можно почитать, что в ней хорошего, и где найти книжки/статьи типа "переходим с Ruby на Java", "Переходим с RoR на Spring" ?

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

Ты лучше покажи где проекты перешедшие с жабы на руби или со спринга на рор.

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

>Ага, понятно. Но всё-таки назвать плохую вещь, введённую в php начиная с 4.x можешь?

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

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

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

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

тогда в чём его преимущество? Минимально необходимым даже С обладает.

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

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

Будут. Со временем.

> Только вот гостевуха на полстранички мало кому надобна...

Ну, факты говорят, что на php делают и более сложные вещи. Причём вполне успешно и не плюясь. Но некоторым это как кость в горле. ;-)

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

Ёпт! А ядро Linux задумывалось, как небольшой проект for fun и для изучения защищённого режима i386. И не предполагалось, что оно будет работать на чём-то ещё и из дисков поддерживать что-то отличное от ATA. ;-) И?

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

> Ты много хостингов с ИмеджМеджиком видел?

В общем, да. Не на всех, но найти сейчас хост с поддержкой im на порядок проще (если не на два), чем с поддержкой python.

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

> Конечно же нет :)

Тогда в чём вопрос? Что мне даст в этой ситуации ruby без im? Возможность элитарно убицца? ;-)

P.S. В ruby хоть биндинг к gd2 есть?

> Теперь вспоминаем главное преимущество пхп: "Да пхп есть на любом хостинге!".

В php ещё есть gd2. Которая есть на всех хостингах. (А где нет, тот не заслуживает звания хостинга. ;-) ) Для указанной выше задачи хватит и gd.

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

некорректно наверное выразился - но суть я думаю понятна. это функция / проблема libmysql

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

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

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

Если вместо нездоровой критики посмотреть на изменения от версии к версии, то будет видно, что теи из плохих вещей, которые реально мешают, потихоньку выводятся из языка. Сначала выключаются поумолчанию, потомы выводятся окончательно. Сразу их нельзя выкинуть по понятным причинам. Так часть, которая не мешает, вероятно, останется. Но это уже будут проблемы тех, кто их станет использовать.

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

> тогда в чём его преимущество? Минимально необходимым даже С обладает.

C не обеспечивает автоматическое получение данных от web-форм. И т.д.

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

> У меня нет заданного размера этой рамки. Молоко разное.

А ещё это фотка, где человек в белом, на белом фоне... Скажите, в ruby, случайно ИИ не встроили? ;-) Вот скажите, каким способом это делается у вас?

А в отсутсвии IM я бы попробовал реализовать на gd2. Например, использовав ещё imagecolorstotal и imagefilledrectangle можно сделать поиск окантовки. Если не требовать прецензионной точности, то итераций в 10 уложится.

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

> Бyдyт. Co вpeмeнeм.

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

ugoday ★★★★★
()

Тут всё сравнивают с python ruby perl java javascript... а про parser никто и не упомянул... А междупрочим parser решает все те задачи, для которых создавался php, и ничего лишнего. Хотя можно использовать и для написания утилит вместо perl-а, но perl тут полюбому лутше.

И в добавок parser начинает появлятся на всё большем количестве хостингов. Так что для быстрого создания простого сайта не обязательно становится пихпыхером.

А чото касается дырявости, так по крайней мере у меня небыло к чему придратся.

PS

Народ, как заставить php пропускать первую строку, начинающуюся с "#!" ? Ато уже задолбался настраивать apache на localhost.

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

> Скажите, в ruby, случайно ИИ не встроили? ;-) Вот скажите, каким способом это делается у вас?

Я писал выше. В Рмеджике есть функция trim. Она делает эту операцию. На всех рейлс-хостингах эта либа стоит.

Мне другое интересно, тебе и вправду нравится на пхп программировать? или ты просто троллишь? :) Если первое, то сколько ты на нем пишешь?

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

Имхо, процентов 80-85% критики в адрес PHP - пустой трёп (от незнания языка). Этот обсуждение доказало этот факт ещё раз. PHP безусловно не лишён недостатков, но и перл с питоном не идеальны. И как уже сказал выше atrus "..Если вместо нездоровой критики посмотреть на изменения от версии к версии, то будет видно, что те из плохих вещей, которые реально мешают, потихоньку выводятся из языка..."

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

>А про MagickWand уже писал - не ставят на хостингах imagemagic :(.

Ты уже достал. Твоё любимое средство для удаления "молока" уже появилось на большинстве хостингов?

>Ну ты же сам написал, что в пхп5 хорошее ООП. А хорошим оно там уже никогда не станет, потому что примитивы не объекты. И отсюда лезет куча граблей. Да и элементарно метод нельзя добавить.

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

>"Тестовый текст для сохранения в файле".save_as("test.txt") Сохраняет содержимое строки в файл. Вот это нормальное ООП.

Аааа... Жалость-то какая... Значит, я всё это время писал с использованием ненормального ООП :) Догадаться, что ООП в каждой дырке суть зло, не можешь? :)

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

PHP:People Has Problems

> пycтoй тpёп (oт нeзнaния языкa)

Возвращаемся чуток назад.

>> A c мyльтимeтoдaми в ниx кaк? Пpo continuations блaгoпoлyчнo зaмяли...

> Бyдyт. Co вpeмeнeм.

Тоесть continuations в пыхпыхе есть, просто atrus об этом не знает.

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

>>Ты лучше покажи где проекты перешедшие с жабы на руби или со спринга на рор.

Вот подобным у пхп-программистов заканчивается все. Проекты есть, и крупные. Не сомневайтесь. Многие просто в интранете для Fortune Top 500 и с показом проблемы. Дело в другом. Ну что на фоне Руби пхп не язык (я не про "лучше", просто именно ЯЗЫКОМ уже назвать сложно, скорее простая китайская грамота, делающая свое простое дело) можно понять за неделю плотного изучения Руби. Объясните, зачем соплями поливать все вокруг. Дайте человеку ссылку на викиучебник по Руби, на бесплатное первое издание Programming Ruby и пусть он оценит, если понравится -- сам будет думать, если нет -- пусть пишет на пыхе, у него еще жизнь есть помимо тупых дискуссий на лоре. Через пару лет дорастет и поймет, а если не дорастет, то так ему и Ruby/Python сообществу лучше -- средний уровень кодеров выше, и пых-программист доволен в своем мире.

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

>> Ну подскажи язык, в котором можно сделать прозрачным обращение к несуществующим методам и свойствам (в PHP это возможно)

Товарищ, посмотрите на гибкость Ruby. Не потому что он "лучше". А потому что там очень красиво решается поставленная вами задача. А потом пишите на пыхе, красота ведь нужна не всем (как и сэкономленное время).

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

>> Я писал выше. В Рмеджике есть функция trim. Она делает эту операцию. На всех рейлс-хостингах эта либа стоит.

То есть вопрос упирается не в язык а всё-таки во внешние либы, в данном случае ImageMagic ? Может стоит уже попустицца тогда ?

>> Мне другое интересно, тебе и вправду нравится на пхп программировать? или ты просто троллишь? :) Если первое, то сколько ты на нем пишешь?

Да, мне нравится программировать на ПХП. Мне хватает его средств. Я практически не использую ООП в вебе - так как почти никогда не вижу ему там применения. К функциональному программированию равнодушен - соотв его зачаточное состояние в пхп не напрягает. Те части которые как мне кажется писать на пхп неэффективно / медленно - переписываю как модули апача / fcgi приложения на C.

Меня устраивает качество кода с которым я работаю - тот код который мне приходится поддерживать и развивать написан хорошо и правильно.

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

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

> Мне другое интересно, тебе и вправду нравится на пхп программировать?

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

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

> Дa, мнe нpaвитcя пpoгpaммиpoвaть нa ПXП.

Что в пыхпыхе делает программирование на нём приятным?

> пoчти никoгдa нe вижy eмy тaм пpимeнeния.

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

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

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

> Будут. Со временем.

А есть средства разработки, где это всё и многое другое доступно уже сейчас. Причём с большим выигрышем как по простоте и удобству, так и по скорости и стабильности.

>> Только вот гостевуха на полстранички мало кому надобна...

> Ну, факты говорят, что на php делают и более сложные вещи.

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

> Причём вполне успешно и не плюясь.

Можно и тарелку бульона китайскими палочками вылакать. Только нужно ли?

> Но некоторым это как кость в горле. ;-)

Потому что хостинг на пхп фактически _навязывается_.

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

> Ёпт! А ядро Linux задумывалось, как небольшой проект for fun и для изучения защищённого режима i386. И не предполагалось, что оно будет работать на чём-то ещё и из дисков поддерживать что-то отличное от ATA. ;-)

Но зато оно 1) получилось сравнительно удачным с самого начала 2) адекватной замены небыло и нету по сей день 3) оно не отъедает нишу у более достойных 4) его никто никому не навязывает 5) неудачными в нём были частные вещи, которые можно переписать, а не сам архитектурный принцип.

> И?

ик!

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