{"id":110,"date":"2008-06-04T02:39:53","date_gmt":"2008-06-04T00:39:53","guid":{"rendered":"http:\/\/www.emperador.org\/?p=110"},"modified":"2025-05-29T12:16:50","modified_gmt":"2025-05-29T12:16:50","slug":"inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo","status":"publish","type":"post","link":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/","title":{"rendered":"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo"},"content":{"rendered":"<p>La semana pasada era atacado un sitio Web alojado por nosotros y, para colmo, realizado tambi\u00e9n por nuestro equipo. El ataque era trivial, como siempre, mediante inyecci\u00f3n SQL (SQL-injection) y hab\u00eda seguido los procedimientos habituales.<br \/>\n<!-- ckey=\"3359266B\" --><\/p>\n<p>Para quien no est\u00e9 familiarizado, describo a continuaci\u00f3n la t\u00e9cnica, bien explicada y masivamente difundida (demasiado, a buen seguro) por <a href=\"http:\/\/elladodelmal.blogspot.com\/\" target=\"_blank\">Chema Alonso<\/a>:<\/p>\n<h4>Generalidades<\/h4>\n<p>Los ataques de inyecci\u00f3n SQL se realiza mediante el env\u00edo de una sentencia SQL hacia un par\u00e1metro o campo de formulario que va a ser le\u00eddo por una aplicaci\u00f3n web para su procesamiento. En otras palabras, los atacantes intentar\u00e1n completar una instrucci\u00f3n SQL especialmente \u00abmaligna\u00bb cuando ofrezcamos en una p\u00e1gina web un formulario o un par\u00e1metro dentro del encabezado (del tipo, por ejemplo, http:\/\/midominio.com\/listado.asp?id=23).<\/p>\n<p>Esto es empleado, generalmente y menos mal, para cambiar datos en las bases de datos que almacenan la informaci\u00f3n que se presenta en la web. Y digo \u00abmenos mal\u00bb porque tambi\u00e9n podr\u00eda ser utilizado para borrar una tabla, conseguir un usuario de la base de datos, etc.<\/p>\n<p>Usualmente el fin consiste en cambiar de cara (<a href=\"http:\/\/es.wikipedia.org\/wiki\/Anexo:Jerga_de_Internet\" target=\"_blank\">defacement<\/a>) de la web para colocar otro texto o im\u00e1genes identificando al hacker o con un mensaje alusivo. Estos delincuentes \u00abmenores\u00bb (ha habido ataques hace muy poco de este tipo que han limpiado webs tan concurridas como la <a href=\"http:\/\/elladodelmal.blogspot.com\/2008\/02\/he-pensado-que-ii.html\" target=\"_blank\">Jazztel<\/a>, <a href=\"http:\/\/img169.imageshack.us\/img169\/908\/izquierdaunidake8.jpg\" target=\"_blank\">Izquierda Unida<\/a> y otras; han sido pillados -lee la cr\u00f3nica de Chema <a href=\"http:\/\/elladodelmal.blogspot.com\/2008\/05\/al-talego-o-por-talegos.html\" target=\"_blank\">Al talego o a por talegos<\/a>-) parece que pretenden ser los primeros en el top de <a href=\"http:\/\/www.zone-h.org\/\" target=\"_blank\">Zone-h<\/a> o cosas por estilo, no les da para mucho m\u00e1s. El problema es que los que est\u00e1n detr\u00e1s sufrimos y mucho.<\/p>\n<h3>T\u00e9cnica<\/h3>\n<p>La t\u00e9cnica no es muy complicada y suele ser parecida a la siguiente:<\/p>\n<ol>\n<li>Lo primero es buscar una v\u00edctima, pero para eso qu\u00e9 mejor que <a href=\"http:\/\/www.google.com\" target=\"_blank\">Google<\/a>, para eso est\u00e1. Introducimos una cadena que pueda representar una vulnerabilidad (por ejemplo una b\u00fasquda del tipo \u00abinurl:listado.asp?id\u00bb y a ver que nos dice el buscador (para comprender mejor esto recomiendo el libro <a href=\"http:\/\/johnny.ihackstuff.com\/\" target=\"_blank\">\u00abHacking Google\u00bb de Johnny Long<\/a><\/li>\n<li>Una vez localizada una posible v\u00edctima, se suele probar a ver si es vulnerable. Las pruebas suelen hacerse intentando romper una cadena y ver lo que canta.<\/li>\n<blockquote><p>La t\u00e9cnica se basa en romper la sentencia SQL que haya programado el desarrollador y anexar otra sentencia maliciosa.<br \/>\nImaginemos que presentamos un formulario para buscar un nombre que presenta un campo llamado \u00abapellido\u00bb. El valor introducido por el usuario lo tratamos por una p\u00e1gina que tendr\u00e1 una sentencia del tipo <code>\"SELECT * FROM usuario WHERE usr_apellido='\" &amp; apellido &amp; \"' \"<\/code>.<br \/>\nSi un hacker nos introduce \u00abalgo de SQL\u00bb en el campo \u00abapellido\u00bb puede hacer romper la sentencia SQL y realizar otras acciones. En este ejemplo, se podr\u00eda introducir algo similar a:<br \/>\nApellido: <code>kk' or 1=1 --<\/code><br \/>\nCon esto la sentencia quedar\u00eda:<br \/>\n<code>\"SELECT * FROM usuario WHERE usr_apellido='kk' or 1=1 -- ' \"<\/code><br \/>\nObservad que esa condici\u00f3n (con el \u00abor 1=1\u00bb) se cumple siempre y, por tanto, devolver\u00e1 alg\u00fan registro (seguramente el primero aunque no exista el apellido \u00abkk\u00bb, ideal para romper formularios de validaci\u00f3n). El doble gui\u00f3n medio es usado para que el resto de la sentencia se entienda como comentario (seg\u00fan MS SQL Server, en otros SQL es parecido) y no produzca errores.<\/p><\/blockquote>\n<li>Siguiendo as\u00ed, seguramente probar\u00e1n distintos valores para conocer nombres de campo, tablas, usuarios, etc. En esto les ayuda nuestro generoso sistema que le va diciendo d\u00f3nde est\u00e1 el error, con su nombre de campo, tabla, etc. En el ejemplo del ataque sufrimos la semana pasada, el hacker incluso hizo:<br \/>\n<code>www.miweb.com\/listado.asp?id=Convert(int,(select+user));--<\/code><br \/>\nen la URL y nuestro sistema, amable de verdad, le contest\u00f3:<br \/>\n<code>Error de sintaxis al convertir el valor nvarchar 'usuario_de_la_bd' para una columna de tipo de datos int.<\/code><\/li>\n<li>Siguiendo as\u00ed, al final realizar\u00e1 una sentencia:<br \/>\n<code>UPDATE tabla SET campo='Hacked by SuperHackilistico'<\/code><br \/>\ny todos los valores tendr\u00e1n esa cadena, que a buen seguro se lucir\u00e1 flamante en la p\u00e1gina de inicio de nuestra web.<\/li>\n<\/ol>\n<h3>El problema<\/h3>\n<p>El problema est\u00e1 en el desarrollo, no en el sistema que alberga la web ni en el de base de datos. Hace tiempo la gente ni se planteaba hacer cosas as\u00ed, por lo que se programaba sin seguridad de ese tipo, pero hoy en d\u00eda es muy frecuente este tipo de ataques.<\/p>\n<p>En concreto, el d\u00eda 28 del mes pasado, recib\u00eda un mensaje de Jorge Chinea del <a href=\"http:\/\/www.inteco.es\/rssRead\/Seguridad\/INTECOCERT\" target=\"_blank\">INTECO-CERT<\/a> advirtiendo lo siguiente:<\/p>\n<blockquote><p>Estimados colaboradores,<\/p>\n<p>En los \u00faltimos d\u00edas se han detectado ataques masivos contra sitios web con el objetivo de manipular su funcionalidad y contenido. Una vez comprometidas, las paginas Web manipuladas redirigir\u00e1n a sus visitantes a sitios web maliciosos expresamente dise\u00f1ados para descargar e instalar todo tipo de c\u00f3digos maliciosos en el ordenador que podr\u00e1n permitir al atacante su control.<\/p>\n<p>Desde INTECO-CERT se alert\u00f3 en anteriores ocasiones la existencia de este tipo de ataques para comprometer los sitios web. Se trata de ataques de tipo inyecci\u00f3n SQL, aprovechando una vulnerabilidad en el Internet Information Server (IIS), provocada por una err\u00f3nea programaci\u00f3n del c\u00f3digo ASP (Active Server Pages).<\/p>\n<p>Estos ataques masivos est\u00e1n apoyados en herramientas autom\u00e1ticas con las que logran infectar gran n\u00famero de sitios web en poco tiempo. El n\u00famero total de p\u00e1ginas comprometidas a d\u00eda de hoy ronda los 1&#8217;5 millones, aunque muchas de ellas ya han sido o est\u00e1n siendo corregidas.<\/p>\n<p>Recomendamos a todos los webmasters que tengan sus p\u00e1ginas ASP alojadas en servidores IIS comprobar, lo antes posible, si sus p\u00e1ginas web han podido verse afectadas. Un s\u00edntoma claro de la infecci\u00f3n puede ser la existencia de c\u00f3digo javascript externo desconocido y que apunte a alguno de los dominios indicados en el siguiente listado (y que iremos actualizando):<\/p>\n<p>&#8211;<a href=\"http:\/\/alerta-antivirus.inteco.es\/documentos\/ListadoDominios.pdf\" target=\"_blank\">Listado de dominios maliciosos<\/a>&#8211;<\/p>\n<p>De cara a los usuarios finales, para evitar infecciones, aconsejamos seguir las recomendaciones b\u00e1sicas que siempre se deben adoptar ante incidentes de seguridad:<\/p>\n<p>* Utilizar software de seguridad como antivirus, cortafuegos, antiespias, etc.<br \/>\n* Tener actualizadas todas las aplicaciones de nuestro sistema, sobre todo sistema operativo y navegador, con los \u00faltimos parches de seguridad.<br \/>\n* Utilizar por defecto cuentas limitadas de usuario -no de administrador- con lo que limitaremos en gran medida los efectos de una posible infecci\u00f3n.<\/p>\n<p>Usuarios con conocimientos t\u00e9cnicos m\u00e1s avanzados pueden optar por deshabilitar el javascript en el navegador de manera temporal o instalar alguna extensi\u00f3n, como NoScript, que permita tener un control m\u00e1s exhaustivo sobre la ejecuci\u00f3n de secuencias de comandos.<\/p><\/blockquote>\n<p>Es evidente que los desarrolladores deben prestar m\u00e1s atenci\u00f3n en el c\u00f3digo y poner filtros que anulen algunos caracteres y sentencias peligrosas.<\/p>\n<p>En nuestro caso, ahora lo hacemos de forma usual, pero es cierto que siempre quedan desarrollos antiguos no actualizados que pueden ser vulnerables.<\/p>\n<h3>Contramedidas<\/h3>\n<p>Ya que conocemos el problema, solo nos falta ponerle soluci\u00f3n. Esta se encuentra \u00absimplemente\u00bb en filtrar lo que nos venga a p\u00e1ginas que admiten par\u00e1metros (ya sea por GET o por POST). Y digo \u00absimplemente\u00bb porque hay que completar c\u00f3digo y eso a veces da m\u00e1s que pereza.<\/p>\n<p>El mismo Jorge Chinea planteaba la cuesti\u00f3n de la forma siguiente:<\/p>\n<blockquote><p>Con respecto a los ataques masivos contra sitios Web de los \u00faltimos d\u00edas hemos estado viendo diferentes soluciones:<\/p>\n<p>1.- La soluci\u00f3n definitiva, que ser\u00eda revisar todas las paginas asp verificando la entrada de datos para que no permitan inyecciones de SQL.<br \/>\n2.- El parche para las inyecciones que modifican datos: Usar un usuario para las consultas gen\u00e9ricas de la base de datos con permisos de solo lectura en las tablas y otro para la administraci\u00f3n de la web, a\u00f1adir\/modificar contenidos&#8230; Con esto ya no se podr\u00edan modificar datos en la web<\/p><\/blockquote>\n<p>Pero me parece mucho m\u00e1s elegante otra soluci\u00f3n que se plante\u00f3 en el mismo foro (denominado RESCATA -Red Nacional de Sensores Antivirus- en la que colaboro) ofrecida por <strong>Juan Casc\u00f3n<\/strong> de <a href=\"http:\/\/www.vocento.com\/Castellano\/prensa\/abc.html\" target=\"_blank\">Vocento-ABC<\/a> y que incluyo a continuaci\u00f3n:<\/p>\n<pre>\r\nFunction ControlSQLInjection(texto)\r\n  ' Autor: Juan Casc\u00f3n:  xxx@abc.es\r\n  on error resume next\r\n    Dim res\r\n    res = LCase(texto)\r\n    res = Replace(res, \"[\", \"[[\" &amp; Chr(0))\r\n    res = Replace(res, \"]\", \"[]]\")\r\n    res = Replace(res, \"&lt; \", \"\")\r\n    res = Replace(res, \"&gt;\", \"\")\r\n    res = Replace(res, \"script\", \"\")\r\n    res = Replace(res,\"select\",\"\")\r\n    res = Replace(res,\"table\",\"\")\r\n    res = Replace(res,\"create\",\"\")\r\n    res = Replace(res,\"insert\",\"\")\r\n    res = Replace(res,\"update\",\"\")\r\n    res = Replace(res,\"delete\",\"\")\r\n    res = Replace(res,\"drop\",\"\")\r\n    res = Replace(res,\"exec\",\"\")\r\n    res = Replace(res,\"declare\",\"\")\r\n    res = Replace(res,\"alter\",\"\")\r\n    res = Replace(res,\"union\",\"\")\r\n    res = Replace(res,\"null\",\"\")\r\n    res = Replace(res,\"schema\",\"\")\r\n    res = Replace(res,\"execute\",\"\")\r\n    res = Replace(res,\"-\",\"\")\r\n    res = Replace(res,\";\",\"\")\r\n    res = Replace(res,\"\"\"\",\"\")\r\n    res = Replace(res, \"[[\" &amp; Chr(0), \"[[]\")\r\n    res = Replace(res, \"'\", \"''\")\r\n    res = Replace(res, \"%\", \"[%]\")\r\n    res = Replace(res, \"_\", \"[_]\")\r\n    res = Replace(res, \"#\", \"[#]\")\r\n    res = Replace(res, CHR(13), \"\")\r\n    res = Replace(res, CHR(10), \"\")\r\n    res = Replace(res, CHR(0), \"\")\r\n    res = Replace(res, \"=\", \"\")\r\n    res = Replace(res, \"&amp;\", \"\")\r\n    res = Replace(res, \"$\", \"\")\r\n    res = Replace(res, \"@\", \"\")\r\n    res = Replace(res, \"(\", \"\")\r\n    res = Replace(res, \")\", \"\")\r\n    res = Replace(res, \"\\\", \"\")\r\n    res = Replace(res, \",\", \"\")\r\n    res = Replace(res, \"\\'\", \"\")\r\n    res = Replace(res, \"+\", \"\")\r\n    ControlSQLInjection = res\r\nEnd function\r\n\r\n<\/pre>\n<p>Invocando a esta funci\u00f3n en cada recepci\u00f3n de datos de un formulario o enlace, podemos considerar que estamos protegidos frente a este tipo de amenazas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La semana pasada era atacado un sitio Web alojado por nosotros y, para colmo, realizado tambi\u00e9n por nuestro equipo. El ataque era trivial, como siempre, mediante inyecci\u00f3n SQL (SQL-injection) y hab\u00eda seguido los procedimientos habituales. Para quien no est\u00e9 familiarizado, describo a continuaci\u00f3n la t\u00e9cnica, bien explicada y masivamente difundida (demasiado, a buen seguro) por [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":627,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[2],"tags":[112,110,109,114,111,206,113],"class_list":["post-110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sistemas","tag-ataques","tag-defacement","tag-inyeccion-sql","tag-seguridad","tag-servidor-web","tag-sistemas","tag-sql-injection"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo - Reflexiones y adicciones<\/title>\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.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo - Reflexiones y adicciones\" \/>\n<meta property=\"og:description\" content=\"La semana pasada era atacado un sitio Web alojado por nosotros y, para colmo, realizado tambi\u00e9n por nuestro equipo. El ataque era trivial, como siempre, mediante inyecci\u00f3n SQL (SQL-injection) y hab\u00eda seguido los procedimientos habituales. Para quien no est\u00e9 familiarizado, describo a continuaci\u00f3n la t\u00e9cnica, bien explicada y masivamente difundida (demasiado, a buen seguro) por [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/\" \/>\n<meta property=\"og:site_name\" content=\"Reflexiones y adicciones\" \/>\n<meta property=\"article:published_time\" content=\"2008-06-04T00:39:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-29T12:16:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.emperador.org\/wp-content\/uploads\/2008\/06\/SQL_injection.png\" \/>\n\t<meta property=\"og:image:width\" content=\"638\" \/>\n\t<meta property=\"og:image:height\" content=\"479\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antonio Emperador Sau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antonio Emperador Sau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/\"},\"author\":{\"name\":\"Antonio Emperador Sau\",\"@id\":\"https:\\\/\\\/www.emperador.org\\\/#\\\/schema\\\/person\\\/7f3131e5ad3870b5252d2320a24452b7\"},\"headline\":\"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo\",\"datePublished\":\"2008-06-04T00:39:53+00:00\",\"dateModified\":\"2025-05-29T12:16:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/\"},\"wordCount\":1367,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/#\\\/schema\\\/person\\\/7f3131e5ad3870b5252d2320a24452b7\"},\"image\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.emperador.org\\\/wp-content\\\/uploads\\\/2008\\\/06\\\/SQL_injection.png\",\"keywords\":[\"ataques\",\"defacement\",\"inyecci\u00f3n SQL\",\"seguridad\",\"servidor web\",\"Sistemas\",\"SQL-injection\"],\"articleSection\":[\"Sistemas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/\",\"url\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/\",\"name\":\"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo - Reflexiones y adicciones\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.emperador.org\\\/wp-content\\\/uploads\\\/2008\\\/06\\\/SQL_injection.png\",\"datePublished\":\"2008-06-04T00:39:53+00:00\",\"dateModified\":\"2025-05-29T12:16:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.emperador.org\\\/wp-content\\\/uploads\\\/2008\\\/06\\\/SQL_injection.png\",\"contentUrl\":\"https:\\\/\\\/www.emperador.org\\\/wp-content\\\/uploads\\\/2008\\\/06\\\/SQL_injection.png\",\"width\":638,\"height\":479},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/2008\\\/06\\\/04\\\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.emperador.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.emperador.org\\\/#website\",\"url\":\"https:\\\/\\\/www.emperador.org\\\/\",\"name\":\"Reflexiones y adicciones\",\"description\":\"Antonio J. Emperador Sau\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.emperador.org\\\/#\\\/schema\\\/person\\\/7f3131e5ad3870b5252d2320a24452b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.emperador.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.emperador.org\\\/#\\\/schema\\\/person\\\/7f3131e5ad3870b5252d2320a24452b7\",\"name\":\"Antonio Emperador Sau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e3af7d1f8a4dc80a2f199c464a2476176b7940ce4dba16c8567686edc926f37a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e3af7d1f8a4dc80a2f199c464a2476176b7940ce4dba16c8567686edc926f37a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e3af7d1f8a4dc80a2f199c464a2476176b7940ce4dba16c8567686edc926f37a?s=96&d=mm&r=g\",\"caption\":\"Antonio Emperador Sau\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e3af7d1f8a4dc80a2f199c464a2476176b7940ce4dba16c8567686edc926f37a?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.emperador.org\"],\"url\":\"https:\\\/\\\/www.emperador.org\\\/index.php\\\/author\\\/antonio\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo - Reflexiones y adicciones","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.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/","og_locale":"es_ES","og_type":"article","og_title":"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo - Reflexiones y adicciones","og_description":"La semana pasada era atacado un sitio Web alojado por nosotros y, para colmo, realizado tambi\u00e9n por nuestro equipo. El ataque era trivial, como siempre, mediante inyecci\u00f3n SQL (SQL-injection) y hab\u00eda seguido los procedimientos habituales. Para quien no est\u00e9 familiarizado, describo a continuaci\u00f3n la t\u00e9cnica, bien explicada y masivamente difundida (demasiado, a buen seguro) por [&hellip;]","og_url":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/","og_site_name":"Reflexiones y adicciones","article_published_time":"2008-06-04T00:39:53+00:00","article_modified_time":"2025-05-29T12:16:50+00:00","og_image":[{"width":638,"height":479,"url":"https:\/\/www.emperador.org\/wp-content\/uploads\/2008\/06\/SQL_injection.png","type":"image\/png"}],"author":"Antonio Emperador Sau","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Antonio Emperador Sau","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/#article","isPartOf":{"@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/"},"author":{"name":"Antonio Emperador Sau","@id":"https:\/\/www.emperador.org\/#\/schema\/person\/7f3131e5ad3870b5252d2320a24452b7"},"headline":"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo","datePublished":"2008-06-04T00:39:53+00:00","dateModified":"2025-05-29T12:16:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/"},"wordCount":1367,"commentCount":0,"publisher":{"@id":"https:\/\/www.emperador.org\/#\/schema\/person\/7f3131e5ad3870b5252d2320a24452b7"},"image":{"@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/#primaryimage"},"thumbnailUrl":"https:\/\/www.emperador.org\/wp-content\/uploads\/2008\/06\/SQL_injection.png","keywords":["ataques","defacement","inyecci\u00f3n SQL","seguridad","servidor web","Sistemas","SQL-injection"],"articleSection":["Sistemas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/","url":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/","name":"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo - Reflexiones y adicciones","isPartOf":{"@id":"https:\/\/www.emperador.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/#primaryimage"},"image":{"@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/#primaryimage"},"thumbnailUrl":"https:\/\/www.emperador.org\/wp-content\/uploads\/2008\/06\/SQL_injection.png","datePublished":"2008-06-04T00:39:53+00:00","dateModified":"2025-05-29T12:16:50+00:00","breadcrumb":{"@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/#primaryimage","url":"https:\/\/www.emperador.org\/wp-content\/uploads\/2008\/06\/SQL_injection.png","contentUrl":"https:\/\/www.emperador.org\/wp-content\/uploads\/2008\/06\/SQL_injection.png","width":638,"height":479},{"@type":"BreadcrumbList","@id":"https:\/\/www.emperador.org\/index.php\/2008\/06\/04\/inyeccion-sql-en-paginas-web-y-prevencion-en-el-desarrollo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.emperador.org\/"},{"@type":"ListItem","position":2,"name":"Inyecci\u00f3n SQL en p\u00e1ginas web y prevenci\u00f3n en el desarrollo"}]},{"@type":"WebSite","@id":"https:\/\/www.emperador.org\/#website","url":"https:\/\/www.emperador.org\/","name":"Reflexiones y adicciones","description":"Antonio J. Emperador Sau","publisher":{"@id":"https:\/\/www.emperador.org\/#\/schema\/person\/7f3131e5ad3870b5252d2320a24452b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.emperador.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/www.emperador.org\/#\/schema\/person\/7f3131e5ad3870b5252d2320a24452b7","name":"Antonio Emperador Sau","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/e3af7d1f8a4dc80a2f199c464a2476176b7940ce4dba16c8567686edc926f37a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e3af7d1f8a4dc80a2f199c464a2476176b7940ce4dba16c8567686edc926f37a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e3af7d1f8a4dc80a2f199c464a2476176b7940ce4dba16c8567686edc926f37a?s=96&d=mm&r=g","caption":"Antonio Emperador Sau"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/e3af7d1f8a4dc80a2f199c464a2476176b7940ce4dba16c8567686edc926f37a?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.emperador.org"],"url":"https:\/\/www.emperador.org\/index.php\/author\/antonio\/"}]}},"_links":{"self":[{"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/posts\/110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/comments?post=110"}],"version-history":[{"count":1,"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"predecessor-version":[{"id":628,"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/posts\/110\/revisions\/628"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/media\/627"}],"wp:attachment":[{"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emperador.org\/index.php\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}