The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В WordPress молча устранена уязвимость, позволяющая изменить любую страницу

03.02.2017 11:35

В опубликованном 26 января корректирующем обновлении WordPress 4.7.2 без лишней огласки была устранена критическая уязвимость, позволяющая удалённому атакующему без аутентификации изменить содержимое любой страницы через манипуляцию с REST API. Разработчики WordPress пояснили отсутствие упоминания об исправлении уязвимости в анонсе тем, что они лишь придержали публикацию уведомления, желая дождаться пока будет установлено обновление у как можно большего числа пользователей, чтобы предотвратить волну атак и вандализма.

Проблема проявляется только в выпусках WordPress 4.7 и 4.7.1, более ранние версии не подвержены проблеме, даже при включении плагина REST API. REST API по умолчанию включён начиная с ветки 4.7 и предоставляет альтернативный способ манипуляции с настройками, комментариями и публикациями. Уязвимость была обнаружена 20 января исследователями из компании Sucuri в процессе реализации инициативы по аудиту открытых проектов. Разработчики WordPress оперативно выпустили обновление и при участии сетей доставки контента Incapsula, Cloudflare и SiteLock убедились, что в трафике не встречаются попытки эксплуатации данной уязвимости, после чего решили на несколько дней придержать сообщение о проблеме.

Уязвимость вызвана особенностью обработки передаваемых через REST API значений, в частности, передаваемые через $_GET и $_POST параметры имели более высокий приоритет в обработке, чем параметры, закодированные внутри пути. Воспользовавшись данной особенностью атакующий мог передать запрос с идентификатором, включающим не только цифры, но и буквы, и обойти таким образом проверки на наличие полномочий для выполнения операции.

Например, вместо штатного запроса "/wp-json/wp/v2/posts/1234" можно отправить "/wp-json/wp/v2/posts/1234?id=5678helloworld", для которого значение параметра "?id=" будет иметь более высокий приоритет, чем идентификатор в пути "/1234". При проверке прав доступа проверяется наличие идентификатора "5678helloworld" и так как он не найден и не привязан к владельцу, передаётся управление в вызов get_post, который должен завершить запрос не найдя страницу. Но перед вызовом функции get_post осуществляется приведение переменной к целому типу и вместо "5678helloworld" передаётся значение "5678", указывающее на существующую страницу, что приводит не к выходу, а к вызову метода update_item. Отмечается, что в зависимости от используемых плагинов уязвимость может привести не только к подстановке своего содержимого на страницу, но и к выполнению произвольного PHP-кода на сервере.

  1. Главная ссылка к новости (https://blog.sucuri.net/2017/0...)
  2. OpenNews: Библиотека Sodium Compat поможет реализовать верификацию обновлений в WordPress
  3. OpenNews: Критическая уязвимость в PHPMailer, применяемом в WordPress, Drupal и Joomla
  4. OpenNews: Причиной утечки панамских документов могли быть уязвимые версии WordPress и Drupal
  5. OpenNews: Четверть крупнейших сайтов работают под управлением WordPress
  6. OpenNews: Новая критическая уязвимость в WordPress
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/45974-wordpress
Ключевые слова: wordpress
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (71) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 12:44, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Сейчас эксперты придут и скажут, что дело вовсе не в кривом дизайне похвпэ и что никто уже не использует $_GET и $_POST и вообще Word Press г о в н о к о д.
     
     
  • 2.3, A.Stahl (ok), 12:48, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Это плата за слишком вольное неявное приведение типов.
    По каким-то причинам современные программисты очень боятся выделять/освобождать память и приводить типы самостоятельно.
     
     
  • 3.5, asand3r (?), 12:56, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Потому что это "сложо, неэффективно, небезопасно, пока я буду этим заниматься, можно написать еще сотню строк кода".
     
     
  • 4.23, Sw00p aka Jerom (?), 15:05, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>небезопасно

    небезопасная только потомучто сишная malloc такая ?

     
     
  • 5.38, Аноним (-), 17:26, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Аналогия некорректная. "PHP" - не язык программирования, а всего лишь шаблонизатор, соответственно и планка для него должна быть как для шаблонизатора. Уродливый дизайн, нет внятных исключений и т. д.? Так это потому, что он и не создавался как язык программирования.
     
     
  • 6.41, Sw00p aka Jerom (?), 17:46, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    какая аналогия ? о чём речь?

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

    таки да - об этом говорю не я а сам автор, пхп не ЯП, а апликейшен сервер написанный на С.

     
  • 6.66, Я. Р. Ош (?), 01:23, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > нет внятных исключений

    О да, как же нубам без исключений, их же другому и не учили


     
     
  • 7.72, Аноним (-), 05:37, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    PHP json_decode null NULL json_decode хах, я тоже null NULL... большой текст свёрнут, показать
     
  • 2.7, Gemorroj (ok), 13:11, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +7 +/
    >> кривом дизайне похвпэ

    в данном случае вообще не при чем.
    >> "/wp-json/wp/v2/posts/1234?id=5678helloworld", для которого значение парамера "?id=" будет иметь более высокий приоритет, чем идентификатор в пути "/1234"

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

     
     
  • 3.8, Добрый анон (?), 13:15, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >это недоработка чисто вордпресовская, легко можно представить подобное в любом другом веб проекте (имею ввиду неверную расстановку приоритетов для получения значения переменной).
    > легко можно представить подобное в любом другом веб проекте

    Это напрямую и означает, что глобальные (!) супермассивы вроде $_POST и $_GET можно напрямую использовать неправильно, и более того, делать это достаточно легко! Что в свою очередь ведет к кривому дизайну самого ПХП и громадному количеству легаси-кода, который написан с подобными допущениями.

     
     
  • 4.34, amonymous (?), 16:47, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Это напрямую и означает, что глобальные (!) супермассивы вроде $_POST и $_GET
    > можно напрямую использовать неправильно, и более того, делать это достаточно легко!
    > Что в свою очередь ведет к кривому дизайну самого ПХП и
    > громадному количеству легаси-кода, который написан с подобными допущениями.

    А при чём тут пост и гет? Тут речь о том, что вообще произвольные строки в качестве чисел использовать нежелательно.

    Блин, сколько ж лет учат криворучек валидировать весь юзеринпут. Да хоть РЕГЕКСПАМИ, да. А воз и ныне там.

     
     
  • 5.45, Square1 (?), 19:40, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    смешно в этом то, что вы не посмотрели код, доверившись только пересказу новости.
    а между тем, именно так там и сделали.. валидировали регекспом :)
     
  • 3.9, КО (?), 13:19, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Причем тут приоритеты?
    Когда в одном месте при анализе параметра _5678helloworld_ это 5678helloworld, а в другом 5678. Не удивлюсь, что id=0x162E мог себя вести аналогичным образом.
     
     
  • 4.12, Gemorroj (ok), 13:24, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    js:
    parseInt('5678helloworld'); //5678
    ---
    это проблема всех динамических языков, или даже приведения типов. а не конкретно php.
     
     
  • 5.14, ss (??), 13:52, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я эту ошибку отношу исключительно на счет вордпресса, поскольку гуляние параметра по разным фильтрам "авось в какойнить подойдет" - это проблема не языка программирования, а конкретного программиста наваявшего подобное...
     
  • 5.18, Аноним (-), 14:19, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Ну-ну CODE -- lua 5678 nil введение 1 - atom_number 5678helloworld ,X f... большой текст свёрнут, показать
     
     
  • 6.21, Gemorroj (ok), 14:57, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Кстати про любимый язык анонимов с убунтой:
    print 6 + "123";
    > unsupported operand type(s) for +: 'int' and 'str'
     
     
  • 7.43, Аноним (-), 18:35, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Кстати про любимый язык анонимов с убунтой:
    > print 6 + "123";
    >> unsupported operand type(s) for +: 'int' and 'str'

    Типа, строгая типизация === зло?
    [CODE]
    >>> print str(6) + "123"

    6123
    >>> print 6 + int("123")

    129
    >>> myint=type('myint', (int,), dict(zip(('__add__','__radd__'), [lambda x,y: int.__add__

    (x,y) if all(map(isinstance,[x,y],[int,int])) else str(x) + str(y)]*2)))
    >>> '3' + myint(4)

    '43'
    >>> 3 + myint(4)

    7
    >>> 3 + myint(4) + myint(7)

    14
    >>> "3" + myint(4) + myint(7)

    '743'
    [/CODE]

     
     
  • 8.49, anomymous (?), 21:23, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Вот здесь вырвало ... текст свёрнут, показать
     
     
  • 9.51, Аноним (-), 21:33, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Держите нас и далее в курсе ваших достижений и мы, возможно, когда-нибудь пере... текст свёрнут, показать
     
     
  • 10.82, anomymous (?), 01:06, 05/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нубы всегда такие нубы Лет через 5 предложите новому коллеге прочитать ваш код ... текст свёрнут, показать
     
     
  • 11.86, Аноним (-), 07:10, 05/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А еще здесь тестов нет, да и документация отсутсвует В общем, ламы такие ламы ... текст свёрнут, показать
     
  • 6.22, freehck (ok), 15:04, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Продолжаем эстафету CODE Схема Racket v6 1 1 string- number 11... большой текст свёрнут, показать
     
  • 5.24, Sw00p aka Jerom (?), 15:06, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > js:
    > parseInt('5678helloworld'); //5678
    > ---
    > это проблема всех динамических языков, или даже приведения типов. а не конкретно
    > php.

    пхп не ЯП сам создатель об этом говорил, забудьте про него и весь холивар про теорию типов.

     
     
  • 6.54, Аноним (-), 23:06, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    можно пруфы где создатель такое говорил.
     
     
     
    Часть нити удалена модератором

  • 8.77, Sw00p aka Jerom (?), 15:23, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    любителям читать пруфы https habrahabr ru company idcee blog 202890 https h... текст свёрнут, показать
     
  • 4.15, Аноним (-), 13:54, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это вполне себе обычное дело для языков с нестрогой типизацией. Если человек не знает этого и садится кодить на пхп или жс, то для него есть особое название - быдлoкодер. Но никоим образом это не может быть претензией к языку, который изначально создавался с нестрогой типизацией, и в котором реализация оной выполнена как надо.
     
     
  • 5.25, Sw00p aka Jerom (?), 15:12, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Это вполне себе обычное дело для языков с нестрогой типизацией. Если человек
    > не знает этого и садится кодить на пхп или жс, то
    > для него есть особое название - быдлoкодер. Но никоим образом это
    > не может быть претензией к языку, который изначально создавался с нестрогой
    > типизацией, и в котором реализация оной выполнена как надо.
    >>с нестрогой типизацией

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

     
     
  • 6.37, Crazy Alex (ok), 17:17, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    тем не менее сишники в типах как-то не путаются. Динамика - это вообще заботливо разложенные грабли.
     
     
  • 7.42, Sw00p aka Jerom (?), 17:59, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > тем не менее сишники в типах как-то не путаются. Динамика - это
    > вообще заботливо разложенные грабли.

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


     
  • 7.78, www2 (ok), 20:54, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не путайте динамическую типизацию с нестрогой типизацией - это разные вещи. В Python динамическая типизация, но строгая.
     
     
  • 8.81, S00p aka Jerom (?), 22:54, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В математике все сводится к строгости... текст свёрнут, показать
     
  • 5.62, Led (ok), 23:29, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Если человек садится кодить на пхп или жс, то для него есть особое название - быдлoкодер.

    //fixed

     
  • 2.29, amonymous (?), 16:43, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Дело именно в гуанокоде.
     
     
  • 3.63, Led (ok), 23:31, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Дело именно в гуанокоде.

    Кидаться гуанокодом - это нормальное поведение вэб-макак.

     
  • 2.65, Я. Р. Ош (?), 01:21, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >Сейчас эксперты придут и скажут

    Ты уже пришел

     
  • 2.67, pda (?), 01:25, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > никто уже не использует $_GET и $_POST

    Да? А чем там теперь пользуются?

     

  • 1.2, Аноним (-), 12:45, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Новости про баги вордпресса (да какие там баги, зияющие дыры) выходят так регуляно, что уже стали чем-то обычным
     
  • 1.4, поледанныхотсутств (?), 12:48, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Использование wordpress, почти равносильно..
     
     
  • 2.30, amonymous (?), 16:43, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Использование wordpress, почти равносильно..

    Жумлы ещё. С друпальчиком.

     

  • 1.6, Аноним (-), 13:00, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > молча устранена уязвимость

    ..., кроме того молча добавлен новый вид бекдора...

     
  • 1.10, бедный буратино (ok), 13:20, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    автор, который вносил это, проиграл своему коллеге 5000 рупий - ибо таки спалили
     
  • 1.11, PavelR (??), 13:24, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    >манипуляции с настойками

    ))

     
  • 1.13, Аноним (-), 13:31, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    2017года а у ВП ничего нового.
     
  • 1.16, Аноним (-), 14:04, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    С ошибками приведения типов бороться сложно, неявное приведение могло произойти и в MySQL. А вот то что один модуль решает, что запись с заданным id не найдена, а потом другой спокойно с ним что-то делает - это, имхо, полный бардак в архитектуре.
     
  • 1.17, Lolwat (?), 14:15, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Я одни делаю проверки regEx перед тем как использую значения?
    И как люди пользуются WP?
    Да и вообще, я видел бизнеса которые клипаю магазины и всякие веб сервисы  на WP. Вот как так? Руки нужно отрубать таким девелоперам по самую шею
     
     
  • 2.27, angra (ok), 15:55, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ты гордишься тем, что как обезьянка повторяешь технику без попытки осмысления?
    Если мне надо проверить существует ли переданный объект, то я просто сделаю if exists $pages{$page}. Что к этому добавит проверка регексом? Если какой-то параметр должен быть числом, то зачем его пропускать через проверку регексом, если все-равно после этого он пройдет через конвертацию в число? В данном случае причина фейла не в том, что не воспользовались регексом, а в том, что одни и те же по сути проверки существуют в разных местах, разными способами и вызываются более одного раза в процессе обработки запроса.

     
     
  • 3.36, amonymous (?), 16:49, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В вёбе ВЕСЬ юзеринпут должен быть завалидирован без допущений. Независимо от языка.
     
     
  • 4.64, angra (ok), 01:18, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А не в вебе уже можно не заниматься валидацией? А в вебинтерфейсе "для себя" недоступном миру валидировать точно нужно? Ну и самое главное, регекс это единственный способ валидации?
     
     
  • 5.83, anomymous (?), 01:08, 05/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > А не в вебе уже можно не заниматься валидацией? А в вебинтерфейсе
    > "для себя" недоступном миру валидировать точно нужно? Ну и самое главное,
    > регекс это единственный способ валидации?

    Нет, можете валидировать хоть чем, разрешаю. Главное - валидировать корректно.

     
  • 3.48, lolwat (?), 20:14, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты гордишься тем, что как обезьянка повторяешь технику без попытки осмысления?

    очень даже осмысленно

    >Если мне надо проверить существует ли переданный объект, то я просто сделаю if exists $pages{$page}. Что к этому добавит проверка регексом?
    >>В вёбе ВЕСЬ юзеринпут должен быть завалидирован без допущений. Независимо от языка.  -  мудрый аноним

    "if exists $pages{$page}" -  очень глупо, в зависимости от реализации Hash, это может привести к коллизиям.

    >Если какой-то параметр должен быть числом, то зачем его пропускать через проверку регексом, если все-равно после этого он пройдет через конвертацию в число?

    B том что нужно было слать лесом запрос /wp-json/wp/v2/posts/1234?id=5678helloworld в самой ранней стадии (это конечно если id всегда Number). да и RegEx не только, что я использую - я еще все фильтрую параметры, то есть там где я не жду id,  я верну тебе HTTP 400.

     
     
  • 4.68, angra (ok), 01:27, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > "if exists $pages{$page}" -  очень глупо, в зависимости от реализации Hash,  это может привести к коллизиям.

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

    > B том что нужно было слать лесом запрос /wp-json/wp/v2/posts/1234?id=5678helloworld в
    > самой ранней стадии (это конечно если id всегда Number).

    А с этим кто-то спорил? Попробуй все-таки прочитать внимательно, что именно произошло.


     
     
  • 5.84, anomymous (?), 01:09, 05/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    if exists $pages{$page} - не глупо, а очень глупо, поскольку скорее всего pages не существует, и page передаётся куда-то в запрос. Я не про вордпресс конкретно, я про вообще.
     
  • 2.35, amonymous (?), 16:49, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Я один делаю проверки regEx перед тем как использую значения?

    Ты не одинок, нет. Про остальное согласен.

     

  • 1.20, Аноним (-), 14:54, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Что вы думаете о MODX?
     
     
  • 2.50, anomymous (?), 21:24, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Что вы думаете о MODX?

    Позитивчик.

     
  • 2.56, Аноним (-), 23:07, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Лучше о нём не думать...
     
  • 2.74, Аноним (-), 07:01, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Тоже похапе -> сорта одного и того же.
     

  • 1.26, klalafuda (?), 15:51, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > осуществляется приведение переменной к целому типу и вместо "5678helloworld" передаётся значение "5678"

    Ну Семен Семеныч!

    И не надо мол PHP опять виноват. С таким подходом ребят никакой инструмент не спасет.

     
  • 1.31, Виталий (??), 16:44, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Как можно больше обновятся, если будут знать о проблеме!!!
     
  • 1.33, freehck (ok), 16:45, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Разработчики WordPress пояснили отсутствие упоминания об исправлении
    > уязвимости в анонсе тем, что они лишь придержали публикацию
    > уведомления, желая дождаться пока будет установлено обновление у как
    > можно большего числа пользователей, чтобы предотвратить волну атак и
    > вандализма.

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

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


     
  • 1.40, Нанобот (ok), 17:42, 03/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >приведение переменной к целому типу и вместо "5678helloworld" передаётся значение "5678"

    занимательная php-математика :)

     
  • 1.69, Линукс еще не готов (?), 01:55, 04/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Должен быть единое место получения параметров. И должна быть однозначнисть, где прячется ид , в пути или в параметрах
     
  • 1.75, Аноним (-), 11:47, 04/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если пэхэпэ такой прогнивший, то что юзать?
     
     
  • 2.79, www2 (ok), 20:56, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Если пэхэпэ такой прогнивший, то что юзать?

    Статические HTML-сайты.

     
     
  • 3.80, Аноним (-), 21:47, 04/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Предлагаю вообще не пользоваться интернетом и компом. И жить в лесу.
     
  • 3.88, Аноним (-), 02:57, 06/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Слез кстати с докувики на такой в своём бложеке. Доволен. Брат жив.
     
  • 2.85, anomymous (?), 01:11, 05/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Если пэхэпэ такой прогнивший, то что юзать?

    Православный питончик же. Или рабьку. Или растик. Ну с рантаймом год по***ться придётся на каждый проект, и при апдейтах ещё. Проблем-то. Рынок же на месте стоит, конкуренции нет, можно и академично подойти.

     
     
  • 3.90, Фанат PHP и Wordpress (?), 09:06, 13/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Православный питончик же. Или рабьку.

    Угу, вот только PHP 7 по производительности всухую уделывает рабьку с питончиком. Intel, к слову, сотрудничает с командой PHP, оптимизируя их процессоры конкретно под этот ЯП. Пока ребята пишут высокопроизводительные сайты, пишите свои тормозные жигули на рабьке с питончиком))

     

  • 1.89, Аноним (-), 02:13, 09/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    gantry + grav
     
  • 1.91, Айк (?), 13:33, 22/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Молодцы разработчики,всегда обновляют и держат руку на пульсе,вордпресс рулит !
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру