{"id":84184,"date":"2020-06-05T19:42:31","date_gmt":"2020-06-05T17:42:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god"},"modified":"2020-06-05T19:42:31","modified_gmt":"2020-06-05T17:42:31","slug":"smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god","title":{"rendered":"Erros fatais de seguran\u00e7a do site: o que aprendemos a partir das estat\u00edsticas do scanner de vulnerabilidades ao longo do ano.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>H\u00e1 cerca de um ano, lan\u00e7amos na DataLine <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dtln.ru\/uslugi\/security\/securityscan\">servi\u00e7o<\/a><\/noindex> um servi\u00e7o para busca e an\u00e1lise de vulnerabilidades em aplica\u00e7\u00f5es de TI. A base do servi\u00e7o \u00e9 a solu\u00e7\u00e3o em nuvem Qualys, sobre a qual <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dataline\/blog\/457768\/\">j\u00e1 falamos<\/a><\/noindex>. Em um ano de opera\u00e7\u00e3o com a solu\u00e7\u00e3o, realizamos 291 varreduras para diferentes sites e acumulamos estat\u00edsticas sobre as vulnerabilidades mais comuns em aplica\u00e7\u00f5es web.\u00a0<\/p>\n<p>No artigo abaixo, vou mostrar quais brechas de seguran\u00e7a dos sites est\u00e3o escondidas por tr\u00e1s de diferentes n\u00edveis de criticidade. Vamos ver quais vulnerabilidades o scanner encontrou com mais frequ\u00eancia, por que elas podem surgir e como se proteger.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Erros fatais de seguran\u00e7a do site: o que aprendemos a partir das estat\u00edsticas do scanner de vulnerabilidades ao longo do ano.\" src=\"\/wp-content\/uploads\/2020\/06\/3205347a3bcb19c9fd66bbb890f5096d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nA Qualys classifica todas as vulnerabilidades das aplica\u00e7\u00f5es web em tr\u00eas n\u00edveis de criticidade: baixo, m\u00e9dio e alto. Olhando a distribui\u00e7\u00e3o por 'gravidade', parece que n\u00e3o \u00e9 t\u00e3o ruim. H\u00e1 poucas vulnerabilidades de alto n\u00edvel de criticidade, a maioria \u00e9 n\u00e3o cr\u00edtica:\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Erros fatais de seguran\u00e7a do site: o que aprendemos a partir das estat\u00edsticas do scanner de vulnerabilidades ao longo do ano.\" src=\"\/wp-content\/uploads\/2020\/06\/59ec50a522270db288fb01fb8a41c7c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMas n\u00e3o cr\u00edticas n\u00e3o significam inofensivas. Elas tamb\u00e9m podem causar danos s\u00e9rios.\u00a0<\/p>\n<h2>As principais vulnerabilidades 'n\u00e3o cr\u00edticas'<\/h2>\n<p><\/p>\n<ol>\n<li><b>Vulnerabilidades relacionadas a conte\u00fado misto.<\/b>\n<p>O padr\u00e3o de seguran\u00e7a para sites \u00e9 a transmiss\u00e3o de dados entre o cliente e o servidor via protocolo HTTPS, que suporta criptografia e protege a informa\u00e7\u00e3o de intercepta\u00e7\u00e3o.\u00a0<\/p>\n<p>Alguns sites usam <i>conte\u00fado misto<\/i>: transmitindo parte dos dados pelo protocolo n\u00e3o seguro HTTP. Frequentemente, isso \u00e9 usado para transmitir <i>conte\u00fado passivo<\/i> \u2013 informa\u00e7\u00f5es que afetam apenas a exibi\u00e7\u00e3o do site: imagens, estilos CSS. Mas \u00e0s vezes tamb\u00e9m \u00e9 transmitido <i>conte\u00fado ativo<\/i>: scripts que controlam o comportamento do site. Nesse caso, com o uso de software especial, \u00e9 poss\u00edvel analisar as informa\u00e7\u00f5es recebidas do servidor com conte\u00fado ativo, modificar suas respostas em tempo real e fazer a m\u00e1quina funcionar de maneira diferente do que seus criadores pretendiam.\u00a0<\/p>\n<p>Os navegadores de vers\u00f5es mais recentes alertam os usu\u00e1rios de que sites com conte\u00fado misto n\u00e3o s\u00e3o seguros e bloqueiam o conte\u00fado. Os desenvolvedores de sites tamb\u00e9m recebem avisos do navegador no console. Por exemplo, assim \u00e9 como isso aparece em <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/ru\/docs\/Security\/MixedContent\">Firefox<\/a><\/noindex>:\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Erros fatais de seguran\u00e7a do site: o que aprendemos a partir das estat\u00edsticas do scanner de vulnerabilidades ao longo do ano.\" src=\"\/wp-content\/uploads\/2020\/06\/e075e43f63ee6a41d41949d63da27006.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Qu\u00e3o perigoso \u00e9<\/b>: Criminosos usam o protocolo n\u00e3o seguro para interceptar informa\u00e7\u00f5es do usu\u00e1rio, substituir scripts e enviar solicita\u00e7\u00f5es ao site em seu nome. Mesmo que o visitante do site n\u00e3o tenha inserido dados, isso n\u00e3o o protege de <i>phishing <\/i>\u2013 a extra\u00e7\u00e3o de informa\u00e7\u00f5es confidenciais por m\u00e9todos fraudulentos. Por exemplo, um script pode redirecionar o usu\u00e1rio para um site inseguro que se disfar\u00e7a como um site familiar. Em alguns casos, o site malicioso pode parecer at\u00e9 melhor que o original, e o usu\u00e1rio pode acabar preenchendo um formul\u00e1rio e divulgando informa\u00e7\u00f5es confidenciais.\u00a0<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>: Mesmo que o administrador do site tenha instalado e configurado o certificado SSL\/TLS, uma vulnerabilidade pode surgir devido a fatores humanos. Por exemplo, se em algumas p\u00e1ginas foi utilizado um link absoluto com http, em vez de um relativo, e, al\u00e9m disso, redirecionamentos de http para https n\u00e3o foram configurados.\u00a0<\/p>\n<p>Detectar conte\u00fado misto em um site pode ser feito atrav\u00e9s do navegador: verificando o c\u00f3digo-fonte da p\u00e1gina, lendo as notifica\u00e7\u00f5es no console do desenvolvedor. No entanto, o desenvolvedor ter\u00e1 um trabalho longo e tedioso para vasculhar o c\u00f3digo. O processo pode ser acelerado com ferramentas de an\u00e1lise automatizadas, como: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jitbit.com\/sslcheck\/\">SSL Check<\/a><\/noindex>, o software livre Lighthouse ou o software pago Screaming Frog SEO Spider.<\/p>\n<p>Al\u00e9m disso, a vulnerabilidade pode ocorrer devido a problemas com c\u00f3digo legado \u2013 c\u00f3digo que foi herdado. Por exemplo, se parte das p\u00e1ginas \u00e9 gerada por um antigo modelo que n\u00e3o considera a transi\u00e7\u00e3o dos sites para https.\u00a0\u00a0\u00a0\u00a0\n<\/li>\n<li><b>Cookies sem as flags \"HTTPOnly\" e \"secure\".<\/b>\n<p>Atributo \"HTTPOnly\" protege os arquivos de cookies de serem processados por scripts que invasores usam para roubar dados dos usu\u00e1rios. A flag \"secure\" n\u00e3o permite a transmiss\u00e3o de cookies em texto claro. A troca de dados ser\u00e1 permitida apenas se os cookies forem enviados usando o protocolo seguro HTTPS.\u00a0<\/p>\n<p>Ambos os atributos s\u00e3o especificados nas propriedades do cookie:<\/p>\n<pre><code class=\"plaintext\">Set-Cookie: Secure; HttpOnly<\/code><\/pre>\n<p>\n<b>Qu\u00e3o perigoso \u00e9<\/b>: Se o desenvolvedor do site n\u00e3o especificou esses atributos, um invasor pode interceptar as informa\u00e7\u00f5es do usu\u00e1rio nos cookies e explor\u00e1-las. Se os cookies forem utilizados para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o, ele poder\u00e1 sequestrar a sess\u00e3o do usu\u00e1rio e realizar a\u00e7\u00f5es no site em seu nome.\u00a0<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>: Normalmente, em frameworks populares, esses atributos s\u00e3o configurados automaticamente. Mas ainda assim, verifique a configura\u00e7\u00e3o do servidor web e defina a flag: Set-Cookie HttpOnly; Secure. <\/p>\n<p>Nesse caso, o atributo \"HTTPOnly\" tornar\u00e1 os cookies invis\u00edveis tamb\u00e9m para o seu pr\u00f3prio JavaScript.\u00a0\u00a0\n<\/li>\n<li><b>Vulnerabilidades Baseadas em Caminho.<\/b>\n<p>O scanner informa sobre essa vulnerabilidade quando encontra um arquivo ou diret\u00f3rio do site que esteja publicamente acess\u00edvel e com potencial para conter informa\u00e7\u00f5es confidenciais. Por exemplo, ele pode descobrir arquivos separados de configura\u00e7\u00e3o do sistema ou acesso total ao sistema de arquivos. Essa situa\u00e7\u00e3o pode ocorrer se as permiss\u00f5es de acesso no site estiverem configuradas incorretamente.<\/p>\n<p><b>Qu\u00e3o perigoso \u00e9<\/b>Se o sistema de arquivos estiver 'exposto', um invasor pode acessar a interface do sistema operacional e tentar encontrar pastas com senhas, se elas forem armazenadas em formato aberto (n\u00e3o fa\u00e7a isso!). Ou pode roubar hashes de senhas e tentar adivinhar a senha, al\u00e9m de tentar elevar suas permiss\u00f5es no sistema e avan\u00e7ar na infraestrutura.\u00a0\u00a0<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>N\u00e3o se esque\u00e7a das permiss\u00f5es de acesso e configure a plataforma, o servidor web, o aplicativo web, para que n\u00e3o seja poss\u00edvel 'sair' do diret\u00f3rio web.\n<\/li>\n<li><b>Formul\u00e1rios para inser\u00e7\u00e3o de dados confidenciais com a fun\u00e7\u00e3o de preenchimento autom\u00e1tico ativada.<\/b>\n<p>Se um usu\u00e1rio preenche frequentemente formul\u00e1rios em sites, seu navegador salva essas informa\u00e7\u00f5es por meio da fun\u00e7\u00e3o de preenchimento autom\u00e1tico.\u00a0<\/p>\n<p>Formul\u00e1rios em sites podem incluir campos com informa\u00e7\u00f5es confidenciais, como senhas ou n\u00fameros de cart\u00e3o de cr\u00e9dito. Para esses campos, vale a pena desativar a fun\u00e7\u00e3o de preenchimento autom\u00e1tico no pr\u00f3prio site.\u00a0<\/p>\n<p><b>Qu\u00e3o perigoso \u00e9<\/b>Se o navegador do usu\u00e1rio salvar informa\u00e7\u00f5es confidenciais, um invasor pode intercept\u00e1-las mais tarde, por exemplo, por meio de phishing. Essencialmente, o desenvolvedor web que esquece desse detalhe exp\u00f5e seus usu\u00e1rios.\u00a0<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>Nesse caso, temos um conflito cl\u00e1ssico: conveni\u00eancia vs seguran\u00e7a. Se o desenvolvedor web estiver pensando no conforto do usu\u00e1rio, ele pode optar conscientemente pelo preenchimento autom\u00e1tico. Por exemplo, se for importante seguir... <noindex><a rel=\"nofollow\" href=\"https:\/\/www.w3.org\/TR\/WCAG21\/\">Diretrizes de Acessibilidade de Conte\u00fado Web<\/a><\/noindex> \u2013 recomenda\u00e7\u00f5es de acessibilidade de conte\u00fado para usu\u00e1rios com defici\u00eancias.\u00a0<\/p>\n<p>Para a maioria dos navegadores, desativar o preenchimento autom\u00e1tico pode ser feito atrav\u00e9s do atributo autocomplete=\"off\", por exemplo:<\/p>\n<pre><code class=\"plaintext\">\u00a0&lt;body&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;\/pt\/form\/submit\/&quot; method=&quot;get&quot; autocomplete=&quot;off&quot; data-trp-original-action=&quot;\/form\/submit&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;text&quot; placeholder=&quot;Primeiro Nome&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;text&quot; id=&quot;lname&quot; placeholder=&quot;Sobrenome&quot; autocomplete=&quot;on&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;number&quot; placeholder=&quot;N&uacute;mero do cart&atilde;o de cr&eacute;dito&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;submit&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;hidden&quot; name=&quot;trp-form-language&quot; value=&quot;pt&quot;\/&gt;&lt;\/form&gt;\n&nbsp;&nbsp;&lt;\/body&gt;<\/code><\/pre>\n<p>\nMas para o Chrome isso n\u00e3o funciona. Isso \u00e9 contornado com JavaScript; uma varia\u00e7\u00e3o da solu\u00e7\u00e3o pode ser encontrada... <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/a\/55045439\">aqui<\/a><\/noindex>.\u00a0\n<\/li>\n<li><b>No c\u00f3digo do site, o cabe\u00e7alho X-Frame-Options n\u00e3o est\u00e1 definido.\u00a0<\/b>\n<p>Este cabe\u00e7alho afeta as tags frame, iframe, embed ou object. Com ele, \u00e9 poss\u00edvel proibir totalmente a incorpora\u00e7\u00e3o do seu site dentro de um frame. Para isso, \u00e9 necess\u00e1rio definir o valor X-Frame-Options: deny. Ou pode-se especificar X-Frame-Options: sameorigin, ent\u00e3o a incorpora\u00e7\u00e3o em iframe estar\u00e1 dispon\u00edvel apenas no seu pr\u00f3prio dom\u00ednio.<\/p>\n<p><b>Qu\u00e3o perigoso \u00e9<\/b>: A aus\u00eancia desse cabe\u00e7alho pode ser usada em sites maliciosos para <i>clickjacking<\/i>. Para esse tipo de ataque, o criminoso cria um frame transparente sobre os bot\u00f5es e engana o usu\u00e1rio. Por exemplo: golpistas inserem em um frame na p\u00e1gina do site p\u00e1ginas de redes sociais. O usu\u00e1rio pensa que est\u00e1 clicando em um bot\u00e3o neste site. Em vez disso, o clique \u00e9 interceptado e envia a solicita\u00e7\u00e3o do usu\u00e1rio para a rede social, onde h\u00e1 uma sess\u00e3o ativa. Assim, os criminosos espalham spam em nome do usu\u00e1rio ou inflacionam seguidores e curtidas.\u00a0<\/p>\n<p>Se essa possibilidade n\u00e3o for proibida, o criminoso pode colocar o bot\u00e3o do seu aplicativo em um site malicioso. Ele pode estar interessado no seu programa de afiliados ou em seus usu\u00e1rios.\u00a0\u00a0<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>: Uma vulnerabilidade pode surgir se X-Frame-Options for definido com um valor conflitante no servidor web ou no balanceador de carga. Nesse caso, o servidor e o balanceador sobrescrever\u00e3o simplesmente o cabe\u00e7alho, pois t\u00eam prioridade mais alta em rela\u00e7\u00e3o ao c\u00f3digo da parte de backend.\u00a0\u00a0<\/p>\n<p>Os valores deny e sameorigin do cabe\u00e7alho X-Frame-Options podem interferir no funcionamento do webvisor do Yandex. Para permitir o uso de iframe para o webvisor, \u00e9 necess\u00e1rio escrever uma regra separada nas configura\u00e7\u00f5es. Por exemplo, para nginx, pode-se configurar assim:<\/p>\n<pre><code class=\"plaintext\">http{\n...\n map $http_referer $frame_options {\n \"~webvisor.com\" \"ALLOW-FROM http:\/\/webvisor.com\";\n default \"SAMEORIGIN\";\n }\n add_header X-Frame-Options $frame_options;\n...\n}\n\n<\/code><\/pre>\n<p>\n<\/li>\n<li><b>Vulnerabilidades PRSSI (Importa\u00e7\u00e3o de estilos relativos ao caminho).\u00a0\u00a0<\/b>\n<p>Esta \u00e9 uma vulnerabilidade nos estilos do site. Ela ocorre quando links relativos para arquivos de estilo s\u00e3o usados, como href=\"\/somefolder\/styles.css\/\". Um invasor pode se aproveitar disso se encontrar uma maneira de redirecionar o usu\u00e1rio para uma p\u00e1gina maliciosa. A p\u00e1gina substituir\u00e1 o link relativo em sua URL e simular\u00e1 uma chamada aos estilos. Isso resultar\u00e1 em uma solicita\u00e7\u00e3o como badsite.ru\/...\/somefolder\/styles.css\/, que, disfar\u00e7ada de estilo, pode realizar a\u00e7\u00f5es maliciosas.\u00a0<\/p>\n<p><b>Qu\u00e3o perigoso \u00e9<\/b>: Um golpista pode explorar essa vulnerabilidade se encontrar outra falha de seguran\u00e7a. Como resultado, \u00e9 poss\u00edvel roubar dados do usu\u00e1rio a partir de cookies ou tokens.<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>: Defina o cabe\u00e7alho X-Content-Type-Options: nosniff. Nesse caso, o navegador verificar\u00e1 o tipo de conte\u00fado para estilos. Se o tipo diferir de text\/css, o navegador bloquear\u00e1 a solicita\u00e7\u00e3o.\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Vulnerabilidades cr\u00edticas<\/h2>\n<p><\/p>\n<ol>\n<li><b>A p\u00e1gina com campo para senha \u00e9 transmitida do servidor atrav\u00e9s de um canal n\u00e3o seguro (HTML form containing password field(s) is served over HTTP).<\/b>\n<p>A resposta do servidor por um canal n\u00e3o criptografado \u00e9 vulner\u00e1vel a ataques do tipo \u2018homem no meio\u2019. Um invasor pode interceptar o tr\u00e1fego e se intrometer entre o cliente e o servidor, quando a p\u00e1gina vai do servidor para o cliente.\u00a0<\/p>\n<p><b>Qu\u00e3o perigoso \u00e9<\/b>: O golpista pode substituir a p\u00e1gina e enviar ao usu\u00e1rio um formul\u00e1rio para dados confidenciais, que ser\u00e3o enviados ao servidor do invasor.\u00a0<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>: Alguns sites, em vez de enviar uma senha, enviam um c\u00f3digo de uso \u00fanico por e-mail\/telefone. Nesse caso, a vulnerabilidade n\u00e3o \u00e9 t\u00e3o cr\u00edtica, mas o mecanismo complicar\u00e1 a vida dos usu\u00e1rios.\n<\/li>\n<li><b>Envio de formul\u00e1rio com login e senha por canal n\u00e3o seguro (Login Form Is Not Submitted Via HTTPS).<\/b>\n<p>Nesse caso, o usu\u00e1rio envia um formul\u00e1rio com login e senha ao servidor por um canal n\u00e3o criptografado.<\/p>\n<p><b>Qu\u00e3o perigoso \u00e9<\/b>: Ao contr\u00e1rio do caso anterior, esta j\u00e1 \u00e9 uma vulnerabilidade cr\u00edtica. Interceptar dados confidenciais \u00e9 mais f\u00e1cil, pois n\u00e3o \u00e9 necess\u00e1rio escrever c\u00f3digo para isso.\u00a0\n<\/li>\n<li><b>Uso de bibliotecas JavaScript com vulnerabilidades conhecidas.<\/b>\n<p>Durante a varredura, a biblioteca mais utilizada se tornou o jQuery, com um amplo conjunto de vers\u00f5es. Em cada uma das vers\u00f5es, h\u00e1 pelo menos uma, se n\u00e3o mais, vulnerabilidades conhecidas. O impacto pode ser bastante vari\u00e1vel \u2013 depende da natureza da vulnerabilidade.<\/p>\n<p><b>Qu\u00e3o perigoso \u00e9<\/b>: Para vulnerabilidades conhecidas, existem exploits, como estes:<\/p>\n<p><img decoding=\"async\" alt=\"Erros fatais de seguran\u00e7a do site: o que aprendemos a partir das estat\u00edsticas do scanner de vulnerabilidades ao longo do ano.\" src=\"\/wp-content\/uploads\/2020\/06\/4e9ebec0ae735aafd28f5e6b1a806406.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>O que o desenvolvedor web deve lembrar<\/b>: Volte regularmente ao ciclo: pesquisa de vulnerabilidades conhecidas \u2013 corre\u00e7\u00e3o \u2013 verifica\u00e7\u00e3o. Se voc\u00ea estiver usando bibliotecas obsoletas de forma consciente, por exemplo, para suporte a navegadores antigos ou para economizar or\u00e7amento, procure maneiras de corrigir a vulnerabilidade conhecida.\u00a0\n<\/li>\n<li><b>Scripts entre sites (XSS).\u00a0<\/b><br \/>\nCross-Site Scripting (XSS), ou scripts entre sites, s\u00e3o ataques a aplicativos web que resultam na inser\u00e7\u00e3o de c\u00f3digo malicioso no banco de dados. Se a Qualys detectar tal vulnerabilidade, significa que um potencial invasor pode ter injetado ou j\u00e1 injetou seu script js no c\u00f3digo do site para realizar a\u00e7\u00f5es maliciosas.<\/p>\n<p><b>XSS armazenados (Stored XSS)<\/b> s\u00e3o mais perigosos, pois o script \u00e9 injetado no servidor e executado sempre que a p\u00e1gina atacada \u00e9 aberta no navegador.<\/p>\n<p><b>XSS refletidos (Reflected XSS)<\/b> s\u00e3o mais simples de realizar, pois um script malicioso pode ser injetado na solicita\u00e7\u00e3o HTTP. O aplicativo receber\u00e1 a solicita\u00e7\u00e3o HTTP, n\u00e3o validar\u00e1 os dados, os empacotar\u00e1 e enviar\u00e1 imediatamente. Se o invasor interceptar o tr\u00e1fego e inserir um script do tipo <\/p>\n<pre><code class=\"plaintext\">\/*+algo+ruim+*\/ <\/code><\/pre>\n<p>\nent\u00e3o um pedido malicioso ser\u00e1 enviado em nome do cliente.<\/p>\n<p>Um exemplo claro de XSS: js sniffers que simulam p\u00e1ginas para inserir CVC, data de validade do cart\u00e3o, e assim por diante.\u00a0<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>: No cabe\u00e7alho Content-Security-Policy, use o atributo script-src para que o navegador do cliente carregue e execute apenas o c\u00f3digo de uma fonte confi\u00e1vel. Por exemplo, script-src 'self' ir\u00e1 permitir apenas scripts do nosso site.\u00a0<br \/>\nA melhor pr\u00e1tica \u00e9 usar c\u00f3digo Inline: permita apenas javascript inline com o valor unsafe-inline. Este valor permite o uso de js\/css inline, mas n\u00e3o impede o carregamento de arquivos js. Em combina\u00e7\u00e3o com script-src 'self', proibimos a execu\u00e7\u00e3o de scripts externos.<\/p>\n<p>Certifique-se de registrar tudo utilizando report-uri e fique atento \u00e0s tentativas de inje\u00e7\u00e3o no site.\n<\/li>\n<li><b>Inje\u00e7\u00f5es SQL.<\/b><br \/>\nA vulnerabilidade indica a possibilidade de injetar c\u00f3digo SQL no site, que se comunica diretamente com o banco de dados do site. A inje\u00e7\u00e3o SQL \u00e9 poss\u00edvel se os dados do usu\u00e1rio n\u00e3o forem escapados: n\u00e3o forem validados e forem usados diretamente na solicita\u00e7\u00e3o. Por exemplo, isso acontece se um formul\u00e1rio no site n\u00e3o verificar a conformidade da entrada com o tipo de dado.\u00a0<\/p>\n<p><b>Qu\u00e3o perigoso \u00e9<\/b>: Se um invasor inserir uma consulta SQL nesse formul\u00e1rio, ele pode derrubar o banco de dados ou revelar informa\u00e7\u00f5es confidenciais.\u00a0<\/p>\n<p><b>O que o desenvolvedor web deve lembrar<\/b>: N\u00e3o confie no que vem do navegador. \u00c9 necess\u00e1rio se proteger tanto do lado do cliente quanto do lado do servidor.\u00a0<\/p>\n<p>Do lado do cliente, escreva uma valida\u00e7\u00e3o dos campos usando JavaScript.\u00a0<\/p>\n<p>As fun\u00e7\u00f5es integradas em frameworks populares tamb\u00e9m ajudam a escapar de caracteres suspeitos no servidor. No servidor, \u00e9 recomend\u00e1vel usar consultas parametrizadas aos bancos de dados.<\/p>\n<p>Identifique onde exatamente ocorre a intera\u00e7\u00e3o com o banco de dados no aplicativo web.\u00a0<\/p>\n<p>A intera\u00e7\u00e3o ocorre quando obtemos alguma informa\u00e7\u00e3o: uma solicita\u00e7\u00e3o com id (mudan\u00e7a de id), cria\u00e7\u00e3o de um novo usu\u00e1rio, um novo coment\u00e1rio \u2014 novas entradas no banco. Aqui podem ocorrer inje\u00e7\u00f5es SQL. Mesmo se excluirmos uma entrada do banco, \u00e9 poss\u00edvel que haja uma inje\u00e7\u00e3o SQL.\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Recomenda\u00e7\u00f5es gerais<\/h2>\n<p>\n<b>N\u00e3o reinvente a roda \u2013 use frameworks testados<\/b>. Em geral, frameworks populares s\u00e3o mais seguros. Para .NET \u2013 ASP.NET MVC e ASP.NET Core, para Python \u2013 Django ou Flask, para Ruby \u2013 Ruby on Rails, para PHP \u2013 Symfony, Laravel, Yii, para JavaScript \u2013 Node.JS - Express.js, para Java \u2013 Spring MVC.<\/p>\n<p><b>Fique atento \u00e0s atualiza\u00e7\u00f5es do fornecedor e atualize regularmente<\/b>. A vulnerabilidade ser\u00e1 descoberta, depois um exploit ser\u00e1 escrito, publicado publicamente e tudo se repetir\u00e1. Inscreva-se para atualiza\u00e7\u00f5es de vers\u00f5es est\u00e1veis do software do fornecedor.<\/p>\n<p><b>Verifique os direitos de acesso<\/b>. Do lado do servidor, trate sempre seu c\u00f3digo como se ele todo, da primeira at\u00e9 a \u00faltima letra, tivesse sido escrito pelo seu inimigo mais desprezado, que deseja quebrar seu site e comprometer a integridade dos seus dados. Especialmente porque \u00e0s vezes isso realmente acontece.<\/p>\n<p><b>Use clones, ambientes de teste, e s\u00f3 ent\u00e3o implemente na produ\u00e7\u00e3o<\/b>. Isso ajudar\u00e1, em primeiro lugar, a evitar erros e problemas no ambiente produtivo: o ambiente produtivo gera dinheiro, e o tempo de inatividade do ambiente produtivo \u00e9 cr\u00edtico. Ao adicionar, corrigir ou resolver qualquer problema, \u00e9 necess\u00e1rio trabalhar em um ambiente de teste, depois verificar a funcionalidade e as vulnerabilidades encontradas, e ent\u00e3o planejar as atividades no ambiente produtivo.\u00a0<\/p>\n<p><b>Proteja o aplicativo web utilizando <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dtln.ru\/uslugi\/security\/firewall\">Web Application Firewall<\/a><\/noindex> e integre com relat\u00f3rios do scanner de vulnerabilidades<\/b>. Por exemplo, na DataLine, os servi\u00e7os utilizados s\u00e3o Qualys e FortiWeb.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dataline\/blog\/505274\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0432 DataLine \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0418\u0422-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u2013 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Qualys, \u043f\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438. \u0417\u0430 \u0433\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u043b\u0438 291 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u0438 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c \u0432 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.\u00a0 \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0438\u0436\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":84185,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-84184","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0432 DataLine \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0418\u0422-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u043c\u0435\u0440\u0442\u043d\u044b\u0435 \u0433\u0440\u0435\u0445\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430: \u0447\u0442\u043e \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0437\u0430 \u0433\u043e\u0434 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0432 DataLine \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0418\u0422-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-05T17:42:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-05T17:42:31+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Pecados mortais de seguran\u00e7a do site: o que aprendemos com as estat\u00edsticas do scanner de vulnerabilidades ao longo do ano | ProHoster","description":"H\u00e1 cerca de um ano, lan\u00e7amos na DataLine um servi\u00e7o para busca e an\u00e1lise de vulnerabilidades em aplica\u00e7\u00f5es de TI.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u043c\u0435\u0440\u0442\u043d\u044b\u0435 \u0433\u0440\u0435\u0445\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430: \u0447\u0442\u043e \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0437\u0430 \u0433\u043e\u0434 | ProHoster","og:description":"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0432 DataLine \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0418\u0422-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-05T17:42:31+00:00","article:modified_time":"2020-06-05T17:42:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"84184","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:03:50","updated":"2022-09-30 12:56:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/84184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=84184"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/84184\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/84185"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=84184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=84184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=84184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}