{"id":579,"date":"2026-04-09T16:58:21","date_gmt":"2026-04-09T19:58:21","guid":{"rendered":"https:\/\/www.tonev.pro.br\/?p=579"},"modified":"2026-04-09T17:20:45","modified_gmt":"2026-04-09T20:20:45","slug":"cloudflare-como-fazer-controle-de-acesso-a-api","status":"publish","type":"post","link":"https:\/\/www.tonev.pro.br\/?p=579","title":{"rendered":"Cloudflare &#8211; como fazer controle de acesso a API"},"content":{"rendered":"<p>Se possui um site publicado, prov\u00ea algum servi\u00e7o e n\u00e3o quer que qualquer um possa acessar uma determinada API pode usar o Cloudflare para liberar somente os clientes ( consumidores da API ) autorizados. A grande quest\u00e3o \u00e9 conseguir atender a todas as necessidades com o limite de regras que podem ser criadas, principalmente no plano gratuito que permite apenas cinco.<\/p>\n<p>Para esse caso, a fun\u00e7\u00e3o de anti-bot deve estar desativada. Caso estiver ativa, a estrutura das regras \u00e9 bem diferente.<\/p>\n<h2>Exemplo 1<\/h2>\n<p>Vamos ao exemplo de regra para o caso mais simples, pressupondo que:<\/p>\n<ul>\n<li>O site \u00e9 &#8220;https:\/\/www.tonev.pro.br&#8221;;<\/li>\n<li>As chamadas de API que se deseja restringir s\u00e3o acess\u00edvel atrav\u00e9s da URI &#8220;\/api2\/uploads\/*&#8221;;<\/li>\n<li>Existe apenas um cliente que vai consumir a API<\/li>\n<\/ul>\n<p>Portanto a regra deve ser como no exemplo abaixo:<\/p>\n<p><a href=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_visualbuilder_01-2026-04-09-15-22-34.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-576 aligncenter\" src=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_visualbuilder_01-2026-04-09-15-22-34-275x300.png\" alt=\"Cria\u00e7\u00e3o de regra via o visual builder\" width=\"275\" height=\"300\" srcset=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_visualbuilder_01-2026-04-09-15-22-34-275x300.png 275w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_visualbuilder_01-2026-04-09-15-22-34-700x763.png 700w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_visualbuilder_01-2026-04-09-15-22-34-768x837.png 768w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_visualbuilder_01-2026-04-09-15-22-34.png 785w\" sizes=\"auto, (max-width: 275px) 100vw, 275px\" \/><\/a><\/p>\n<p>Elementos usados:<\/p>\n<ul>\n<li>Condi\u00e7\u00e3o 1:\n<ul>\n<li>Campo: &#8220;URI Full&#8221;<\/li>\n<li>Operador: &#8220;equals&#8221;<\/li>\n<li>Valor: a URI completa da API &#8211; &#8220;https:\/\/novoapi.tonev.pro.br\/api2\/uploads\/*&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Condi\u00e7\u00e3o de avalia\u00e7\u00e3o: <strong>E<\/strong><\/li>\n<\/ul>\n<ul>\n<li>Condi\u00e7\u00e3o 2:\n<ul>\n<li>Campo: &#8220;User Agent&#8221;<\/li>\n<li>Operador: &#8220;does not equal&#8221;<\/li>\n<li>Valor: &#8220;ua_acesso_liberado_123&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>A\u00e7\u00e3o: Block<\/li>\n<\/ul>\n<ul>\n<li>Sequencia: Primeira<\/li>\n<\/ul>\n<p>O resultado: sempre que for feita uma requisi\u00e7\u00e3o para qualquer coisa abaixo de &#8220;https:\/\/novoapi.tonev.pro.br\/api2\/uploads\/&#8221; e o cabe\u00e7alho &#8220;User Agent&#8221; da solicita\u00e7\u00e3o HTTP n\u00e3o for &#8220;ua_acesso_liberado_123&#8221; retorne p\u00e1gina de bloqueio.<\/p>\n<p>&nbsp;<\/p>\n<h2>Exemplo 2<\/h2>\n<p>O segundo exemplo de regra \u00e9 para uma lista de clientes. Para isso iremos pressupor que:<\/p>\n<ul>\n<li>O site \u00e9 &#8220;https:\/\/www.tonev.pro.br&#8221;;<\/li>\n<li>As chamadas de API que se deseja restringir s\u00e3o acess\u00edvel atrav\u00e9s da URI &#8220;\/api\/uploads\/*&#8221;;<\/li>\n<li>Existe apenas dois clientes que vai consumir a API<\/li>\n<\/ul>\n<p>Como \u00e9 um pouco mais complicado \u00e9 necess\u00e1rio definir a regra manualmente, pois nesses casos o edito visual n\u00e3o consegue montar a l\u00f3gica da sequencia de avalia\u00e7\u00e3o corretamente.<\/p>\n<p>Portanto a regra deve ser como no exemplo abaixo:<\/p>\n<p><a href=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-22-06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-577 aligncenter\" src=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-22-06-275x300.png\" alt=\"Cria\u00e7\u00e3o de regra via o expression builder - simples\" width=\"275\" height=\"300\" srcset=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-22-06-275x300.png 275w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-22-06-700x763.png 700w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-22-06-768x837.png 768w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-22-06.png 785w\" sizes=\"auto, (max-width: 275px) 100vw, 275px\" \/><\/a><\/p>\n<pre>(\r\n(http.request.full_uri eq \"https:\/\/www.tonev.pro.br\/api\/uploads\/*\")\r\nand\r\n(\r\n(http.user_agent ne \"ua_acesso_liberado_123\")\r\nor\r\n(http.user_agent ne \"ua_acesso_liberado_456\")\r\n)\r\n)<\/pre>\n<p>Elementos usados:<\/p>\n<ul>\n<li>Condi\u00e7\u00e3o 1:\n<ul>\n<li>Campo: &#8220;URI Full&#8221;<\/li>\n<li>Operador: &#8220;equals&#8221;<\/li>\n<li>Valor: a URI completa da API &#8211; &#8220;https:\/\/www.tonev.pro.br\/api\/uploads\/*&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Condi\u00e7\u00e3o de avalia\u00e7\u00e3o: <strong>E<\/strong><\/li>\n<\/ul>\n<ul>\n<li>Condi\u00e7\u00e3o 2 &#8211; composta:\n<ul>\n<li>Condi\u00e7\u00e3o 1:\n<ul>\n<li>Campo: &#8220;User Agent&#8221;<\/li>\n<li>Operador: &#8220;does not equal&#8221;<\/li>\n<li>Valor: &#8220;ua_acesso_liberado_123&#8221;<\/li>\n<\/ul>\n<\/li>\n<li>Condi\u00e7\u00e3o de avalia\u00e7\u00e3o: <strong>OU<\/strong><\/li>\n<li>Condi\u00e7\u00e3o 2:\n<ul>\n<li>Campo: &#8220;User Agent&#8221;<\/li>\n<li>Operador: &#8220;does not equal&#8221;<\/li>\n<li>Valor: &#8220;ua_acesso_liberado_456&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>A\u00e7\u00e3o: Block<\/li>\n<\/ul>\n<ul>\n<li>Sequencia: Primeira<\/li>\n<\/ul>\n<p>O resultado: ( sempre que for feita uma requisi\u00e7\u00e3o para qualquer coisa abaixo de &#8220;https:\/\/www.tonev.pro.br\/api\/uploads\/&#8221; ) <strong>E<\/strong> ( o cabe\u00e7alho &#8220;User Agent&#8221; da solicita\u00e7\u00e3o HTTP n\u00e3o for &#8220;ua_acesso_liberado_123&#8221; <strong>OU<\/strong> &#8220;ua_acesso_liberado_123&#8221; ) retorne p\u00e1gina de bloqueio.<\/p>\n<p>&nbsp;<\/p>\n<h2>Exemplo 3<\/h2>\n<p>O \u00faltimo exemplo de regra \u00e9 para uma lista de URIs e clientes. Para isso iremos pressupor que:<\/p>\n<ul>\n<li>Os sites s\u00e3o &#8220;https:\/\/www.tonev.pro.br&#8221; e &#8220;https:\/\/novoapi.tonev.pro.br&#8221;;<\/li>\n<li>As chamadas de API que se deseja restringir s\u00e3o acess\u00edvel atrav\u00e9s das URIs &#8220;\/api\/uploads\/*&#8221; e &#8220;\/api2\/uploads\/*&#8221;, respectivamente;<\/li>\n<li>A URI \u201chttps:\/\/www.tonev.pro.br\/api\/uploads\/*\u201d ser\u00e1 acess\u00edvel somente para os agentes &#8220;ua_acesso_liberado_123&#8221; e &#8220;ua_acesso_liberado_456&#8221;<\/li>\n<li>A URI \u201chttps:\/\/novoapi.tonev.pro.br\/api2\/uploads\/*\u201d ser\u00e1 acess\u00edvel somente para o agente &#8220;ua_acesso_liberado_789&#8221;.<\/li>\n<\/ul>\n<p>Como \u00e9 um caso mais complexo \u00e9 necess\u00e1rio definir a regra manualmente, pois nesses casos o edito visual n\u00e3o consegue montar a l\u00f3gica da sequencia de avalia\u00e7\u00e3o corretamente.<\/p>\n<p>Portanto a regra deve ser como no exemplo abaixo:<\/p>\n<p><a href=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-21-29.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-578 aligncenter\" src=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-21-29-275x300.png\" alt=\"Cria\u00e7\u00e3o de regra via o expression builder - composto\" width=\"275\" height=\"300\" srcset=\"https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-21-29-275x300.png 275w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-21-29-700x763.png 700w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-21-29-768x837.png 768w, https:\/\/www.tonev.pro.br\/wp-content\/uploads\/2026\/04\/cf_expresisonbuilder_01-2026-04-09-15-21-29.png 785w\" sizes=\"auto, (max-width: 275px) 100vw, 275px\" \/><\/a><\/p>\n<pre>(\r\n(http.request.full_uri eq \u201chttps:\/\/www.tonev.pro.br\/api\/uploads\/*\u201d)\r\nand\r\n(\r\n(http.user_agent ne \u201cua_acesso_liberado_123\u201d)\r\nor\r\n(http.user_agent ne \u201cua_acesso_liberado_456\u201d)\r\n)\r\n)\r\n\r\nor\r\n\r\n(\r\n(http.request.full_uri eq \u201chttps:\/\/novoapi.tonev.pro.br\/api2\/uploads\/*\u201d)\r\nand\r\n(\r\n(http.user_agent ne \u201cua_acesso_liberado_789\u201d)\r\n)<\/pre>\n<ul>\n<li>Condi\u00e7\u00e3o 1 &#8211; composta:\n<ul>\n<li>Condi\u00e7\u00e3o 1:\n<ul>\n<li>Campo: &#8220;URI Full&#8221;<\/li>\n<li>Operador: &#8220;equals&#8221;<\/li>\n<li>Valor: a URI completa da API &#8211; &#8220;https:\/\/www.tonev.pro.br\/api\/uploads\/*&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Condi\u00e7\u00e3o de avalia\u00e7\u00e3o: <strong>E<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Condi\u00e7\u00e3o 2 &#8211; composta:\n<ul>\n<li>Condi\u00e7\u00e3o 1:\n<ul>\n<li>Campo: &#8220;User Agent&#8221;<\/li>\n<li>Operador: &#8220;does not equal&#8221;<\/li>\n<li>Valor: &#8220;ua_acesso_liberado_123&#8221;<\/li>\n<\/ul>\n<\/li>\n<li>Condi\u00e7\u00e3o de avalia\u00e7\u00e3o: <strong>OU<\/strong><\/li>\n<li>Condi\u00e7\u00e3o 2:\n<ul>\n<li>Campo: &#8220;User Agent&#8221;<\/li>\n<li>Operador: &#8220;does not equal&#8221;<\/li>\n<li>Valor: &#8220;ua_acesso_liberado_456&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Condi\u00e7\u00e3o de avalia\u00e7\u00e3o: <strong>OU<\/strong><\/li>\n<li>Condi\u00e7\u00e3o 2 &#8211; composta:\n<ul>\n<li>Condi\u00e7\u00e3o 1:\n<ul>\n<li>Campo: &#8220;URI Full&#8221;<\/li>\n<li>Operador: &#8220;equals&#8221;<\/li>\n<li>Valor: a URI completa da API &#8211; &#8220;https:\/\/novoapi.tonev.pro.br\/api2\/uploads\/*&#8221;<\/li>\n<\/ul>\n<\/li>\n<li>Condi\u00e7\u00e3o de avalia\u00e7\u00e3o: <strong>E<\/strong><\/li>\n<li>Condi\u00e7\u00e3o 2:\n<ul>\n<li>Campo: &#8220;User Agent&#8221;<\/li>\n<li>Operador: &#8220;does not equal&#8221;<\/li>\n<li>Valor: &#8220;ua_acesso_liberado_789&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>A\u00e7\u00e3o: Block<\/li>\n<\/ul>\n<ul>\n<li>Sequencia: Primeira<\/li>\n<\/ul>\n<p>O resultado: ( ( sempre que for feita uma requisi\u00e7\u00e3o para qualquer coisa abaixo de &#8220;https:\/\/www.tonev.pro.br\/api\/uploads\/&#8221; ) <strong>E<\/strong> ( o cabe\u00e7alho &#8220;User Agent&#8221; da solicita\u00e7\u00e3o HTTP n\u00e3o for &#8220;ua_acesso_liberado_123&#8221; <strong>OU<\/strong> &#8220;ua_acesso_liberado_123&#8221; ) ) <strong>OU<\/strong> (\u00a0 sempre que for feita uma requisi\u00e7\u00e3o para qualquer coisa abaixo de &#8220;https:\/\/novoapi.tonev.pro.br\/api2\/uploads\/&#8221; ) <strong>E<\/strong> ( o cabe\u00e7alho &#8220;User Agent&#8221; da solicita\u00e7\u00e3o HTTP n\u00e3o for &#8220;ua_acesso_liberado_789&#8221; ) retorne p\u00e1gina de bloqueio.<\/p>\n<p>Os valores do &#8220;User Agent&#8221; devem ser grandes e aleat\u00f3rios o suficiente para garantir a seguran\u00e7a do acesso, lembrando que, como uma senha, pode ocorrer quebra do acesso por for\u00e7a bruta se o atacante souber o formato e tamanho da string usada.<\/p>\n<p>Para edi\u00e7\u00e3o manual das regras recomendo usar o Notepad++ que est\u00e1 dispon\u00edvel em <a href=\"https:\/\/notepad-plus-plus.org\/downloads\/\">https:\/\/notepad-plus-plus.org\/downloads\/<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se possui um site publicado, prov\u00ea algum servi\u00e7o e n\u00e3o quer que qualquer um possa acessar uma determinada API pode usar o Cloudflare para liberar somente os clientes ( consumidores da API ) autorizados. A&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,27,23,28],"tags":[30,32,33,25,31],"class_list":["post-579","post","type-post","status-publish","format-standard","hentry","category-cdn","category-cloudflare","category-seguranca","category-waf","tag-cdn","tag-cloudflare","tag-security","tag-seguranca","tag-waf"],"_links":{"self":[{"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/posts\/579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=579"}],"version-history":[{"count":22,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/posts\/579\/revisions"}],"predecessor-version":[{"id":601,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/posts\/579\/revisions\/601"}],"wp:attachment":[{"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}