The OpenNET Project / Index page

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



"В WordPress молча устранена уязвимость, позволяющая изменить..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"В WordPress молча устранена уязвимость, позволяющая изменить..."  +/
Сообщение от opennews (??), 03-Фев-17, 12:44 
В опубликованном 26 января корректирующем обновлении WordPress 4.7.2 (https://wordpress.org/news/2017/01/wordpress-4-7-2-security-... без лишней огласки была устранена критическая уязвимость (https://blog.sucuri.net/2017/02/content-injection-vulnerabil... позволяющая удалённому атакующему без аутентификации изменить содержимое любой страницы через манипуляцию с REST API. Разработчики WordPress пояснили (https://make.wordpress.org/core/2017/02/01/disclosure-of-add... отсутствие упоминания об исправлении уязвимости в анонсе тем, что они лишь придержали публикацию уведомления, желая дождаться пока будет установлено обновление у как можно большего числа пользователей, чтобы предотвратить волну атак и вандализма.


Проблема проявляется только в выпусках 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-кода на сервере.


URL: https://blog.sucuri.net/2017/02/content-injection-vulnerabil...
Новость: http://www.opennet.ru/opennews/art.shtml?num=45974

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (-), 03-Фев-17, 12:44   –1 +/
Сейчас эксперты придут и скажут, что дело вовсе не в кривом дизайне похвпэ и что никто уже не использует $_GET и $_POST и вообще Word Press г о в н о к о д.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #3, #7, #29, #65, #67

2. Сообщение от Аноним (-), 03-Фев-17, 12:45   +1 +/
Новости про баги вордпресса (да какие там баги, зияющие дыры) выходят так регуляно, что уже стали чем-то обычным
Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от A.Stahl (ok), 03-Фев-17, 12:48   +4 +/
Это плата за слишком вольное неявное приведение типов.
По каким-то причинам современные программисты очень боятся выделять/освобождать память и приводить типы самостоятельно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #5

4. Сообщение от поледанныхотсутств (?), 03-Фев-17, 12:48   +/
Использование wordpress, почти равносильно..
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #30

5. Сообщение от asand3r (?), 03-Фев-17, 12:56   +7 +/
Потому что это "сложо, неэффективно, небезопасно, пока я буду этим заниматься, можно написать еще сотню строк кода".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #23

6. Сообщение от Аноним (-), 03-Фев-17, 13:00   +/
> молча устранена уязвимость

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

Ответить | Правка | Наверх | Cообщить модератору

7. Сообщение от Gemorroj (ok), 03-Фев-17, 13:11   +7 +/
>> кривом дизайне похвпэ

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #8, #9

8. Сообщение от Добрый анон (?), 03-Фев-17, 13:15   –4 +/
>это недоработка чисто вордпресовская, легко можно представить подобное в любом другом веб проекте (имею ввиду неверную расстановку приоритетов для получения значения переменной).
> легко можно представить подобное в любом другом веб проекте

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #34

9. Сообщение от КО (?), 03-Фев-17, 13:19   +1 +/
Причем тут приоритеты?
Когда в одном месте при анализе параметра _5678helloworld_ это 5678helloworld, а в другом 5678. Не удивлюсь, что id=0x162E мог себя вести аналогичным образом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #12, #15

10. Сообщение от бедный буратино (ok), 03-Фев-17, 13:20   +9 +/
автор, который вносил это, проиграл своему коллеге 5000 рупий - ибо таки спалили
Ответить | Правка | Наверх | Cообщить модератору

11. Сообщение от PavelR (??), 03-Фев-17, 13:24   +7 +/
>манипуляции с настойками

))

Ответить | Правка | Наверх | Cообщить модератору

12. Сообщение от Gemorroj (ok), 03-Фев-17, 13:24   –1 +/
js:
parseInt('5678helloworld'); //5678
---
это проблема всех динамических языков, или даже приведения типов. а не конкретно php.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #14, #18, #24

13. Сообщение от Аноним (-), 03-Фев-17, 13:31   +3 +/
2017года а у ВП ничего нового.
Ответить | Правка | Наверх | Cообщить модератору

14. Сообщение от ss (??), 03-Фев-17, 13:52   +/
Я эту ошибку отношу исключительно на счет вордпресса, поскольку гуляние параметра по разным фильтрам "авось в какойнить подойдет" - это проблема не языка программирования, а конкретного программиста наваявшего подобное...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

15. Сообщение от Аноним (-), 03-Фев-17, 13:54   +/
Это вполне себе обычное дело для языков с нестрогой типизацией. Если человек не знает этого и садится кодить на пхп или жс, то для него есть особое название - быдлoкодер. Но никоим образом это не может быть претензией к языку, который изначально создавался с нестрогой типизацией, и в котором реализация оной выполнена как надо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #25, #62

16. Сообщение от Аноним (-), 03-Фев-17, 14:04   +1 +/
С ошибками приведения типов бороться сложно, неявное приведение могло произойти и в MySQL. А вот то что один модуль решает, что запись с заданным id не найдена, а потом другой спокойно с ним что-то делает - это, имхо, полный бардак в архитектуре.
Ответить | Правка | Наверх | Cообщить модератору

17. Сообщение от Lolwat (?), 03-Фев-17, 14:15   –1 +/
Я одни делаю проверки regEx перед тем как использую значения?
И как люди пользуются WP?
Да и вообще, я видел бизнеса которые клипаю магазины и всякие веб сервисы  на WP. Вот как так? Руки нужно отрубать таким девелоперам по самую шею
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #27, #35

18. Сообщение от Аноним (-), 03-Фев-17, 14:19   +5 +/
> js:
> parseInt('5678helloworld'); //5678
> ---
> это проблема всех динамических языков,

Ну-ну.


-- lua
> print(tonumber("5678"))

5678
> print(tonumber("5678helloworld"))

nil

% введение
1 ?- atom_number('5678helloworld',X).
false.

2 ?- atom_number('5678',X).                          
X = 5678.

2 ?- number_chars(Num, "1234").
Num = 1234.

3 ?- number_chars(Num, "1234HelloWorld").  
ERROR: number_chars/2: Syntax error: Illegal number

#tcl
% expr "123"
123
% expr "123Hello"
invalid bareword "123Hello"
in expression "123Hello";
should be "$123Hello" or "{123Hello}" or "123Hello(...)" or ...

# любимейший язык анонимов с убунтой
>>> int('5678helloworld')

Traceback (most recent call last):
  File "<input>", line 1, in <module>
    int('5678helloworld')
ValueError: invalid literal for int() with base 10: '5678helloworld'
>>> int('5678')

5678

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #21, #22

20. Сообщение от Аноним (-), 03-Фев-17, 14:54   –2 +/
Что вы думаете о MODX?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #50, #56, #74

21. Сообщение от Gemorroj (ok), 03-Фев-17, 14:57   –2 +/
Кстати про любимый язык анонимов с убунтой:
print 6 + "123";
> unsupported operand type(s) for +: 'int' and 'str'
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #43

22. Сообщение от freehckemail (ok), 03-Фев-17, 15:04   +3 +/
Продолжаем эстафету. :)


Схема. Racket v6.1.
1       > (string->number "11")
2       11
3       > (string->number "11zxc")
4       #f

Common Lisp (SBCL v1.2.4)
1       * (parse-integer "11")
2       11
3       * (parse-integer "11zxc")
4       debugger invoked on a SB-INT:SIMPLE-PARSE-ERROR in thread

Perl (v5.20.2)
1       $ print "11zxc" + 0
2*      Argument "11zxc" isn't numeric in addition (+) at - line 1.
3       11
4       $ print "zxc11" + 0
5*      Argument "zxc11" isn't numeric in addition (+) at - line 1.
6       0
[*] Для этих строк надо включить use warnings.
    Однако даже с use strict, скрипт с ошибкой не сваливается.
    Похоже, это камень в огород Perl.

Zsh (v5.0.7)
1       % x=11zxc
2       % let x+=0
3       zsh: bad math expression: operator expected at `zxc'

Bash (v4.3.30)
1       $ x=11zxc
2       $ let x+=0
3       bash: let: 11zxc: value too great for base (error token is "11zxc")


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

23. Сообщение от Sw00p aka Jerom (?), 03-Фев-17, 15:05   –1 +/
>>небезопасно

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #38

24. Сообщение от Sw00p aka Jerom (?), 03-Фев-17, 15:06   +/
> js:
> parseInt('5678helloworld'); //5678
> ---
> это проблема всех динамических языков, или даже приведения типов. а не конкретно
> php.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #54

25. Сообщение от Sw00p aka Jerom (?), 03-Фев-17, 15:12   –2 +/
> Это вполне себе обычное дело для языков с нестрогой типизацией. Если человек
> не знает этого и садится кодить на пхп или жс, то
> для него есть особое название - быдлoкодер. Но никоим образом это
> не может быть претензией к языку, который изначально создавался с нестрогой
> типизацией, и в котором реализация оной выполнена как надо.
>>с нестрогой типизацией

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15 Ответы: #37

26. Сообщение от klalafuda (?), 03-Фев-17, 15:51   –1 +/
> осуществляется приведение переменной к целому типу и вместо "5678helloworld" передаётся значение "5678"

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

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

Ответить | Правка | Наверх | Cообщить модератору

27. Сообщение от angra (ok), 03-Фев-17, 15:55   +/
Ты гордишься тем, что как обезьянка повторяешь технику без попытки осмысления?
Если мне надо проверить существует ли переданный объект, то я просто сделаю if exists $pages{$page}. Что к этому добавит проверка регексом? Если какой-то параметр должен быть числом, то зачем его пропускать через проверку регексом, если все-равно после этого он пройдет через конвертацию в число? В данном случае причина фейла не в том, что не воспользовались регексом, а в том, что одни и те же по сути проверки существуют в разных местах, разными способами и вызываются более одного раза в процессе обработки запроса.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #36, #48

29. Сообщение от amonymous (?), 03-Фев-17, 16:43   +2 +/
Дело именно в гуанокоде.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #63

30. Сообщение от amonymous (?), 03-Фев-17, 16:43   +/
> Использование wordpress, почти равносильно..

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

31. Сообщение от Виталий (??), 03-Фев-17, 16:44   –1 +/
Как можно больше обновятся, если будут знать о проблеме!!!
Ответить | Правка | Наверх | Cообщить модератору

33. Сообщение от freehckemail (ok), 03-Фев-17, 16:45   +/
> Разработчики WordPress пояснили отсутствие упоминания об исправлении
> уязвимости в анонсе тем, что они лишь придержали публикацию
> уведомления, желая дождаться пока будет установлено обновление у как
> можно большего числа пользователей, чтобы предотвратить волну атак и
> вандализма.

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

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


Ответить | Правка | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #45

35. Сообщение от amonymous (?), 03-Фев-17, 16:49   +/
> Я один делаю проверки regEx перед тем как использую значения?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

36. Сообщение от amonymous (?), 03-Фев-17, 16:49   +3 +/
В вёбе ВЕСЬ юзеринпут должен быть завалидирован без допущений. Независимо от языка.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #64

37. Сообщение от Crazy Alex (ok), 03-Фев-17, 17:17   +/
тем не менее сишники в типах как-то не путаются. Динамика - это вообще заботливо разложенные грабли.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #42, #78

38. Сообщение от Аноним (-), 03-Фев-17, 17:26   –4 +/
Аналогия некорректная. "PHP" - не язык программирования, а всего лишь шаблонизатор, соответственно и планка для него должна быть как для шаблонизатора. Уродливый дизайн, нет внятных исключений и т. д.? Так это потому, что он и не создавался как язык программирования.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #41, #66

40. Сообщение от Нанобот (ok), 03-Фев-17, 17:42   –2 +/
>приведение переменной к целому типу и вместо "5678helloworld" передаётся значение "5678"

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

Ответить | Правка | Наверх | Cообщить модератору

41. Сообщение от Sw00p aka Jerom (?), 03-Фев-17, 17:46   –2 +/
какая аналогия ? о чём речь?

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

42. Сообщение от Sw00p aka Jerom (?), 03-Фев-17, 17:59   –1 +/
> тем не менее сишники в типах как-то не путаются. Динамика - это
> вообще заботливо разложенные грабли.

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

43. Сообщение от Аноним (-), 03-Фев-17, 18:35   +4 +/
> Кстати про любимый язык анонимов с убунтой:
> print 6 + "123";
>> unsupported operand type(s) for +: 'int' and 'str'

Типа, строгая типизация === зло?


>>> 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'

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #49, #77

45. Сообщение от Square1 (?), 03-Фев-17, 19:40   +1 +/
смешно в этом то, что вы не посмотрели код, доверившись только пересказу новости.
а между тем, именно так там и сделали.. валидировали регекспом :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

48. Сообщение от lolwat (?), 03-Фев-17, 20:14   +/
> Ты гордишься тем, что как обезьянка повторяешь технику без попытки осмысления?

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #68

49. Сообщение от anomymous (?), 03-Фев-17, 21:23   –4 +/
>>> (x,y) if all(map(isinstance,[x,y],[int,int])) else str(x) + str(y)]*2)))

Вот здесь вырвало.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43 Ответы: #51

50. Сообщение от anomymous (?), 03-Фев-17, 21:24   –1 +/
> Что вы думаете о MODX?

Позитивчик.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

51. Сообщение от Аноним (-), 03-Фев-17, 21:33   +3 +/
>>>> (x,y) if all(map(isinstance,[x,y],[int,int])) else str(x) + str(y)]*2)))
> Вот здесь вырвало.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #82

54. Сообщение от Аноним (-), 03-Фев-17, 23:06   +/
можно пруфы где создатель такое говорил.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

56. Сообщение от Аноним (-), 03-Фев-17, 23:07   +1 +/
Лучше о нём не думать...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

62. Сообщение от Led (ok), 03-Фев-17, 23:29   +/
> Если человек садится кодить на пхп или жс, то для него есть особое название - быдлoкодер.

//fixed

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

63. Сообщение от Led (ok), 03-Фев-17, 23:31   +1 +/
> Дело именно в гуанокоде.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

64. Сообщение от angra (ok), 04-Фев-17, 01:18   +/
А не в вебе уже можно не заниматься валидацией? А в вебинтерфейсе "для себя" недоступном миру валидировать точно нужно? Ну и самое главное, регекс это единственный способ валидации?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #83

65. Сообщение от Я. Р. Ош (?), 04-Фев-17, 01:21   +/
>Сейчас эксперты придут и скажут

Ты уже пришел

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

66. Сообщение от Я. Р. Ош (?), 04-Фев-17, 01:23   –3 +/
> нет внятных исключений

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #72

67. Сообщение от pda (?), 04-Фев-17, 01:25   +1 +/
> никто уже не использует $_GET и $_POST

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

68. Сообщение от angra (ok), 04-Фев-17, 01:27   +/
> "if exists $pages{$page}" -  очень глупо, в зависимости от реализации Hash,  это может привести к коллизиям.

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

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

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48 Ответы: #84

69. Сообщение от Линукс еще не готов (?), 04-Фев-17, 01:55   –1 +/
Должен быть единое место получения параметров. И должна быть однозначнисть, где прячется ид , в пути или в параметрах
Ответить | Правка | Наверх | Cообщить модератору

72. Сообщение от Аноним (-), 04-Фев-17, 05:37   +3 +/
PHP:

json_decode("null"); // => NULL
json_decode("хах, я тоже null"); // => NULL

JavaScript:

JSON.parse("null"); // => null
JSON.parse("а вот и не null"); // => SyntaxError: Unexpected token а in JSON at position 0

-------

Задача: распарсить два числа из поля number двух объектов из двух строк с JSON, сложить их и вывести результат. Если что-то пошло не так, вывести сообщение об ошибке.

PHP:

$object1 = json_decode($string1);
if (json_last_error() !== JSON_ERROR_NONE) {
  echo "Error: " . json_last_error_msg();
} else {
  $object2 = json_decode($string2);
  if (json_last_error() !== JSON_ERROR_NONE) {
    echo "Error: " . json_last_error_msg();
  } else {
    echo "Result: " . $object1->number + $object2->number;
  }
}

JavaScript:

try {
  console.log(`Result: ${JSON.parse(string1).number + JSON.parse(string2).number}`);
} catch (err) {
  console.log(`Error: ${err.message}`);
}

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66

74. Сообщение от Аноним (-), 04-Фев-17, 07:01   +/
Тоже похапе -> сорта одного и того же.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

75. Сообщение от Аноним (-), 04-Фев-17, 11:47   +/
Если пэхэпэ такой прогнивший, то что юзать?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #79, #85

77. Сообщение от Sw00p aka Jerom (?), 04-Фев-17, 15:23   –1 +/
любителям читать пруфы

https://habrahabr.ru/company/idcee/blog/202890/
https://habrahabr.ru/company/edison/blog/315680/

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

78. Сообщение от www2 (ok), 04-Фев-17, 20:54   –1 +/
Не путайте динамическую типизацию с нестрогой типизацией - это разные вещи. В Python динамическая типизация, но строгая.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #81

79. Сообщение от www2 (ok), 04-Фев-17, 20:56   +/
> Если пэхэпэ такой прогнивший, то что юзать?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #80, #88

80. Сообщение от Аноним (-), 04-Фев-17, 21:47   +/
Предлагаю вообще не пользоваться интернетом и компом. И жить в лесу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79

81. Сообщение от S00p aka Jerom (?), 04-Фев-17, 22:54   +/
В математике все сводится к строгости
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78

82. Сообщение от anomymous (?), 05-Фев-17, 01:06   –1 +/
Нубы всегда такие нубы. Лет через 5 предложите новому коллеге прочитать ваш код. Почитайте с ним вместе. Посмейтесь над тем, что ни хрена быстро не прочли. После чего задумайтесь.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51 Ответы: #86

83. Сообщение от anomymous (?), 05-Фев-17, 01:08   +/
> А не в вебе уже можно не заниматься валидацией? А в вебинтерфейсе
> "для себя" недоступном миру валидировать точно нужно? Ну и самое главное,
> регекс это единственный способ валидации?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64

84. Сообщение от anomymous (?), 05-Фев-17, 01:09   +/
if exists $pages{$page} - не глупо, а очень глупо, поскольку скорее всего pages не существует, и page передаётся куда-то в запрос. Я не про вордпресс конкретно, я про вообще.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68

85. Сообщение от anomymous (?), 05-Фев-17, 01:11   +1 +/
> Если пэхэпэ такой прогнивший, то что юзать?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #90

86. Сообщение от Аноним (-), 05-Фев-17, 07:10   +/
> Нубы всегда такие нубы. Лет через 5 предложите новому коллеге прочитать ваш
> код. Почитайте с ним вместе. Посмейтесь над тем, что ни хрена
> быстро не прочли. После чего задумайтесь.

А еще здесь тестов нет, да и документация отсутсвует!
В общем, ламы такие ламы. Они не знают, что такое PoC, зато готовы спустя 5 лет читать свой код на форумах.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82

88. Сообщение от Аноним (-), 06-Фев-17, 02:57   +/
Слез кстати с докувики на такой в своём бложеке. Доволен. Брат жив.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79

89. Сообщение от Аноним (-), 09-Фев-17, 02:13   +/
gantry + grav
Ответить | Правка | Наверх | Cообщить модератору

90. Сообщение от Фанат PHP и Wordpressemail (?), 13-Фев-17, 09:06   +/
> Православный питончик же. Или рабьку.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85

91. Сообщение от Айкemail (?), 22-Апр-17, 13:33   +1 +/
Молодцы разработчики,всегда обновляют и держат руку на пульсе,вордпресс рулит !
Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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