Gutenberg: CloudFlare que bloqueia a solicitação PUT da API REST (rascunho não é salvo) (resolvido por uma atualização da Cloudflare)

Criado em 8 set. 2017  ·  101Comentários  ·  Fonte: WordPress/gutenberg

[ATUALIZAÇÃO: Cloudflare lançou uma correção para problemas com a regra WP0025B 8 de agosto de 2018, atualize.]

Comecei a experimentar Gutenberg em um site de produção e não está funcionando. O site é novo e não possui outro plugin instalado. Parece que a solicitação PUT não está funcionando.

https://i.imgur.com/tElNhnU.png

Estou usando a versão mais recente do Gutenberg 1.1.0 disponível no WP Repo.
Eu também tentei isso em dois outros sites e mesmo erro.
Achei que deveria relatar aqui?

Core REST API Task [Type] Bug [Type] Plugin Interoperability

Comentários muito úteis

Parece que o CloudFlare tem um conjunto de regras habilitado globalmente no WAF - mesmo para usuários gratuitos - que ninguém pode desabilitar (AFAIK).

Aqui estão os detalhes https://blog.cloudflare.com/protecting-everyone-from-wordpress-content-injection/

https://i.imgur.com/8SbZpYK.png

https://i.imgur.com/EJ7S5O4.png

Eu me pergunto se @aaroncampbell poderia ajudar com isso - posso ver seus comentários no post.

Ansioso!

Todos 101 comentários

Tenho uma leve suspeita de que na verdade não é uma falha de Gutenberg, mas uma falha mais profunda com a API REST.
Você tem os permalinks básicos definidos? Nesse caso, tente trocar para um link permanente personalizado e tente novamente.
Eu escrevi alguns detalhes (com links para tracs etc) quando encontrei este symtom.

Sim, tenho bastante permalinks configurados. Eu até usei um plugin de pós-envio de front-end construído com a API REST e funciona.

Esta pode ser uma duplicata de # 1935.

@westonruter Receio que você esteja certo. Parece que há um problema com a solicitação PUT pois ela retorna um 403 .

PUT https://a2podcast.com/wp-json/wp/v2/posts/44 403 ()

para

load-scripts.php?c=0&load[]=jquery-core,jquery-migrate,utils,underscore,backbone,wp-util,wp-backbone,media-models,plupload,wp-plupload,jquery-ui-core,jquery&load[]=-ui-widget,jquery-ui-mouse,jquery-ui-sortable,mediaelement,wp-mediaelement,media-views&ver=4.8.1:4

Se eu logar XMLHttpRequests, esta é a mensagem que recebo.

XHR failed loading: PUT "https://a2podcast.com/wp-json/wp/v2/posts/46".

screenshot 2017-09-09 13 03 57

Quais são os dados de solicitação / resposta para a solicitação da API?

Tentei registrar os objetos req / res da API _actual_ por meio do plugin REST API Log, mas sem dados. Talvez isso seja esclarecedor, entretanto?

https://cloudup.com/cL5lSmvZize

@rmccue Tenho um log semelhante de @JustinSainton

https://i.imgur.com/hRi9cWJ.png
https://i.imgur.com/ZXcRBgJ.png

Ainda não funciona.

Qual é a carga útil de resposta que acompanha isso?

@rmccue Obrigado por fazer a pergunta certa. Eu não olhei para a carga útil da resposta.

Acontece que CloudFlare é a razão pela qual isso está acontecendo.

A carga útil da resposta é esta
https://i.imgur.com/nZWecJR.png

Desativei o CloudFlare em um dos meus domínios para verificar se isso funciona e funcionou. Mas isso novamente é um grande problema. Muitos sites são hospedados no CloudFlare. Atualmente, estou investigando o que está fazendo com que a CloudFlare proíba o IP por adicionar um rascunho via Gutenberg. Parece que Browser Integrity Check está proibindo uma chamada sem cabeça. O que não deve ser banido.

Não tenho regras de página definidas. Nada. Parece que as configurações padrão do CloudFlare estão banindo a API de postar via Gutenberg.

Parece que o CloudFlare tem um conjunto de regras habilitado globalmente no WAF - mesmo para usuários gratuitos - que ninguém pode desabilitar (AFAIK).

Aqui estão os detalhes https://blog.cloudflare.com/protecting-everyone-from-wordpress-content-injection/

https://i.imgur.com/8SbZpYK.png

https://i.imgur.com/EJ7S5O4.png

Eu me pergunto se @aaroncampbell poderia ajudar com isso - posso ver seus comentários no post.

Ansioso!

_Não_ estou usando Cloudflare, mas isso é interessante. Suponho que algo no nível do servidor com o host (Estamos no local) pode estar bloqueando solicitações PUT. Vou perguntar a eles sobre isso.

@rmccue E minha carga útil de resposta é a resposta HTML CPanel 403, fwiw:

https://cloudup.com/cUJByQ-troP

Interessante. Com base nisso, parece que pode ser um problema de API REST com esses hosts. Podemos precisar entrar em contato e ver como consertar isso.

Se você alternar Gutenberg para usar POST em vez de PUT, isso ainda ocorre? (A API aceita POST em todos os lugares em que aceita PUT, mas você também pode fazer POST ?_method=PUT para simular um PUT real no back-end.)

@rmccue Como você PUT para POST em Gutenberg?

@ahmadawais

Faça a mesma solicitação PUT que você está fazendo como uma solicitação POST e adicione a solicitação arg _method=PUT . Isso irá acionar o cabeçalho x-http-method-override para que a API REST saiba que você realmente quer dizer PUT , embora o servidor não consiga lidar com PUT e só queira usar POST pedidos. Você pode fazer o mesmo por DELETE . Para Gutenberg, você pode fazer um monkey patch às solicitações wp.api para usar a substituição de método. Essa seria uma solução temporária, embora seja resolvida para o contexto mais amplo de como a API REST será usada neste projeto e em outras áreas principais.

@rmccue Encontrou a fonte. Em nosso caso, Siteground colocou o seguinte bloco em nosso arquivo .htaccess

    # Block Request Method #
    RewriteCond %{REQUEST_METHOD} ^(connect|debug|delete|move|options|put|trace|track) [NC]
    RewriteRule .* - [F]

Essa foi a causa raiz do problema. Eu não tive a oportunidade de tentar nada para provar o caso, mas presumo que os métodos DELETE e OPTIONS também teriam falhado.

@JustinSainton Boa escavação! DELETE, OPTIONS e PUT precisam ser incluídos na lista de permissões para a API (OPTIONS é usado pelos navegadores automaticamente para solicitações de origem cruzada).

Isso era específico para o seu site ou abrangia todo o site? Se for o último, vou tentar entrar em contato com eles.

@rmccue Não tenho certeza se este é ou não todo o SiteGround ou não - lembro-me vagamente de sua equipe de suporte modificando nosso arquivo htaccess anos atrás, por algum motivo. Portanto, pode não ser _tão_ difundido, mas certamente parece algo para explicar e educar os hosts.

Isso definitivamente dá uma pausa quando você considera o que significa um uso mais amplo da API REST.

O uso primário de todos os métodos de API no núcleo do wp-admin (com mensagens de erro úteis) iria expor e consertá-los muito rapidamente.

Isso já aconteceu uma ou duas vezes antes (IIRC, GoDaddy e WP Engine) e os hosts geralmente respondem bem. Felizmente, os métodos de bloqueio tendem a ser algo que apenas os grandes hosts fazem para "proteção". Definitivamente vou acompanhar isso com SG para descobrir se é uma coisa local ou global.

(Uma preocupação maior é a autenticação, que é muito pior, mas não é relevante para coisas integradas como Gutenberg.)

@rmccue

Uma preocupação maior é a autenticação, que é muito pior, mas não é relevante para coisas embutidas como Gutenberg.

Não poderia concordar mais.

Mas, como Matt sugeriu, fazer Gutenberg depender da API WP REST estabelecerá as bases para um futuro melhor habilitado para API REST para aplicativos WordPress.

Esta é certamente uma duplicata de # 2565

@JustinSainton - Eu mesmo estou no SiteGround e estava chutando os pneus em Gutenberg no início desta noite em meu site de desenvolvimento: Após a publicação inicial de uma postagem, não consigo atualizá-la por minha vida. Embora eu não ache que meu arquivo htaccess foi editado como o seu, estou me perguntando se algo semelhante está acontecendo.

Parece que vou abrir um tíquete com o SiteGround.

Ei, pessoal! 🙌
Estou encerrando este problema com base no fato de que depois de trabalhar com o suporte da CloudFlare por dois meses, eu consertei e agora os sites da CloudFlare são capazes de usar o Gutenberg sem problemas.

Sinta-se à vontade para reabri-lo se houver outros problemas semelhantes. 🔥

Eu gostaria de reabrir este problema porque a segurança básica do CloudFlare (com configuração padrão) está bloqueando Gutenberg! Simplesmente não funciona.

image
image

Tenho um tíquete de suporte aberto em CoudFlare, mas preciso de mais suporte lá para colocá-lo na lista de prioridades.

@ahmadawais : Você seria capaz de testar se a mudança no número 4396 corrige este problema na configuração do CloudFlare?

Ao cavar um pouco da história para o problema de segurança que bloqueia a regra WP0025B da CloudFlare, eu não acho que o número 4396 funcionará para consertá-lo. Vou examinar mais um pouco.

@pento Claro, posso testar se quiser?

E você está certo que é uma regra chamada WP0025B por CloudFlare que está fazendo isso - eu escrevi sobre isso em um comentário acima . Foi consertado depois de muitas idas e vindas entre mim e a equipe de Engenharia da CloudFlare. Eu forneci a eles o arquivo HAR e tudo. Mas é assim de novo.

🎯 Acho que se mais pessoas além de mim conversassem com o CloudFlare, poderíamos consertá-lo para milhões de sites que usam CloudFlare com WordPress. Caso contrário, a API WP REST é potencialmente quebrada quando estamos usando CloudFlare.

Deixe-me saber como posso ajudá-lo a prosseguir! 💯

@ahmadawais : Vale a pena testar, só para ter certeza. Estamos entrando em contato com algumas pessoas que conhecemos na Cloudflare para ver se eles podem ajudar a resolver isso.

@pento Claro.

❌ Plugin Gutenberg

Então, fui em frente e instalei o plug-in Gutenberg mais recente do repositório WP.org em um de meus blogs.
Então fui ao menu Gutenberg no canto inferior esquerdo e tentei atualizar a postagem, clicando em Save Draft e foi isso que consegui.

http://on.ahmda.ws/omCo/c
http://on.ahmda.ws/ollg/c
http://on.ahmda.ws/omEk/c


❌ CloudFlare

Na CloudFlare, isso é o que foi acionado desta vez
http://on.ahmda.ws/om4N/c

❌ Depois de aplicar o patch

E tentei os mesmos passos depois de aplicar o patch em # 4396 sem sorte. É a mesma resposta acima.
Este erro é proeminente quando você está atualizando um post pré-escrito, antes (antes do CloudFlare corrigi-lo) era muito pior. Porém, posso criar novas postagens agora sem problemas, depois disso ele é bloqueado quando tento salvar o rascunho. - CloudFlare está tentando testar o usuário com o Google reCaptcha na resposta de uma chamada de API é ruim.

detalhes do evento


Aqui estão os detalhes do evento exportado do CloudFlare (menos meu nome de domínio).

{
  "id": "3db5cdc34fdc9df7",
  "country": "PK",
  "ip": "182.181.23.252",
  "protocol": "HTTP/2",
  "method": "POST",
  "host": "****.com",
  "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
  "uri": "/wp-json/wp/v2/posts/11798",
  "request_duration": 0,
  "triggered_rule_ids": [
    "950001",
    "950901",
    "958011",
    "959073",
    "960024",
    "973300",
    "973304",
    "973306",
    "973308",
    "973333",
    "973334",
    "973335",
    "973338",
    "981133",
    "981136",
    "981176",
    "981231",
    "981243",
    "981245",
    "981246",
    "981248",
    "981256",
    "981257",
    "981301",
    "981310"
  ],
  "action": "challenge",
  "cloudflare_location": "ATH",
  "occurred_at": "2018-01-11T06:26:18.76Z",
  "rule_detail": [
    {
      "id": "960024",
      "description": "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION-ARGS:JSON_ARG_0002=<!-- "
    },
    {
      "id": "981231",
      "description": "OWASP_CRS/WEB_ATTACK/SQL_INJECTION-ARGS:JSON_ARG_0002=0"
    },
    {
      "id": "950901",
      "description": "OWASP_CRS/WEB_ATTACK/SQL_INJECTION-ARGS:JSON_ARG_0002=h2>Of"
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "",
      "description": "4="
    },
    {
      "id": "",
      "description": "5="
    },
    {
      "id": "",
      "description": "6="
    },
    {
      "id": "",
      "description": "7="
    },
    {
      "id": "",
      "description": "8="
    },
    {
      "id": "",
      "description": "9="
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "",
      "description": "4="
    },
    {
      "id": "",
      "description": "5="
    },
    {
      "id": "",
      "description": "6="
    },
    {
      "id": "",
      "description": "7="
    },
    {
      "id": "",
      "description": "8="
    },
    {
      "id": "",
      "description": "9="
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "950001",
      "description": "OWASP_CRS/WEB_ATTACK/SQL_INJECTION-2000000408_146=insert into"
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "",
      "description": "4="
    },
    {
      "id": "",
      "description": "5="
    },
    {
      "id": "",
      "description": "6="
    },
    {
      "id": "",
      "description": "7="
    },
    {
      "id": "",
      "description": "8="
    },
    {
      "id": "",
      "description": "9="
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "",
      "description": "4="
    },
    {
      "id": "",
      "description": "5="
    },
    {
      "id": "",
      "description": "6="
    },
    {
      "id": "",
      "description": "7="
    },
    {
      "id": "",
      "description": "8="
    },
    {
      "id": "",
      "description": "9="
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "959073",
      "description": "OWASP_CRS/WEB_ATTACK/SQL_INJECTION-2000000408_146=insert into"
    },
    {
      "id": "981257",
      "description": "DETECTS MYSQL COMMENT-/SPACE-OBFUSCATED INJECTIONS AND BACKTICK TERMINATION-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=,\"align\":\"wide\"} -->\n<section class="
    },
    {
      "id": "981248",
      "description": "DETECTS CHAINED SQL INJECTION ATTEMPTS 1/2-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=div class=\""
    },
    {
      "id": "981256",
      "description": "DETECTS MATCH AGAINST, MERGE, EXECUTE IMMEDIATE AND HAVING INJECTIONS-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146= having f"
    },
    {
      "id": "981245",
      "description": "DETECTS BASIC SQL AUTHENTICATION BYPASS ATTEMPTS 2/3-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=\":\"https://c"
    },
    {
      "id": "981246",
      "description": "DETECTS BASIC SQL AUTHENTICATION BYPASS ATTEMPTS 3/3-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=\"url\":\""
    },
    {
      "id": "981243",
      "description": "DETECTS CLASSIC SQL INJECTION PROBINGS 2/2-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=\":\"https://cldup.com/Fz-ASbo2s3.jpg\",\"align\":\"wide\"} --"
    },
    {
      "id": "973338",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000412_204= style="
    },
    {
      "id": "958011",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000408_143=background-image:"
    },
    {
      "id": "973300",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-ARGS:JSON_ARG_0002=<p>"
    },
    {
      "id": "973304",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000408_136=src="
    },
    {
      "id": "973306",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000408_136=style="
    },
    {
      "id": "973308",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-ARGS:JSON_ARG_0002=background-image:"
    },
    {
      "id": "973335",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000412_217=\",\"align\":\"wide\"} --> <section class=\"wp-block-cover-image has-background-dim alignwide\" style=\"background-image:url(https://cldup.com/Fz-ASbo2s3.jpg)"
    },
    {
      "id": "973334",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000412_217=\"url\":\"https://cldup.com/Fz-ASbo2s3.jpg\",\"align\":\"wide\"} --> <section class=\"wp-block-cover-image has-background-dim alignwide\" style=\"background-image:url(https://cldup.com/Fz-ASbo2s3.jpg)\"> <h2>Of Mountains & Printing Presses</h2> </section> <!-- /wp:cov"
    },
    {
      "id": "973333",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000412_217=\",\"align\":\"wide\"} --> <section class=\"wp-block-cover-image has-background-dim alignwide\" style=\"background-image:url(https://cldup.com/Fz-ASbo2s3.jpg)\"> <h2>Of Mountains & Printing Presses</h2> </section> <!-- /wp:cover-image --> <!-- wp:paragraph --> <p>T"
    },
    {
      "id": "960024",
      "description": "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION-ARGS:JSON_ARG_0002"
    }
  ],
  "rule_message": "Inbound Anomaly Score Exceeded (Total Score: 98, SQLi=24, XSS=45): Last Matched Message: IE XSS Filters - Attack Detected.",
  "type": "waf",
  "rule_id": "981176",
  "zone_id": "5ea7ee45ad8481b404d5fb3e3cda83da",
  "cookie": ""
}

Legal, obrigado por testar isso. Ter o nome da regra que foi acionada é uma informação útil.

detalhes do evento


Aqui estão os detalhes do evento exportado do CloudFlare (menos meu nome de domínio). (CLIQUE PARA EXPANDIR!)

{
  "id": "3db5cdc34fdc9df7",
  "country": "PK",
  "ip": "182.181.23.252",
  "protocol": "HTTP/2",
  "method": "POST",
  "host": "****.com",
  "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
  "uri": "/wp-json/wp/v2/posts/11798",
  "request_duration": 0,
  "triggered_rule_ids": [
    "950001",
    "950901",
    "958011",
    "959073",
    "960024",
    "973300",
    "973304",
    "973306",
    "973308",
    "973333",
    "973334",
    "973335",
    "973338",
    "981133",
    "981136",
    "981176",
    "981231",
    "981243",
    "981245",
    "981246",
    "981248",
    "981256",
    "981257",
    "981301",
    "981310"
  ],
  "action": "challenge",
  "cloudflare_location": "ATH",
  "occurred_at": "2018-01-11T06:26:18.76Z",
  "rule_detail": [
    {
      "id": "960024",
      "description": "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION-ARGS:JSON_ARG_0002=<!-- "
    },
    {
      "id": "981231",
      "description": "OWASP_CRS/WEB_ATTACK/SQL_INJECTION-ARGS:JSON_ARG_0002=0"
    },
    {
      "id": "950901",
      "description": "OWASP_CRS/WEB_ATTACK/SQL_INJECTION-ARGS:JSON_ARG_0002=h2>Of"
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "",
      "description": "4="
    },
    {
      "id": "",
      "description": "5="
    },
    {
      "id": "",
      "description": "6="
    },
    {
      "id": "",
      "description": "7="
    },
    {
      "id": "",
      "description": "8="
    },
    {
      "id": "",
      "description": "9="
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "",
      "description": "4="
    },
    {
      "id": "",
      "description": "5="
    },
    {
      "id": "",
      "description": "6="
    },
    {
      "id": "",
      "description": "7="
    },
    {
      "id": "",
      "description": "8="
    },
    {
      "id": "",
      "description": "9="
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "950001",
      "description": "OWASP_CRS/WEB_ATTACK/SQL_INJECTION-2000000408_146=insert into"
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "",
      "description": "4="
    },
    {
      "id": "",
      "description": "5="
    },
    {
      "id": "",
      "description": "6="
    },
    {
      "id": "",
      "description": "7="
    },
    {
      "id": "",
      "description": "8="
    },
    {
      "id": "",
      "description": "9="
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "",
      "description": "4="
    },
    {
      "id": "",
      "description": "5="
    },
    {
      "id": "",
      "description": "6="
    },
    {
      "id": "",
      "description": "7="
    },
    {
      "id": "",
      "description": "8="
    },
    {
      "id": "",
      "description": "9="
    },
    {
      "id": "",
      "description": "0="
    },
    {
      "id": "",
      "description": "1="
    },
    {
      "id": "",
      "description": "2="
    },
    {
      "id": "",
      "description": "3="
    },
    {
      "id": "959073",
      "description": "OWASP_CRS/WEB_ATTACK/SQL_INJECTION-2000000408_146=insert into"
    },
    {
      "id": "981257",
      "description": "DETECTS MYSQL COMMENT-/SPACE-OBFUSCATED INJECTIONS AND BACKTICK TERMINATION-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=,\"align\":\"wide\"} -->\n<section class="
    },
    {
      "id": "981248",
      "description": "DETECTS CHAINED SQL INJECTION ATTEMPTS 1/2-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=div class=\""
    },
    {
      "id": "981256",
      "description": "DETECTS MATCH AGAINST, MERGE, EXECUTE IMMEDIATE AND HAVING INJECTIONS-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146= having f"
    },
    {
      "id": "981245",
      "description": "DETECTS BASIC SQL AUTHENTICATION BYPASS ATTEMPTS 2/3-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=\":\"https://c"
    },
    {
      "id": "981246",
      "description": "DETECTS BASIC SQL AUTHENTICATION BYPASS ATTEMPTS 3/3-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=\"url\":\""
    },
    {
      "id": "981243",
      "description": "DETECTS CLASSIC SQL INJECTION PROBINGS 2/2-OWASP_CRS/WEB_ATTACK/SQLI-2000000408_146=\":\"https://cldup.com/Fz-ASbo2s3.jpg\",\"align\":\"wide\"} --"
    },
    {
      "id": "973338",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000412_204= style="
    },
    {
      "id": "958011",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000408_143=background-image:"
    },
    {
      "id": "973300",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-ARGS:JSON_ARG_0002=<p>"
    },
    {
      "id": "973304",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000408_136=src="
    },
    {
      "id": "973306",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000408_136=style="
    },
    {
      "id": "973308",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-ARGS:JSON_ARG_0002=background-image:"
    },
    {
      "id": "973335",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000412_217=\",\"align\":\"wide\"} --> <section class=\"wp-block-cover-image has-background-dim alignwide\" style=\"background-image:url(https://cldup.com/Fz-ASbo2s3.jpg)"
    },
    {
      "id": "973334",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000412_217=\"url\":\"https://cldup.com/Fz-ASbo2s3.jpg\",\"align\":\"wide\"} --> <section class=\"wp-block-cover-image has-background-dim alignwide\" style=\"background-image:url(https://cldup.com/Fz-ASbo2s3.jpg)\"> <h2>Of Mountains & Printing Presses</h2> </section> <!-- /wp:cov"
    },
    {
      "id": "973333",
      "description": "OWASP_CRS/WEB_ATTACK/XSS-2000000412_217=\",\"align\":\"wide\"} --> <section class=\"wp-block-cover-image has-background-dim alignwide\" style=\"background-image:url(https://cldup.com/Fz-ASbo2s3.jpg)\"> <h2>Of Mountains & Printing Presses</h2> </section> <!-- /wp:cover-image --> <!-- wp:paragraph --> <p>T"
    },
    {
      "id": "960024",
      "description": "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION-ARGS:JSON_ARG_0002"
    }
  ],
  "rule_message": "Inbound Anomaly Score Exceeded (Total Score: 98, SQLi=24, XSS=45): Last Matched Message: IE XSS Filters - Attack Detected.",
  "type": "waf",
  "rule_id": "981176",
  "zone_id": "5ea7ee45ad8481b404d5fb3e3cda83da",
  "cookie": ""
}

Oh, isso é glorioso. Não acho que seja o WP0025B. Acho que os blocos brutos se parecem muito com uma combinação de ataques SQLi e XSS, e isso dispara algum limite.

Exatamente! Também pode ser relacionado à combinação de blocos + solicitação PUT.

WP0025B é o que eu acho que eles consertaram quando eu relatei pela primeira vez. É por isso que posso criar um post simples com um para e conforme ele cresce em complexidade, o CloudFlare o bloqueia.

_Este ticket foi mencionado no Slack em # core-editor por jeffpaul. Veja os registros ._

Vejo essa mudança de título e só quero ouvir meu comentário: https://github.com/WordPress/gutenberg/issues/2704#issuecomment -329565058

Isso parece ser bastante comum no Cloudflare, mas definitivamente não é exclusivo do Cloudflare.

_Este ticket foi mencionado no Slack em # core-editor por jeffpaul. Veja os registros ._

Escalei este tíquete internamente na Cloudflare (sou um cliente). Eles devem se aprofundar nele em breve e podem fornecer alguns comentários genéricos.

FWIW, tive um ingresso aberto com Cloudflare desde fevereiro. Recebi a seguinte mensagem ontem

Obrigado por sua paciência aqui - eu só queria que você soubesse que nosso WAF foi atualizado para especificar proteções WordPress padrão mais compatíveis que agora devem permitir que as versões mais recentes do editor do WordPress operem sem acionar falsos positivos.

Funcionou para mim depois que excluí todas as regras de firewall.

Eu sugiro que você tente depois de limpar o cache.

Incrível, obrigado pela atualização, @caraya!

Parece que está trabalhando para mim. Vou continuar testando :)

Instalei a versão mais recente do Gutenberg (3.4.0) e este problema ainda existe. Cloudflare está bloqueando solicitações wp-json. Não consigo usar a funcionalidade de visualização.

Obter especificamente o seguinte nos registros de atividade do firewall:

"Impedir o abuso contra wp-json api Tipo B"

Enviei um tíquete para Cloudflare.

Cloudflare respondeu.

Parece que tenho que me desculpar porque posso ter me enganado. Depois de entrar em contato com nossa equipe de Firewall aqui, parece que essa regra específica não pode ser contornada usando Regras de página.

A única maneira que parece que esta regra específica pode ser contornada é desabilitando-a especificamente após a atualização para um plano pago Cloudflare Professional, Business ou Enterprise.

Depois de atualizar sua conta, você poderá desativar a regra de firewall acessando a página Firewall >> selecionando Firewall de aplicativo da Web >> em Conjunto de regras Cloudflare >> clique em Cloudflare Wordpress >> Selecione a regra WP0025B >> defina como Desabilitar

Esperava encontrar uma maneira de ajudá-lo a resolver esse problema sem precisar atualizar sua conta, mas parece que não será o caso.

A única solução então, com uma conta Cloudflare gratuita, é colocar na lista de permissões todos os endereços IP que usarão a API JSON.

@pento eu acredito que este ainda é um problema que deve ser resolvido. Gutenberg é inovador ao usar uma conta gratuita do Cloudflare.

Obrigado pela atualização, @roylindauer. Vou ver se podemos entrar em contato com a CloudFlare, mas mencione em seu tíquete que isso está para se tornar um problema crítico: acabamos de lançar o WordPress 4.9.8, que incentiva milhões de sites a instalar o plugin Gutenberg.

Atualização para quem visita este problema: foi escalado dentro do CloudFlare, espero ter uma atualização em algumas horas.

@pento Eu informei Cloudflare através do meu tíquete de suporte.

@pento, este não deve ser um problema fechado. Ainda é um problema tão real quanto parece. Eu fiz muito por Gutenberg, mas mesmo eu não posso usá-lo em meus sites sem ter que desabilitar CloudFlare - o que em si é um pensamento assustador, já que eu uso o CF para me fornecer segurança e redução nas contas de largura de banda.

Acho que é hora de fazer a CloudFlare perceber o quão grande será o problema. Fico feliz em ajudar de qualquer maneira aqui.

PS: Ainda não consigo usar o Gutenberg.

A ironia da postagem que estou tentando publicar com Gutenberg na imagem abaixo

image

A mesma velha história de novo

image

Paz! ✌️

A questão está encerrada, pois não há nada que possamos fazer a respeito desde o final de Gutenberg. Isso não deve ser visto como um sinalizador "não nos importamos", é um sinalizador "temos muitos problemas para gerenciar e aqueles que não podem ser acionados diretamente neste repo precisam ser fechados". 🙂

CloudFlare me informou que eles planejam implantar uma correção WAF na segunda-feira, então espero que isso resolva isso.

@pento obrigado por explicar tudo isso. Faz muito mais sentido mantê-lo fechado dessa forma.

Para quem procura uma solução rápida para isso, basta alterar a base da API REST. Foi sugerido a mim por Fritz Walther.

/**
 * Modify URL base from `wp-json` to 'wpjson'.
 *
 * Save the permalinks again, Settings > Permalinks.
 * Access your API at site.tld/wpjson/wp/v2.
 *
 * <strong i="8">@param</strong> String $slug The Slug.
 * <strong i="9">@return</strong> String
 * <strong i="10">@since</strong> 1.0.0
 */
function aa_api_slug( $slug ) {
    return 'wpjson';
}

// Hook.
add_filter( 'rest_url_prefix', 'aa_api_slug' );

Paz! ✌️

@ahmadawais você sabe se esta configuração resulta em algum problema de segurança?

Seu novo URL de API não será protegido da mesma forma que o antigo é por CloudFlare.

CloudFlare lançou uma "correção de teste" para isso: atualmente ainda está bloqueando as solicitações, mas eles estão coletando logs. Supondo que tudo pareça bom do lado deles, eles pretendem implementar a correção adequadamente na próxima segunda-feira.

Naturalmente, é muito tempo para esperar, então vou investigar soluções alternativas, para que pelo menos vocês possam ver por que não está funcionando e quais são suas opções. 🙂

A Cloudflare lançou uma correção para isso hoje cedo.

@ahmadawais , @roylindauer : Você ainda está vendo esse problema depois de remover todas as soluções alternativas em vigor?

@pento i reverteu todas as alterações e funciona perfeitamente agora. Obrigado por manter contato com Cloudflare! :-)

Graças à correção do Cloudflare, meu log WAF se encheu de entradas "whitelist" de lixo para o nosso pessoal que trabalhava no wp-admin. Grrrrr. Gutenturd.

@pento Não tenho nenhuma solução alternativa no meu site WordPress ou Cloudflare e ainda estou tendo problemas de edição.

@caraya : Seu log WAF do Cloudflare está indicando qual regra está causando o bloqueio de solicitações?

Ele está bloqueando em 100030 porque está desafiando a solicitação.

Parece que o patch do Cloudflare ainda não foi totalmente propagado. Está funcionando.

Desculpe pelo barulho

Obrigado @caraya , este parece ser um problema diferente daquele que o Cloudflare corrigiu. A regra 100030 destina-se a bloquear ataques de sondagem XSS, suponho que o Cloudflare está interpretando o formato do bloco (principalmente se contém comentários HTML, JSON e escape de string) como riscos XSS.

Em qual site você está vendo isso, @caraya? Vou entrar em contato com o Cloudflare e levá-los a investigar.

O problema ainda está acontecendo em nosso site Wordpress, desativamos ambas as regras no cloudflare de acordo com a diretriz, mas não parece surtir efeito. Na verdade, algumas regras em cloudflares WAF parecem não realmente desativar, não tenho certeza, mas em termos de whitelisting também eu coloquei na lista de permissões de Taiwan apenas por frustração porque cloudflare manteve bloqueando meu ip apesar de whitelist todos os ips taiwaneses. De qualquer forma, espero que haja uma solução para isso em breve.

@pento, o site é https://publishing-project.rivendellweb.net/

Eu tenho um tíquete aberto com Cloudflare sobre este problema. Não tive um HEC para resolução, mas mais pressão não atrapalha :)

Como esse problema é resolvido? Desativei ambas as regras no plano Cloudflare Pro e as regras ainda estão bloqueando o Rest Api

@kesenwang : O log do firewall deve indicar qual regra está bloqueando solicitações: você poderia dar uma olhada e ver qual é?

Não use cloudflare. Use Siteground. Tem esse problema. Todos os plug-ins desativados. Use o tema padrão do Wordpress.
O console mostra este erro:
POST https://tcwprintshop.com/wp-json/wp/v2/posts/1326 403 ()

A rede mostra o erro 403 semelhante:
1326 | 403 buscar | index.js? ver = 1536783125: 1

@ mikepinto81 você executa um firewall? Os logs do seu servidor relatam mais alguma coisa além do erro 403? Isso pode ser ou não um problema de Gutenberg, portanto, quanto mais informações você adicionar ao relatório, mais ele ajudará na solução do problema.

Na verdade, pedi ao Siteground que examinasse isso e eles não conseguiram descobrir (após levantar o problema) e pediram para entrar em contato com o autor do plugin. Não há erros nos logs do servidor e eu não executo nenhum tipo de firewall (que eu conheça a menos que o site o faça por padrão?). Esqueci de adicionar a atualização do Pages e postar BEM. SOMENTE as postagens apresentam problemas quando o Gutenberg está ativo. Eles são atualizados corretamente quando Gutenberg é desativado.


De: Carlos Araya [email protected]
Enviado: quinta-feira, 13 de setembro de 2018, 15:43
Para: WordPress / gutenberg
Cc: mikepinto81; Menção
Assunto: Re: [WordPress / gutenberg] CloudFlare bloqueando a solicitação PUT da API REST (rascunho não é salvo) (resolvido por uma atualização da Cloudflare) (# 2704)

@ mikepinto81 https://nam03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmikepinto81&data=02%7C01%7C%7C8626e1a0d9294dbfa7c008d619b11e16%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636724645829338048&sdata=0oQZtXXe7Qy1HCFLSq5SmL0KrgeaZMryfEsuSYBcAvw%3D&reserved = 0 você executa um firewall? Os logs do seu servidor relatam mais alguma coisa além do erro 403? Isso pode ser ou não um problema de Gutenberg, portanto, quanto mais informações você adicionar ao relatório, mais ele ajudará na solução do problema.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub https://nam03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FWordPress%2Fgutenberg%2Fissues%2F2704%23issuecomment-421128678&data=02 % 7C01% 7C% 7C8626e1a0d9294dbfa7c008d619b11e16% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% & 7C636724645829338048 sdata = aydSF1xNtuzrLSP0T8ds5TOTNJQMrOLZ37Cox% 2FXgDuI% 3D & reservados = 0 , ou cortar o fio https://nam03.safelinks.protection.outlook.com/?url=https%3A%2F% 2Fgithub.com% 2Fnotifications% 2Funsubscribe-auth% 2FAKztPgeSvV4xJKIe3cVR-pTiY7qR37oJks5uarVFgaJpZM4PRCw1 & dados = 02% 7C01% 7C% 7C8626e1a0d9294dbfa7c008d619b11e16% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% & 7C636724645829338048 sdata = 4d% 2BgVDPkY7u2sfM78o183gTvJwiOZ% 2BPN% 2F1loiZ% 2Bz9zE% 3D & reservados = 0 .

@ mikepinto81 Você já olhou seu arquivo htaccess? Veja meu problema semelhante aqui: https://github.com/WordPress/gutenberg/issues/2704#issuecomment -329231370

@JustinSainton infelizmente até tentamos redefinir para o htaccess padrão e nenhuma diferença. O que é realmente confuso é como isso afeta apenas as postagens e não as páginas.

Ei pessoal!

Estou usando Cloudflare Pro e Gutenberg

Desativei WP0025A e WP0025B como eles recomendam, mas ainda não está funcionando

Eu tenho o mesmo pb que Caraya

ID da regra | Ação realizada | Endereço IP | Loc. | Host | Data |
- | - | - | - | - | - | -
100030 | Desafio | www.tomplanmytrip.com | 22 minutos atrás | Detalhes

Alguma atualização?

THX!

screen shot 2018-09-18 at 6 51 57 am

Obrigado pela informação, @Tomplanmytrip. A regra 100030 se destina a bloquear ataques de sondagem XSS, parece que o Cloudflare está confundindo a post_content combinação de comentários HTML e JSON serializado como sendo uma tentativa de criar um ataque XSS.

Isso vai ser um pouco mais complicado de corrigir, vou levantá-lo com Cloudflare para obter sua opinião sobre isso.

Ok, obrigado Pento :)

Eu tenho os seguintes erros na minha ferramenta de desenvolvedor

Falha ao carregar o recurso: o servidor respondeu com um status de 400 ()

autosaves: 1 Falha ao carregar o recurso: o servidor respondeu com um status de 405 () -> Recebo a seguinte mensagem se clicar nele: script> var wpgmza_google_api_status = {"message": "Enqueued", "code": " ENQUADA "}

start: 1 Falha ao carregar o recurso: o servidor respondeu com um status de 400 () -> Recebo a seguinte mensagem se clicar nele: {"status": 400, "error": "BadRequestError: Missing content-type" }

Meu plugin WP-map é o problema?

Edit : Sim, Wp-Map é o problema. Agora está funcionando. Alguma idéia de como consertar isso?

Além disso, tenho um problema semelhante se estou usando um widget getyourguide com o seguinte código:

Questões relacionadas

mhenrylucero picture mhenrylucero  ·  3Comentários

aaronjorbin picture aaronjorbin  ·  3Comentários

jasmussen picture jasmussen  ·  3Comentários

pfefferle picture pfefferle  ·  3Comentários

wpalchemist picture wpalchemist  ·  3Comentários