--- title: Seguro slug: Glossary/safe tags: - Glossary - Glossário - Mecânicas da Web - WebMechanics translation_of: Glossary/safe original_slug: Glossario/seguro --- <p>Um método HTTP é <strong>seguro</strong> se ele não altera o estado do servidor. Em outras palavras, um método é seguro se ele leva a uma operação de somente leitura. Diversos métodos de HTTP são seguros: {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}}, ou {{HTTPMethod("OPTIONS")}}. Todos os métodos seguros também são {{glossary("idempotente")}}s, mas nem todos os métodos idempotentes são seguros. Por exemplo, {{HTTPMethod("PUT")}} e {{HTTPMethod("DELETE")}} são ambos idempotentes, entretanto são inseguros.</p> <p>Mesmo se métodos seguros possuem a semântica de somente leitura, servidores podem alterar o seu estado (e.g., eles podem manter <em>log</em> ou estatísticas). O que é importante aqui, é de que chamando um método seguro, o cliente não requer que o servidor mude seu estado, e portanto não gerará carga desnecessária ao servidor. Navegadores podem chamar métodos seguros sem medo de causarem nenhum dano ao servidor: isso permite a eles a possibilidade de fazer atividades como pré-carregamento sem nenhum risco. <em>Web crawlers</em> também usam métodos seguros.</p> <p>Métodos seguros não servem somente para buscar arquivos estáticos, o servidor pode gerar uma resposta para um método seguro no voô, enquanto o <em>script</em> gerador garantir segurança: ele não deve ativar gatilhos externos, como ativar um pedido de compras em um site.</p> <p>É responsabilidade da aplicação no servidor implementar a semântica segura corretamente, o servidor <em>web</em> em si, sendo Apache, nginx ou IIS, não pode forçar ela por si só. Em particular, a aplicação não deve permitir que requisições {{HTTPMethod("GET")}} alterem seu estado.</p> <p>Uma chamada a um método seguro, não alterando o estado do servidor:</p> <pre>GET /pageX.html HTTP/1.1 </pre> <p>Uma chamada a um método não seguro, que pode alterar o estado do servidor:</p> <pre>POST /pageX.html HTTP/1.1 </pre> <p>Uma chamada a um método idempotente, mas não seguro:</p> <pre>DELETE /idX/delete HTTP/1.1</pre> <h2 id="Aprenda_mais">Aprenda mais</h2> <h3 id="Conhecimento_geral">Conhecimento geral</h3> <ul> <li>Definição de <a href="https://tools.ietf.org/html/rfc7231#section-4.2.1">seguro</a> na especificação HTTP.</li> </ul> <h3 id="Conhecimento_técnico">Conhecimento técnico</h3> <ul> <li>Descrição de métodos seguros comuns: {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}}, {{HTTPMethod("OPTIONS")}}</li> <li>Descrição de métodos inseguros comuns: {{HTTPMethod("PUT")}}, {{HTTPMethod("DELETE")}}, {{HTTPMethod("POST")}}</li> </ul>