[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f28d6jAH4eQAyWBYZu-g7NPkzhFf0UrIgswFSGdO62lA":3},{"slug":4,"title":5,"summary":6,"category":7,"author":10,"image_url":16,"image_thumb_url":16,"published_at":17,"updated_at":18,"body_html":19,"keywords":4,"reading_time_minutes":20,"related_articles":21,"related_course":57,"related_specialty":76},"evitar-sql-injection-en-sistemas-cloud","Evitar SQL-Injection en Sistemas Cloud","Este artículo va enfocado al desarrollo seguro, Los ejemplos están escritos en el lenguaje Golang y pueden ser extrapolados a distintos lenguajes de programación.\r\n\r\nEn mi experiencia desarrollando software para la nube, me he dado cuenta de la gran necesidad que existe de desarrollar sistemas seguros, de minimizar las vulnerabilidades que pueden comprometer las capas del software más importantes, como lo es la Base de Datos.",{"slug":8,"name":9},"administracion-de-servidores","Administración de Servidores",{"username":11,"name":12,"avatar_url":13,"headline":14,"aboutme":15},"gbrayhan","Brayhan Alejandro Gabriel Guerrero","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBamtKIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--e0e7cb50ebcfa80db9c0882df1e3f476c487a572\u002FalexPerfil.jpg",null,"Full-Stack Developer","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdjhPIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--c4d09c5ed4d62175f890349c408bbc2d543732c7\u002Fshutterstock_625417832.jpg","2020-09-24T14:59:21-03:00","2026-10-26T13:08:43-03:00","\u003Cp class=\"has-line-data\">Este artículo va enfocado al desarrollo seguro, Los ejemplos están escritos en el lenguaje Golang y pueden ser extrapolados a distintos lenguajes de programación.\u003C\u002Fp>\r\n\u003Cp class=\"has-line-data\">En mi experiencia desarrollando software para la nube, me he dado cuenta de la gran necesidad que existe de desarrollar sistemas seguros, de minimizar las vulnerabilidades que pueden comprometer las capas del software más importantes, como lo es la Base de Datos.\u003C\u002Fp>\r\n\u003Cp class=\"has-line-data\">A continuación se mencionan una serie de buenas prácticas para evitar el SQL-Injection al momento del desarrollo:\u003C\u002Fp>\r\n\u003Cp class=\"has-line-data\"> \u003C\u002Fp>\r\n\u003Ch2 class=\"code-line\">Clasifica los Datos\u003C\u002Fh2>\r\n\u003Cp class=\"has-line-data\">Se debe tener claro qué tipo de información puede o no ser compartida, modificada o añadida a nuestro sistema. Una vez clasificando la información de la manera más simple posible, podemos determinar los permisos y la interacción de los datos que se almacenan y se exponen.\u003C\u002Fp>\r\n\u003Ch2 class=\"code-line\">\n\u003Ca>\u003C\u002Fa>Divide el Sistema en Capas\u003C\u002Fh2>\r\n\u003Cp class=\"has-line-data\">Evitemos a toda costa el código espagueti, ya que un sistema mal diseñado e implementado es la principal causa de vulnerabilidades, fallos y falta de escalabilidad. Existen paradigmas de Clean Architecture que orientan al equipo de desarrollo de software a optimizar y securizar la interacción de todas las capas y los elementos previamente abstraídos.\u003C\u002Fp>\r\n\u003Cp class=\"has-line-data\"> \u003C\u002Fp>\r\n\u003Cp class=\"has-line-data\">\u003Cimg src=\"https:\u002F\u002Fwww.pngkey.com\u002Fpng\u002Ffull\u002F423-4234315_there-are-some-great-posts-here-here-and.png\" width=\"596\" height=\"286\">\u003C\u002Fp>\r\n\u003Ch2 class=\"code-line\"> \u003C\u002Fh2>\r\n\u003Ch2 class=\"code-line\">\n\u003Ca>\u003C\u002Fa>Valida Datos de Entrada\u003C\u002Fh2>\r\n\u003Cp class=\"has-line-data\">Ya que tenemos nuestro sistema segmentado por bloques o capas una de las primeras capas debe ser la de validación de datos de entrada. Esta capa debe verificar el tamaño, eliminar espacios que no son necesarios, en la medida de lo posible usar expresiones regulares que ayudarán a verificar el contenido ingresado. Existen librerías en cada lenguaje para hacer esta validación, pero es muy recomendable tener esta capa de validación con código propio para su mayor control.\u003C\u002Fp>\r\n\u003Ch2 class=\"code-line\">\n\u003Ca>\u003C\u002Fa>Utiliza Variables Escapadas\u003C\u002Fh2>\r\n\u003Cp class=\"has-line-data\">Al momento de hacer la inserción de información en la base de datos de datos es necesario usar el sistema de escapado que tienen las librerías nativas o librerías oficiales que vinculan la conexión a la base de datos con el lenguaje. Existen también ORM que facilitan este escapado de variables. En el caso de no emplear un ORM es necesario escapar las variables y cuidar los concatenados de las consultas SQL.\u003C\u002Fp>\r\n\u003Ch3 class=\"code-line\">\n\u003Ca>\u003C\u002Fa>Búsquedas Comunes\u003C\u002Fh3>\r\n\u003Cp class=\"has-line-data\">\u003Cstrong>Ejemplo de un error Grave\u003C\u002Fstrong>\u003C\u002Fp>\r\n\u003Cpre>\u003Ccode class=\"has-line-data\">query := \u003Cspan class=\"hljs-string\">`SELECT username, dirección, tipo  FROM usuarios WHERE username = “`\u003C\u002Fspan> + variableUsername + \u003Cspan class=\"hljs-string\">`” AND enable = 1`\u003C\u002Fspan> \r\n\r\nrows, err := dbUsuarios.Read.Query(query)\r\n\u003Cspan class=\"hljs-keyword\">defer\u003C\u002Fspan> rows.Close()\r\n\u003Cspan class=\"hljs-keyword\">if\u003C\u002Fspan> err != \u003Cspan class=\"hljs-constant\">nil\u003C\u002Fspan> { \r\n    \u003Cspan class=\"hljs-keyword\">return\u003C\u002Fspan> err\r\n}\r\n\u003C\u002Fcode>\u003C\u002Fpre>\r\n\u003Cp class=\"has-line-data\">\u003Cstrong>Ejemplo Correcto\u003C\u002Fstrong>\u003C\u002Fp>\r\n\u003Cpre>\u003Ccode class=\"has-line-data\">query := \u003Cspan class=\"hljs-string\">`SELECT username, dirección, tipo  FROM usuarios WHERE username = ? AND enable = 1`\u003C\u002Fspan> \r\nrows, err := dbUsuarios.Read.Query(query, variableUsername)\r\n\u003Cspan class=\"hljs-keyword\">defer\u003C\u002Fspan> rows.Close()\r\n\u003Cspan class=\"hljs-keyword\">if\u003C\u002Fspan> err != \u003Cspan class=\"hljs-constant\">nil\u003C\u002Fspan> { \r\n    \u003Cspan class=\"hljs-keyword\">return\u003C\u002Fspan> err\r\n}\r\n\u003C\u002Fcode>\u003C\u002Fpre>\r\n\u003Ch3 class=\"code-line\">\n\u003Ca>\u003C\u002Fa>Búsquedas Inexactas\u003C\u002Fh3>\r\n\u003Cp class=\"has-line-data\">\u003Cstrong>Ejemplo de un error Grave\u003C\u002Fstrong>\u003C\u002Fp>\r\n\u003Cpre>\u003Ccode class=\"has-line-data\">query := \u003Cspan class=\"hljs-string\">`SELECT username, dirección, tipo  FROM usuarios WHERE name LIKE “%`\u003C\u002Fspan> + varLikeName + \u003Cspan class=\"hljs-string\">`%” AND enable = 1`\u003C\u002Fspan> \r\n\r\nrows, err := dbUsuarios.Read.Query(query)\r\n\u003Cspan class=\"hljs-keyword\">defer\u003C\u002Fspan> rows.Close()\r\n\u003Cspan class=\"hljs-keyword\">if\u003C\u002Fspan> err != \u003Cspan class=\"hljs-constant\">nil\u003C\u002Fspan> { \r\n\u003Cspan class=\"hljs-keyword\">return\u003C\u002Fspan> err\r\n}\r\n\u003C\u002Fcode>\u003C\u002Fpre>\r\n\u003Cp class=\"has-line-data\">\u003Cstrong>Ejemplo Correcto\u003C\u002Fstrong>\u003C\u002Fp>\r\n\u003Cp class=\"has-line-data\">Unicamente es necesario emplear el sistema de escape e inserción de go-mysql y la palabra reservada de mysql CONCAT para tener una consulta a prueba de SQL-Injection.\u003C\u002Fp>\r\n\u003Cpre>\u003Ccode class=\"has-line-data\">query := \u003Cspan class=\"hljs-string\">`SELECT username, dirección, tipo  FROM usuarios WHERE name LIKE CONCAT('%', ? , '%') AND enable = 1`\u003C\u002Fspan> \r\n\r\nrows, err := dbUsuarios.Read.Query(query, varLikeName)\r\n\u003Cspan class=\"hljs-keyword\">defer\u003C\u002Fspan> rows.Close()\r\n\u003Cspan class=\"hljs-keyword\">if\u003C\u002Fspan> err != \u003Cspan class=\"hljs-constant\">nil\u003C\u002Fspan> { \r\n\u003Cspan class=\"hljs-keyword\">return\u003C\u002Fspan> err\r\n}\r\n\u003C\u002Fcode>\u003C\u002Fpre>\r\n\u003Cp class=\"has-line-data\">Happy Hacking\u003C\u002Fp>",3,[22,34,46],{"slug":23,"title":24,"summary":25,"category":26,"author":27,"image_url":31,"image_thumb_url":31,"published_at":32,"updated_at":33},"fortigate-vpn-cve-2018-13379-pre-auth-arbitrary-file-reading","Fortigate VPN: CVE-2018-13379: Pre-auth arbitrary file reading ","En el año 2019 se notificaron de vulnerabilidades a los productos de la empresa Fortinet, reportados por los investigadores niph_ y ramoliks los cuales fueron los CVE...",{"slug":8,"name":9},{"username":28,"name":29,"avatar_url":30},"user-1582119990","José Moreno","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBczhMIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--695dbd13093235a9632272a6a98b0c9ef21a0319\u002FJoseMoreno-300x180.jpg","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZ29QIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--ba88ec10e0f75825436bb50263f5370c70843043\u002Fshutterstock_1065245462.jpg","2021-01-26T11:03:02-03:00","2026-10-26T11:20:39-03:00",{"slug":35,"title":36,"summary":37,"category":38,"author":39,"image_url":43,"image_thumb_url":43,"published_at":44,"updated_at":45},"configurando-tenable-io","Conociendo Tenable.Io","Hola! Esta vez después de mucho tiempo de no escribir, quiero presentarles una solución bastante buena para la gestión de vulnerabilidades, si bien es de paga, podríamos considerarla si tenemos el presupuesto. La solución es nombrada como Tenable.Io...",{"slug":8,"name":9},{"username":40,"name":41,"avatar_url":42},"Mroodriguezb","Mario Rodriguez Barraza","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBb1FSIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--d5c1cf9e6152977482e3d8a919cee58dc745a65c\u002Fimage_6483441.JPG","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZ2NQIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--4f7cea2f2dc1252534549f015c4d9dafdb00487a\u002Fshutterstock_268150262_(1).jpg","2021-01-21T14:45:22-03:00","2026-10-26T12:26:32-03:00",{"slug":47,"title":48,"summary":49,"category":50,"author":51,"image_url":54,"image_thumb_url":54,"published_at":55,"updated_at":56},"evadiendo-antivirus","Evadiendo AntiVirus","Primero vamos a entender que es un Antivirus, en términos simples es un programa de computadora para prevenir, detectar y remover malware. Su funcionamiento ha crecido y aumentado en eficacia durante el paso del tiempo, pero vamos a entender, como detecta un antivirus, a un virus?.",{"slug":8,"name":9},{"username":52,"name":52,"avatar_url":53},"user-1609041409","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaklNIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--536c91898c7c42c0a3008d37ec317309cb9805cc\u002F9178eae767eec8ff5750bd9a1cfdfe3b.png","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZ1lQIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--4be339c20f3143adff9c5e1a245e8311ae2458fb\u002Fshutterstock_1402830170-1.jpg","2020-12-28T12:03:58-03:00","2026-10-26T02:44:27-03:00",{"slug":58,"title":59,"summary":60,"level":61,"specialty":62,"category":65,"instructor":66,"image_url":70,"image_thumb_url":70,"duration_seconds":71,"lessons_count":72,"students_count":73,"is_free":74,"coming_soon":74,"updated_at":75},"linux-intermedia","Linux Intermedia ","Experiencias correspondientes a administración de servicios básicos de GNU\u002FLinux","Intermedios",{"slug":63,"name":64},"penetration-testing-and-ethical-hacking-pthh","Penetration Testing Professional",{"slug":8,"name":9},{"username":67,"name":68,"avatar_url":69},"yulytas","Julita Inca","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZ1lLIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--da3b2eaadb5f0c6173c6c74e56348d106ca37b2d\u002Fmio.jpg","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBamNOIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--e447286c9044b8fb330f329f24f0cef35c0a5588\u002F7-Linux-Intermedia-02.png",16477,10,1792,false,"2025-02-15T00:32:05-03:00",{"slug":63,"name":64,"summary":77,"level":78,"courses_count":79,"total_duration_seconds":80,"is_free":74,"image_url":81,"icon_url":82,"wallpaper_url":83,"updated_at":84},"Esta certificación tiene como propósito capacitar al estudiante en el área del pentesting y seguridad informática, a travez de casos reales y metodologías usadas por profesionales en el área de seguridad informática se…","Intermedio",7,124880,"https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaU1QIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--87a13f2613e0e2284db890551eb85f0352b99470\u002FProfessional-Penetration-Testing-02.png","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaWtQIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--bb0544c74bee18795524a78c0369e251f2203dc2\u002FPenetration-Testing-Professional.png","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaThQIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b10ffb6d08acfb082ddd40fc31f71b13d3dc516d\u002FProfessional-Penetration-Testing-03.jpg","2021-05-17T15:38:02-04:00"]