Критика очень простая.
Типичный похапешник воображает, что ошибка бывает всегда только одна. Та, про которую он, похапешник, случайно узнал.
Мысль о том, что могут встречаться и другие ошибки, никогда не приходит ему в голову.
И по этой причине он начинает считать себя хитрее и умнее всех.
Ровно до тех пор, когда файл невозможно будет удалить не потому что кто-то успел раньше, а потому что нет прав на удаление или имя файла указано неверно.
В итоге наш похапешник имеет неработающее приложение и ни малейшей идеи — почему.
Медсестра: Доктор, больному из третьей палаты плохо.
Доктор: Милочка, надо мыслить позитивнее. Говорите «больной думает, что ему плохо».
Через 30 мин.
Медсестра: Доктор, больной из третьей думает, что он умер.
Так вот.
Я понимаю, что доктору, конечно, виднее.
Но больной думает, что он умер.
Да, странное нежелание с их стороны.
Именно по этой причине я не подписан на тег РНР — поскольку беспомощные котятки лепят его ко всему, от яваскрипта до администрирования серверов, и разгребать всю эту помойку банально нет времени.
В общем, прорывов с этой стороны ожидать не стоит. Трафик обеспечивают не немногочисленные специалисты, а бесчисленные нубы. Поэтому на удобство первых можно смело забить.
Все это уже давно реализовано на стаковерфлое:
Правки от untrusted нубов не видны, от авторитетных папок принимаются сразу.
Хочешь в папки — донать знаниями.
Но это не работает на стаковерфлое, не будет и на тостере.
На стаковерфлое толпы индусов ради мелкого прайса (порядка +2 в карму) отсматривают тонны вопросов, в которых не смыслят ни бельмеса — с нулевым выхлопом кроме совсем уж вопиющих случаев типа мата.
На Тостере же администрация не в силах отказаться от социалистических принципов демократического централизма, и модератор всему голова. В итоге судьей в споре между дураком и профессионалом будет выступать человек, не обладающий специальными знаниями. С тем же нулевым выхлопом.
Чтобы сайт мог нормально модерироваться, нужно сделать ровно две вещи:
1. Администрация должна быть честной с самой собой, и признать, что вместо ожидаемого «сайта на котором гугль ищет ответы на наши вопросы» имеется в реальности сайт для вопросов вида «у миня лабараторная ашыбка напишыте код». 9 / 10 шлака должно сливаться безжалостно, вне зависимости от того, помогли очередному двоечнику воспользоваться гуглем, или нет.
2.Научиться привлекать на сайт профессионалов и гонять малолетнюю шелупонь. И это как раз проблема посложнее многих: профессионалу тупо некогда зависать на сайте. В то время как у школоты и времени вагон, и очень хочется самоутверждения.
А все эти редактирования и истории хорошо смотрятся на вайтборде в комнате для совещаний, но в реальной жизни работать не будут.
Кстати, большая просьба отображать все теги вопроса, а не самый общий и нерелевантный.
Заходишь в вопрос, думаешь — там интересная академическая задачка, а выясняется, что тупой поиск модуля для какой-то убогой коммерческой приблуды.
А еще лучше — если бы была запилена возможность выбирать теги, которые ты не хочешь видеть. Такое улучшение с лихвой перекрыло бы все остальные, вместе взятые.
И правда. Как посмел автор вместо привычной пережёваной легкой кашицы к утреннему кофе допустить примитивную интригу в тексте? Заставить чуть-чуть пошевелить мозгами? Пусть пишет предупреждение. Objects in mirror are closer than they appear.
Где это видано, чтобы статья на хабре заставляла напрягать мозг?
Очень грустно читать статью, автор которой предубеждён против какой-либо технологии, и, за неимением фактов, пытается отстаивать свои пристрастия с помощью голословных утверждений.
В случае с MySQL, уровень эмуляции PDO активен по умолчанию, когда вы готовите запрос. Но он никогда не достигнет уровня подготовленного выражения. По сути, код PDO отпарсит и соберёт ваш запрос без взаимодействия с MySQL на эту тему. Это странное поведение.
Это единственно правильное поведение в 99.9% случаев.
Поддерживаемые базой подготовленные выражения ориентированы на однократную подготовку и множественное выполнение одного и того же запроса. В пхп такое поведение требуется в мизерном количестве случаев. Всё остальное время гонять запрос в БД по два раза, чтобы «достичь уровня просветления подготовленного выражения» — бессмысленно. И замена плейсхолдеров на их значения, производимая PDO, работает прекрасно.
Да, режим эмуляции приводит к небольшим неудобствам.
Да, параметр LIMIT без явного указания типа приведет к ошибке.
Да, даже явное указание не спасёт для случая
$stmt->bindValue('limit', '10', PDO::PARAM_INT);
— PDO все равно добавит кавычки, несмотря на модификатор PDO::PARAM_INT.
Но положа руку на сердце — это не те проблемы, ради которых стоит устраивать такой шум. Режим эмуляции — прекрасная вещь, и бежать отключать его совсем не обязательно.
Несмотря на то, что мы явным образом отключили уровень эмуляции подготовленных выражений в PDO, он всё ещё немного активен. У него инициирован парсинг параметров. Есть два вида синтаксиса параметров: анонимные параметры, представленные как «?» в вашем запросе на заполнение, и именованные параметры, вроде «:myparam». Не каждая RDBMS поддерживает оба синтаксиса, причём MySQL не поддерживает именованные, только анонимные. Однако наш предыдущий запрос завершён без проблем. Всё дело в том, что анализатор запросов PDO всё ещё активен, даже с отключённым уровнем эмуляции. Он вмешался и заменил каждый именованный параметр на анонимный
Я не пойму — это аргумент за «режим эмуляции» или против? Судя по тону автора, складывается впечатление, что второе.
Однако по отзывам знакомых программистов — это чуть ли не лучшее, что есть в PDO.
Поэтому отключите этот уровень эмуляции как можно скорее
Куда полезнее будет включить режим критического отношения к голословным утверждениям (это же относится к заявлениям еще одного противника режима эмуляции — А.Феррары, если вам случалось читать их на Stackoverflow).
Кстати, я в сео не специалист, но слышал, что поисковики нервно реагируют, если отдаётся разный контент роботу с обычным юзер-агентом и роботу, маскирующемуся под браузер. Если это так, то решение с редиректом принесет больше вреда, чем пользы. Хотелось бы послушать мнение специалиста.
чтобы пройти своего рода испытание – сообщество само решит, стоит ли наделить пользователя возможностью влиять на других.
Не работает. Любая халтура, которая сляпана с помощью копипасты и хорошо подвешенного языка, легко проходит фильтр. При этом минусы, которые получила статья — они не за качество. А за банальность темы. Есть такая фишка на Хабре, минусовать статьи на тему, которая кажется всем избитой, про которую «все всё знают». Ага, знают. Тема, казалось бы, всем известна, но принципиальные ошибки видит всего пара человек.
Увы, отрицательная селекция, которой занимался Хабр все эти годы, дала свои плоды.
И дело совсем не в циферках кармы. Проблема в людях. У которых политика ресурса выработала два очень устойчивых рефлекса:
1. Заявленный, как технологическая площадка, Хабр, пор сути, превратился в этакий глянец, для чтения за завтраком. Про красивые гаджеты, модные аксессуары и космические новости. И у пользователей выработался рефлекс ставить плюсик статье, которая выглядит, как хорошая. В суть же вчитываются единицы: это же новостной ресурс о всяких диковинках. Прочитал-заплюсовал-пролистал дальше.
2. Шакалья политика затаптывать несогласных с мнением большинства вывела специальную породу юзера-конформиста, очень тщательно взвешивающего свои слова и никогда не идущего на конфликт, даже при 100% сознании собственной правоты. Обладающие же собственным мнением все давно ушли в минуса.
Так что надеяться на сообщество не стоит. Оно будет продолжать поощрять любую халтуру и графоманию — лишь бы выглядело красиво и не напрягало мозги.
Новые правила, конечно, будут получше в этом плане. Но селекция, увы, всё равно направлена на креативщиков, а не специалистов. Пересказать своими словами чужую новость и описать собственное исследование — это несоразмерные сущности. Новости можно постить хоть каждый день. Людей же, готовых потратить пару недель своего времени, чтобы написать что-то оригинальное, основанное на личном опыте — очень мало. В итоге, программа, призванная наделять правом голоса специалистов, на самом деле оставляет их за бортом, выдвигая новостников и PR-отделы корпораций.
В общем, эта публикация как бы говорит нам, что получения вожделенных гражданских прав не нужно обладать ни знаниями, ни опытом, ни совестью.
Нужно всего лишь немного наглости и воображения:
1. Найти в интернете копипасту от очередного незнайки с кучей ляпов в стиле «слышал звон, да не знаю где он».
2. Перевести её (снова без малейшего понимания, оставив все ляпы на месте).
3. Нафантазировать пару красивых деталей от себя.
4. На критические замечания отвечать в стиле «божья роса».
5. PROFIT!!!
Я вас умоляю.
Если такие вещи надо объяснять, то это заранее бесполезно.
Предназначение этого текста — вызывать восхищение у детей младшей школы, и с этой задачей он справляется прекрасно. Это всё.
Такого рода опусы все пишутся под одну копирку:
— про поиск уязвимости — ничего
— про защиту — хочется плакать кровавыми слезами
— про эксплуатацию — аффтар щеголяет знанием пары банальных SQL операторов, дотоле неизвестных незадачливому читателю, выдавая их за сакральные хакирские техники (при этом в подавляющем большинстве случаев никогда сам их не применял, а тупо скопипастил у такого-же горе-писаки, и не в состоянии объяснить, как и почему работает или не работает тот или иной запрос)
Для того, чтобы осуществить инъекцию, не нужно быть хакиром и читать макулатурные статьи.
Надо просто знать SQL. Если не знаешь — то набор наизусть выученных «приемчиков» тебе не поможет. А если знаешь — то не понадобится.
В этом комментарии содержится несколько заблуждений
1. С подавляющим большинством кодировок addslashes() абсолютно безопасна, если используется по назначению.
2. Сами по себе pdo & prepared statement в случае воображаемой автором атаки — не панацея, и при установках по умолчанию пропустит инъекцию за здорово живешь. Чтобы в кодировках, подверженных данному типу инъекции, атака становилась невозможной, ПДО надо настраивать специально.
3. Дарагая похапешечка, вместе со всеми своими функциями и расширениями, тут как бы вообще не при чем.
Типичный похапешник воображает, что ошибка бывает всегда только одна. Та, про которую он, похапешник, случайно узнал.
Мысль о том, что могут встречаться и другие ошибки, никогда не приходит ему в голову.
И по этой причине он начинает считать себя хитрее и умнее всех.
Ровно до тех пор, когда файл невозможно будет удалить не потому что кто-то успел раньше, а потому что нет прав на удаление или имя файла указано неверно.
В итоге наш похапешник имеет неработающее приложение и ни малейшей идеи — почему.
Особенно при наличии нормальных аргументов.
Искать без левого процента совсем несложно.
Но ведь даст такие неудобные цифры! :)
Так вот.
Я понимаю, что доктору, конечно, виднее.
Но больной думает, что он умер.
Если не знаешь что внутри — кликнешь, накрутишь лишний pageview. Профит!
Именно по этой причине я не подписан на тег РНР — поскольку беспомощные котятки лепят его ко всему, от яваскрипта до администрирования серверов, и разгребать всю эту помойку банально нет времени.
В общем, прорывов с этой стороны ожидать не стоит. Трафик обеспечивают не немногочисленные специалисты, а бесчисленные нубы. Поэтому на удобство первых можно смело забить.
Правки от untrusted нубов не видны, от авторитетных папок принимаются сразу.
Хочешь в папки — донать знаниями.
Но это не работает на стаковерфлое, не будет и на тостере.
На стаковерфлое толпы индусов ради мелкого прайса (порядка +2 в карму) отсматривают тонны вопросов, в которых не смыслят ни бельмеса — с нулевым выхлопом кроме совсем уж вопиющих случаев типа мата.
На Тостере же администрация не в силах отказаться от социалистических принципов демократического централизма, и модератор всему голова. В итоге судьей в споре между дураком и профессионалом будет выступать человек, не обладающий специальными знаниями. С тем же нулевым выхлопом.
Чтобы сайт мог нормально модерироваться, нужно сделать ровно две вещи:
1. Администрация должна быть честной с самой собой, и признать, что вместо ожидаемого «сайта на котором гугль ищет ответы на наши вопросы» имеется в реальности сайт для вопросов вида «у миня лабараторная ашыбка напишыте код». 9 / 10 шлака должно сливаться безжалостно, вне зависимости от того, помогли очередному двоечнику воспользоваться гуглем, или нет.
2.Научиться привлекать на сайт профессионалов и гонять малолетнюю шелупонь. И это как раз проблема посложнее многих: профессионалу тупо некогда зависать на сайте. В то время как у школоты и времени вагон, и очень хочется самоутверждения.
А все эти редактирования и истории хорошо смотрятся на вайтборде в комнате для совещаний, но в реальной жизни работать не будут.
Заходишь в вопрос, думаешь — там интересная академическая задачка, а выясняется, что тупой поиск модуля для какой-то убогой коммерческой приблуды.
А еще лучше — если бы была запилена возможность выбирать теги, которые ты не хочешь видеть. Такое улучшение с лихвой перекрыло бы все остальные, вместе взятые.
Где это видано, чтобы статья на хабре заставляла напрягать мозг?
Прекрасная функция, у которой нет никаких проблем, кроме пользователей.
Это единственно правильное поведение в 99.9% случаев.
Поддерживаемые базой подготовленные выражения ориентированы на однократную подготовку и множественное выполнение одного и того же запроса. В пхп такое поведение требуется в мизерном количестве случаев. Всё остальное время гонять запрос в БД по два раза, чтобы «достичь уровня
просветленияподготовленного выражения» — бессмысленно. И замена плейсхолдеров на их значения, производимая PDO, работает прекрасно.Да, режим эмуляции приводит к небольшим неудобствам.
Да, параметр LIMIT без явного указания типа приведет к ошибке.
Да, даже явное указание не спасёт для случая
— PDO все равно добавит кавычки, несмотря на модификатор PDO::PARAM_INT.
Но положа руку на сердце — это не те проблемы, ради которых стоит устраивать такой шум. Режим эмуляции — прекрасная вещь, и бежать отключать его совсем не обязательно.
Я не пойму — это аргумент за «режим эмуляции» или против? Судя по тону автора, складывается впечатление, что второе.
Однако по отзывам знакомых программистов — это чуть ли не лучшее, что есть в PDO.
Куда полезнее будет включить режим критического отношения к голословным утверждениям (это же относится к заявлениям еще одного противника режима эмуляции — А.Феррары, если вам случалось читать их на Stackoverflow).
Кстати, я в сео не специалист, но слышал, что поисковики нервно реагируют, если отдаётся разный контент роботу с обычным юзер-агентом и роботу, маскирующемуся под браузер. Если это так, то решение с редиректом принесет больше вреда, чем пользы. Хотелось бы послушать мнение специалиста.
Не работает. Любая халтура, которая сляпана с помощью копипасты и хорошо подвешенного языка, легко проходит фильтр. При этом минусы, которые получила статья — они не за качество. А за банальность темы. Есть такая фишка на Хабре, минусовать статьи на тему, которая кажется всем избитой, про которую «все всё знают». Ага, знают. Тема, казалось бы, всем известна, но принципиальные ошибки видит всего пара человек.
Увы, отрицательная селекция, которой занимался Хабр все эти годы, дала свои плоды.
И дело совсем не в циферках кармы. Проблема в людях. У которых политика ресурса выработала два очень устойчивых рефлекса:
1. Заявленный, как технологическая площадка, Хабр, пор сути, превратился в этакий глянец, для чтения за завтраком. Про красивые гаджеты, модные аксессуары и космические новости. И у пользователей выработался рефлекс ставить плюсик статье, которая выглядит, как хорошая. В суть же вчитываются единицы: это же новостной ресурс о всяких диковинках. Прочитал-заплюсовал-пролистал дальше.
2. Шакалья политика затаптывать несогласных с мнением большинства вывела специальную породу юзера-конформиста, очень тщательно взвешивающего свои слова и никогда не идущего на конфликт, даже при 100% сознании собственной правоты. Обладающие же собственным мнением все давно ушли в минуса.
Так что надеяться на сообщество не стоит. Оно будет продолжать поощрять любую халтуру и графоманию — лишь бы выглядело красиво и не напрягало мозги.
Новые правила, конечно, будут получше в этом плане. Но селекция, увы, всё равно направлена на креативщиков, а не специалистов. Пересказать своими словами чужую новость и описать собственное исследование — это несоразмерные сущности. Новости можно постить хоть каждый день. Людей же, готовых потратить пару недель своего времени, чтобы написать что-то оригинальное, основанное на личном опыте — очень мало. В итоге, программа, призванная наделять правом голоса специалистов, на самом деле оставляет их за бортом, выдвигая новостников и PR-отделы корпораций.
Нужно всего лишь немного наглости и воображения:
1. Найти в интернете копипасту от очередного незнайки с кучей ляпов в стиле «слышал звон, да не знаю где он».
2. Перевести её (снова без малейшего понимания, оставив все ляпы на месте).
3. Нафантазировать пару красивых деталей от себя.
4. На критические замечания отвечать в стиле «божья роса».
5. PROFIT!!!
Но по умолчанию-то EMULATE_PREPARES включена. И для «знака 0xbf5c27» вышеприведенный код при дефолтных настройках угрозы не представляет.
Если такие вещи надо объяснять, то это заранее бесполезно.
Предназначение этого текста — вызывать восхищение у детей младшей школы, и с этой задачей он справляется прекрасно. Это всё.
Такого рода опусы все пишутся под одну копирку:
— про поиск уязвимости — ничего
— про защиту — хочется плакать кровавыми слезами
— про эксплуатацию — аффтар щеголяет знанием пары банальных SQL операторов, дотоле неизвестных незадачливому читателю, выдавая их за сакральные хакирские техники (при этом в подавляющем большинстве случаев никогда сам их не применял, а тупо скопипастил у такого-же горе-писаки, и не в состоянии объяснить, как и почему работает или не работает тот или иной запрос)
Для того, чтобы осуществить инъекцию, не нужно быть хакиром и читать макулатурные статьи.
Надо просто знать SQL. Если не знаешь — то набор наизусть выученных «приемчиков» тебе не поможет. А если знаешь — то не понадобится.
Я надеялся на честный ответ.
Сюда это постить не стоило.
1. С подавляющим большинством кодировок addslashes() абсолютно безопасна, если используется по назначению.
2. Сами по себе pdo & prepared statement в случае воображаемой автором атаки — не панацея, и при установках по умолчанию пропустит инъекцию за здорово живешь. Чтобы в кодировках, подверженных данному типу инъекции, атака становилась невозможной, ПДО надо настраивать специально.
3. Дарагая похапешечка, вместе со всеми своими функциями и расширениями, тут как бы вообще не при чем.