{"id":170,"date":"2014-06-19T08:55:50","date_gmt":"2014-06-19T08:55:50","guid":{"rendered":"http:\/\/www.xlabs.com.br\/blog\/?p=170"},"modified":"2021-08-25T17:52:07","modified_gmt":"2021-08-25T20:52:07","slug":"sql-injection","status":"publish","type":"post","link":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/","title":{"rendered":"SQL Injection"},"content":{"rendered":"<p>SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados pelos usu\u00e1rios da aplica\u00e7\u00e3o, inserindo instru\u00e7\u00f5es a mais nas consultas ao banco de dados, devemos cuidar muito bem praticamente todos os campos de par\u00e2metros, tanto par\u00e2metros que utilizam GET ou POST, pois existe a possibilidade de estarmos trabalhando com pessoas capacitadas e que tenham conhecimento t\u00e9cnico, e um POST \u00e9 f\u00e1cil de ser interceptado e manipulado assim como o GET pode ser vis\u00edvel na URL no browser do usu\u00e1rio.<\/p>\n<p>Atrav\u00e9s de um GET, por exemplo, injetando um ap\u00f3strofo ( &#8216; ) ou aspas simples como preferirem, a aplica\u00e7\u00e3o pode retornar erros vindos do Banco de Dados, como exemplo temos a seguir algumas imagens de erros que possibilitam inje\u00e7\u00f5es de SQL, erros originados atrav\u00e9s de testes efetuados por nossa equipe.<\/p>\n<h4><strong>Erros em ORACLE<\/strong><\/h4>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Oracle_Invalid_Number.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-183\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Oracle_Invalid_Number-300x52.jpg\" alt=\"Oracle_Invalid_Number\" width=\"427\" height=\"74\" srcset=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Oracle_Invalid_Number-300x52.jpg 300w, https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Oracle_Invalid_Number.jpg 318w\" sizes=\"(max-width: 427px) 100vw, 427px\" \/><\/a><br \/>\n<em>Figura 1 \u2013 invalid number\u00a0inserindo um ap\u00f3strofo<\/em><\/p>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Oracle_String_not_terminated.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-172\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Oracle_String_not_terminated-300x49.jpg\" alt=\"Oracle_String_not_terminated\" width=\"435\" height=\"71\" srcset=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Oracle_String_not_terminated-300x49.jpg 300w, https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Oracle_String_not_terminated.jpg 332w\" sizes=\"(max-width: 435px) 100vw, 435px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>Figura 2 \u2013 quoted string not properly terminated<\/em><\/p>\n<h6><\/h6>\n<p>Nesta aplica\u00e7\u00e3o reparem que conforme o erro, o banco de dados retorna o tipo de problema que ele obteve ao fazer a consulta de certificado, Figura 1 ele nos alerta que o n\u00famero inserido \u00e9 inv\u00e1lido, na figura 2 o erro j\u00e1 muda, nos mostrando que nossa String de refer\u00eancia n\u00e3o foi devidamente encerrada, neste caso a inje\u00e7\u00e3o se deu atrav\u00e9s de par\u00e2metros GET, ou seja, na pr\u00f3pria URL do sistema, onde \u00e9 poss\u00edvel a inser\u00e7\u00e3o de comandos SQL.<\/p>\n<h4><strong>Erros em MySQL<\/strong><\/h4>\n<p>Exemplo de inser\u00e7\u00e3o do ap\u00f3strofo: productos.php?id=5&#8242;<\/p>\n<p>Erro retornado:<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Erro_apostrofe.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-173\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Erro_apostrofe-300x233.jpg\" alt=\"Erro_MySQL\" width=\"362\" height=\"281\" srcset=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Erro_apostrofe-300x233.jpg 300w, https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Erro_apostrofe.jpg 436w\" sizes=\"(max-width: 362px) 100vw, 362px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>Figura 3 \u2013 Erro retornado por MySQL<\/em><\/p>\n<h6><\/h6>\n<p>Como podemos perceber o erro retornado j\u00e1 nos fornece diretamente sem nenhum filtro como o SELECT \u00e9 formado, facilitando ainda mais a inser\u00e7\u00e3o de comandos SQL na URL do sistema Web afetado.<\/p>\n<h6><\/h6>\n<h4><strong>Erros em MSSQL<\/strong><\/h4>\n<p>Exemplo de inser\u00e7\u00e3o do ap\u00f3strofo: detalles.php?id=1\u2019<\/p>\n<p>Erro retornado:<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Erro_apostrofeMSSQL.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-174\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Erro_apostrofeMSSQL-300x38.jpg\" alt=\"Erro_apostrofeMSSQL\" width=\"592\" height=\"75\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>Figura 4 \u2013 Erro retornado pelo MSSQL<\/em><\/p>\n<h6><\/h6>\n<p>Conforme podemos visualizar na imagem, o erro retornado muitas vezes vem com informa\u00e7\u00f5es sens\u00edveis ao sistema web, n\u00e3o s\u00f3 informa\u00e7\u00f5es do banco de dados, facilitando o trabalho de um atacante, como podem perceber, nos foi retornado inclusive o diret\u00f3rio onde a aplica\u00e7\u00e3o e demais aplica\u00e7\u00f5es se encontram no servidor.<\/p>\n<h6><\/h6>\n<h4><strong>Evitando SQL Injection<\/strong><\/h4>\n<p>Como vimos anteriormente, a simples inser\u00e7\u00e3o de caracteres especiais nos par\u00e2metros de aplica\u00e7\u00f5es web, ocasionam erros retornados muitas vezes pelo pr\u00f3prio Banco de Dados, para evitarmos este tipo de problema, vamos citar exemplos em algumas linguagens.<\/p>\n<h6><\/h6>\n<h4><strong>Limpeza de vari\u00e1veis<\/strong><\/h4>\n<p>Ao receber os par\u00e2metros, n\u00e3o importa o jeito que o mesmo foi direcionado para a aplica\u00e7\u00e3o, em muitas linguagens existe a possibilidade de fazer um replace, como exemplo, temos a seguir replaces feitos em asp para a filtragem de poss\u00edveis entradas maliciosas nos par\u00e2metros:<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo1.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-175\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo1-300x243.jpg\" alt=\"Codigo1\" width=\"487\" height=\"395\" srcset=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo1-300x243.jpg 300w, https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo1.jpg 673w\" sizes=\"(max-width: 487px) 100vw, 487px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>C\u00f3digo 1 \u2013 Exemplo de fun\u00e7\u00e3o em asp para retirada de caracteres especiais<\/em><\/p>\n<h6><\/h6>\n<p>Existem diversas formas de limpar vari\u00e1veis, outra forma \u00e9 criar um Array com caracteres especiais, e fazer dentro de um la\u00e7o for, verificar se o caractere existe no conte\u00fado da vari\u00e1vel recebida, se existir, limpar usando um replace. Existem diversas linguagens que utilizam o recurso de Replace, exemplo acima, temos a ASP, por\u00e9m existe tamb\u00e9m em linguagens exemplo, Java, PHP, dentre outras linguagens utilizadas em programa\u00e7\u00e3o web.<\/p>\n<h6><\/h6>\n<h4><strong>Evitar concatena\u00e7\u00e3o de vari\u00e1veis em Querys<\/strong><\/h4>\n<p>Atualmente com a vinda de novas linguagens web, temos como evitar a concatena\u00e7\u00e3o de conte\u00fados vindos atrav\u00e9s de par\u00e2metros, dentro de Strings que formariam as Query\u2019s para consultas ao banco de dados, erro bem comum em programa\u00e7\u00e3o web, pois se trata da primeira possibilidade de fazer uma consulta \u201cbem sucedida\u201d ao banco de dados para uma pessoa iniciante em programa\u00e7\u00e3o web, exemplos que n\u00e3o devemos seguir:<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo2.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-176\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo2-300x28.jpg\" alt=\"Codigo2\" width=\"579\" height=\"54\" srcset=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo2-300x28.jpg 300w, https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo2.jpg 675w\" sizes=\"(max-width: 579px) 100vw, 579px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>C\u00f3digo 2 \u2013 Exemplo ao qual devemos evitar fazer<\/em><\/p>\n<h6><\/h6>\n<p style=\"text-align: left;\">Atualmente temos como evitar esse tipo de inser\u00e7\u00e3o ao banco de dados, assim evitando a possibilidade de ocorrer SQL Injection, conforme irei especificar a seguir em .NET utilizando Parameters,<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo3.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-177\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo3-300x58.jpg\" alt=\"Codigo3\" width=\"559\" height=\"108\" srcset=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo3-300x58.jpg 300w, https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo3.jpg 673w\" sizes=\"(max-width: 559px) 100vw, 559px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>C\u00f3digo 3 \u2013 Exemplo de Parameters em .NET<\/em><\/p>\n<h6><\/h6>\n<p>Assim como existe essa forma de evitar SQL Injection no framework do .NET existem outras formas de evitar concatena\u00e7\u00f5es em Querys, o Java tamb\u00e9m possui os PreparedStatements, exemplo,<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><code><br \/>\n<\/code><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo4.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-178\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo4-300x51.jpg\" alt=\"Codigo4\" width=\"559\" height=\"95\" srcset=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo4-300x51.jpg 300w, https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo4.jpg 674w\" sizes=\"(max-width: 559px) 100vw, 559px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>C\u00f3digo 4 \u2013 Exemplo de PreparedStatements em Java<\/em><\/p>\n<h6><\/h6>\n<p>Para inserirmos Strings em um PreparedStatement utilizamos a seguinte op\u00e7\u00e3o:<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo5.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-179\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo5-300x60.jpg\" alt=\"Codigo5\" width=\"560\" height=\"112\" \/><\/a><\/p>\n<p style=\"text-align: center;\">C\u00f3digo 5 \u2013 Exemplo de setString em um PreparedStatement<\/p>\n<h6><\/h6>\n<p>Lembramos que esse exemplo \u00e9 baseado no exemplo do C\u00f3digo 4 por\u00e9m como n\u00e3o existe o 3\u00ba campo a ser preenchido na vari\u00e1vel PreparedStatement, isso foi somente um exemplo, se repararmos os caracteres \u201c?\u201d (Interroga\u00e7\u00e3o) simbolizam a ordem dos Set\u2019s no PreparedStatement, ainda no C\u00f3digo 4 podemos observar por exemplo,<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo6.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-180\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo6-300x16.jpg\" alt=\"Codigo6\" width=\"600\" height=\"32\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>C\u00f3digo 6 \u2013 Demonstra\u00e7\u00e3o setInt<\/em><\/p>\n<h6><\/h6>\n<p>Ao qual insere o valor 110592 no campo \u201cID = ?\u201d do PreparedStatement , ficando a Query assim ID = 110592.<br \/>\nSe por um acaso, a vari\u00e1vel SALARY for manipulada, por exemplo, inserir o valor 153833.00\u2019, no banco de dados ir\u00e1 ser atualizado a c\u00e9lula de sal\u00e1rio para 153833.00\u2019 n\u00e3o afetando em inje\u00e7\u00f5es de comandos SQL. Mas sim somente causando uma \u201cpolui\u00e7\u00e3o\u201d do banco de dados com caracteres especiais desnecess\u00e1rios.<\/p>\n<h6><\/h6>\n<h4><strong>Tratamento em telas de erro<\/strong><\/h4>\n<p>Atualmente, algumas linguagens, exemplo, Java e C#, ou .NET, cont\u00e9m formas de contornar e tratar erros, os famosos \u201ctry catch\u201d , a seguir exemplifico em Java, por\u00e9m em .NET \u00e9 muito similar,<\/p>\n<h6><\/h6>\n<p style=\"text-align: center;\"><a href=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo7.jpg\"><img decoding=\"async\" class=\"alignnone  wp-image-181\" src=\"\/blog\/wp-content\/uploads\/2014\/05\/Codigo7-300x101.jpg\" alt=\"Codigo7\" width=\"532\" height=\"179\" srcset=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo7-300x101.jpg 300w, https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/05\/Codigo7.jpg 674w\" sizes=\"(max-width: 532px) 100vw, 532px\" \/><\/a><br \/>\n<em>C\u00f3digo 7 \u2013 Exemplo de tratamento seguro em erros<\/em><\/p>\n<h6><\/h6>\n<p>Conforme foi demonstrado no C\u00f3digo 7, no segundo coment\u00e1rio, dentro da instru\u00e7\u00e3o catch, devemos esconder absolutamente todas as vari\u00e1veis que podem mostrar dados, ao qual muitas vezes ajudam um atacante a obter informa\u00e7\u00f5es sobre o sistema, como temos a vari\u00e1vel ex podemos usa-la para selecionar o tipo de tela de erro, cuidando tamb\u00e9m para n\u00e3o facilitarmos que um atacante descubra, por exemplo, a exist\u00eancia de um usu\u00e1rio no sistema, telas de erro em HTML que ajudem a equipe de suporte a diagnosticar o problema, sem impress\u00e3o de vari\u00e1veis, simplesmente pela mensagem, escolhida entre if\u2019s que comparem a vari\u00e1vel \u201cex\u201d com certos tipos de Exceptions esperados, que podem ser retornados pela aplica\u00e7\u00e3o.<\/p>\n<h6><\/h6>\n<h4><strong>Evitando ataques \u201ccegos\u201d<\/strong><\/h4>\n<p>Ataques cegos de inje\u00e7\u00e3o SQL, ou Blind SQL Injection, se trata do atacante tentar adivinhar o que existe no banco de dados, por exemplo, com uma senten\u00e7a, a p\u00e1gina pode retornar 1 para true, ou 0 para false, assim o atacante pode obter \u00eaxito na sua explora\u00e7\u00e3o, consultando a exist\u00eancia dos dados, outra forma de evitar esse tipo de ataque \u00e9 atrav\u00e9s do replace na aplica\u00e7\u00e3o web, da fun\u00e7\u00e3o SQL \u201csleep()\u201d que muitos SGBD\u2019s hoje em dia carregam, ao qual faz o Banco de Dados ter um delay ao responder para a aplica\u00e7\u00e3o web, quando o valor consultado existir no banco de dados.<\/p>\n<h6><\/h6>\n<h4><strong>Outras formas eficientes de evitar este e outros ataques \u00e0 aplica\u00e7\u00f5es web?<\/strong><\/h4>\n<p>Existe sim outras formas de evitar este e outros tipos de ataques em aplica\u00e7\u00f5es web, nossa empresa desenvolveu o <a href=\"https:\/\/www.xlabs.com.br\/waf\/\" target=\"_blank\" rel=\"noopener noreferrer\">XLabs Web Application Firewall<\/a>, trata-se de um sistema que defende qualquer plataforma web de ataques direcionados a tais aplica\u00e7\u00f5es. Quer saber mais? <a href=\"https:\/\/www.xlabs.com.br\/especialistas\">Fale agora mesmo com um de nossos especialistas<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados pelos usu\u00e1rios da aplica\u00e7\u00e3o, inserindo instru\u00e7\u00f5es a mais nas consultas ao banco de dados, devemos cuidar muito bem praticamente todos os campos de par\u00e2metros, tanto par\u00e2metros que utilizam GET ou POST, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1555,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[79,80,76,81,98,97],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQL Injection &ndash; XLabs Security Blog<\/title>\n<meta name=\"description\" content=\"SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Injection &ndash; XLabs Security Blog\" \/>\n<meta property=\"og:description\" content=\"SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/\" \/>\n<meta property=\"og:site_name\" content=\"XLabs Security Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/xlabs\" \/>\n<meta property=\"article:published_time\" content=\"2014-06-19T08:55:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-25T20:52:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/06\/sql-injection-blog-post-xlabs.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"488\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mauricio Corr\u00eaa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"SQL Injection &ndash; XLabs Security Blog\" \/>\n<meta name=\"twitter:description\" content=\"SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados...\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/06\/sql-injection-blog-post-xlabs.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauricio Corr\u00eaa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/\"},\"author\":{\"name\":\"Mauricio Corr\u00eaa\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/person\/7d0839d8f5b967c3daa45aa01f3fdd3d\"},\"headline\":\"SQL Injection\",\"datePublished\":\"2014-06-19T08:55:50+00:00\",\"dateModified\":\"2021-08-25T20:52:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/\"},\"wordCount\":1225,\"publisher\":{\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#organization\"},\"keywords\":[\"Prote\u00e7\u00e3o de aplica\u00e7\u00f5es web\",\"Prote\u00e7\u00e3o SQL Injection\",\"SQL Injection\",\"Tutorial SQL Injection\",\"Web Application Firewall\",\"XLabs Web Application Firewall\"],\"articleSection\":[\"Artigos\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/\",\"url\":\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/\",\"name\":\"SQL Injection &ndash; XLabs Security Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#website\"},\"datePublished\":\"2014-06-19T08:55:50+00:00\",\"dateModified\":\"2021-08-25T20:52:07+00:00\",\"description\":\"SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados...\",\"breadcrumb\":{\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.xlabs.com.br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Injection\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#website\",\"url\":\"https:\/\/www.xlabs.com.br\/blog\/\",\"name\":\"XLabs Security Blog\",\"description\":\"Seguran\u00e7a da Informa\u00e7\u00e3o\",\"publisher\":{\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.xlabs.com.br\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#organization\",\"name\":\"XLabs Security\",\"url\":\"https:\/\/www.xlabs.com.br\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2020\/11\/Logotipo.png\",\"contentUrl\":\"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2020\/11\/Logotipo.png\",\"width\":478,\"height\":168,\"caption\":\"XLabs Security\"},\"image\":{\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.instagram.com\/xlabs.security\",\"https:\/\/www.linkedin.com\/company\/xlabs-security\/\",\"https:\/\/www.youtube.com\/channel\/UCPbGDmCQI7_UcAPmvVLi58g?view_as=subscriber\",\"https:\/\/www.facebook.com\/xlabs\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/person\/7d0839d8f5b967c3daa45aa01f3fdd3d\",\"name\":\"Mauricio Corr\u00eaa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f0734e5fb6afc04d038e66cae478a8a0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f0734e5fb6afc04d038e66cae478a8a0?s=96&d=mm&r=g\",\"caption\":\"Mauricio Corr\u00eaa\"},\"url\":\"https:\/\/www.xlabs.com.br\/blog\/author\/mauricio-correa\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SQL Injection &ndash; XLabs Security Blog","description":"SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/","og_locale":"pt_BR","og_type":"article","og_title":"SQL Injection &ndash; XLabs Security Blog","og_description":"SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados...","og_url":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/","og_site_name":"XLabs Security Blog","article_publisher":"https:\/\/www.facebook.com\/xlabs","article_published_time":"2014-06-19T08:55:50+00:00","article_modified_time":"2021-08-25T20:52:07+00:00","og_image":[{"width":1000,"height":488,"url":"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/06\/sql-injection-blog-post-xlabs.png","type":"image\/png"}],"author":"Mauricio Corr\u00eaa","twitter_card":"summary_large_image","twitter_title":"SQL Injection &ndash; XLabs Security Blog","twitter_description":"SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados...","twitter_image":"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2014\/06\/sql-injection-blog-post-xlabs.png","twitter_misc":{"Escrito por":"Mauricio Corr\u00eaa","Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/#article","isPartOf":{"@id":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/"},"author":{"name":"Mauricio Corr\u00eaa","@id":"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/person\/7d0839d8f5b967c3daa45aa01f3fdd3d"},"headline":"SQL Injection","datePublished":"2014-06-19T08:55:50+00:00","dateModified":"2021-08-25T20:52:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/"},"wordCount":1225,"publisher":{"@id":"https:\/\/www.xlabs.com.br\/blog\/#organization"},"keywords":["Prote\u00e7\u00e3o de aplica\u00e7\u00f5es web","Prote\u00e7\u00e3o SQL Injection","SQL Injection","Tutorial SQL Injection","Web Application Firewall","XLabs Web Application Firewall"],"articleSection":["Artigos"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/","url":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/","name":"SQL Injection &ndash; XLabs Security Blog","isPartOf":{"@id":"https:\/\/www.xlabs.com.br\/blog\/#website"},"datePublished":"2014-06-19T08:55:50+00:00","dateModified":"2021-08-25T20:52:07+00:00","description":"SQL Injection, como o nome j\u00e1 diz, se trata de inje\u00e7\u00f5es de comandos ao banco de dados atrav\u00e9s de par\u00e2metros que podem ser alterados...","breadcrumb":{"@id":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.xlabs.com.br\/blog\/sql-injection\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.xlabs.com.br\/blog\/sql-injection\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.xlabs.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Injection"}]},{"@type":"WebSite","@id":"https:\/\/www.xlabs.com.br\/blog\/#website","url":"https:\/\/www.xlabs.com.br\/blog\/","name":"XLabs Security Blog","description":"Seguran\u00e7a da Informa\u00e7\u00e3o","publisher":{"@id":"https:\/\/www.xlabs.com.br\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.xlabs.com.br\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.xlabs.com.br\/blog\/#organization","name":"XLabs Security","url":"https:\/\/www.xlabs.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2020\/11\/Logotipo.png","contentUrl":"https:\/\/www.xlabs.com.br\/blog\/wp-content\/uploads\/2020\/11\/Logotipo.png","width":478,"height":168,"caption":"XLabs Security"},"image":{"@id":"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/xlabs.security","https:\/\/www.linkedin.com\/company\/xlabs-security\/","https:\/\/www.youtube.com\/channel\/UCPbGDmCQI7_UcAPmvVLi58g?view_as=subscriber","https:\/\/www.facebook.com\/xlabs"]},{"@type":"Person","@id":"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/person\/7d0839d8f5b967c3daa45aa01f3fdd3d","name":"Mauricio Corr\u00eaa","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.xlabs.com.br\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f0734e5fb6afc04d038e66cae478a8a0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f0734e5fb6afc04d038e66cae478a8a0?s=96&d=mm&r=g","caption":"Mauricio Corr\u00eaa"},"url":"https:\/\/www.xlabs.com.br\/blog\/author\/mauricio-correa\/"}]}},"_links":{"self":[{"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/posts\/170"}],"collection":[{"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/comments?post=170"}],"version-history":[{"count":31,"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/posts\/170\/revisions"}],"predecessor-version":[{"id":1638,"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/posts\/170\/revisions\/1638"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/media\/1555"}],"wp:attachment":[{"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/media?parent=170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/categories?post=170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xlabs.com.br\/blog\/wp-json\/wp\/v2\/tags?post=170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}