{"id":4151,"date":"2025-04-28T09:35:49","date_gmt":"2025-04-28T07:35:49","guid":{"rendered":"https:\/\/davidperezgar.com\/?p=4151"},"modified":"2025-06-22T18:30:38","modified_gmt":"2025-06-22T16:30:38","slug":"desarrolla-en-wordpress-plugins-mas-seguros","status":"publish","type":"post","link":"https:\/\/davidperezgar.com\/es\/desarrolla-en-wordpress-plugins-mas-seguros\/","title":{"rendered":"Desarrolla en WordPress Plugins m\u00e1s\u00a0seguros"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Plugin Check Plugin es la nueva herramienta disponible para todo el mundo y que permite hacer revisiones autom\u00e1ticas de tu plugin, darte indicaciones de tu c\u00f3digo que no es seguro, adem\u00e1s de indicar buenas pr\u00e1cticas. Mejora tu desarrollo con este plugin haci\u00e9ndolo parte de tu flujo de trabajo. \u00bfQu\u00e9 es Plugin Check Plugin? Es una soluci\u00f3n que te permite realizar revisiones autom\u00e1ticas de tu plugin, analizando tu c\u00f3digo en busca de posibles vulnerabilidades y errores de seguridad, y adem\u00e1s, te ofrece sugerencias sobre buenas pr\u00e1cticas y est\u00e1ndares de codificaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con ella, podr\u00e1s:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">Detectar problemas de seguridad: Recibe alertas sobre secciones de tu c\u00f3digo que podr\u00edan ser inseguras o vulnerables.<\/li>\n\n\n\n<li class=\"\">Asegurar la calidad del c\u00f3digo: Obt\u00e9n recomendaciones para mejorar y optimizar tu c\u00f3digo, garantizando que sigue las mejores pr\u00e1cticas de la comunidad WordPress. <\/li>\n\n\n\n<li class=\"\">Ahorro de tiempo: Automatiza las revisiones, lo que te permite concentrarte en lo que realmente importa, desarrollar y mejorar tus plugins.<\/li>\n\n\n\n<li class=\"\">Integraci\u00f3n en tu flujo de trabajo: Incorpora f\u00e1cilmente la herramienta en tus procesos de desarrollo, para que cada versi\u00f3n de tu plugin cumpla con los est\u00e1ndares de calidad y seguridad.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Mejora tu desarrollo haciendo de Plugin Check Plugin una parte esencial de tu flujo de trabajo y descubre c\u00f3mo mantener tus plugins a la vanguardia de la seguridad y eficiencia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Charla<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-incrustar-wordpress-tv wp-block-embed-incrustar-wordpress-tv wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"VideoPress Video Player\" aria-label=\"VideoPress Video Player\" width=\"500\" height=\"281\" src=\"https:\/\/video.wordpress.com\/embed\/KrSWp7wk?hd=1&amp;cover=1\" frameborder=\"0\" allowfullscreen allow=\"clipboard-write; presentation\"><\/iframe><script src='https:\/\/v0.wordpress.com\/js\/next\/videopress-iframe.js?m=1790791280'><\/script>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Resumen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hola, soy David P\u00e9rez, desarrollador apasionado por WordPress desde 2010 y cofundador de la <a href=\"https:\/\/close.marketing\" target=\"_blank\" rel=\"noopener\">Agencia Close de Marketing y Desarrollo<\/a>, donde lidero el \u00e1rea t\u00e9cnica y desarrollo plugins, sobre todo enfocados en Gutenberg. Tambi\u00e9n formo parte del equipo de revisi\u00f3n de plugins de WordPress.org, gracias al patrocinio de <a href=\"https:\/\/hostinger.es\" target=\"_blank\" rel=\"noopener\">Hostinger<\/a>, donde trabajo para mejorar la seguridad y la calidad del ecosistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta charla quise presentar una herramienta que estamos impulsando desde la comunidad: <a href=\"https:\/\/wordpress.org\/plugins\/plugin-check\/\" target=\"_blank\" rel=\"noopener\"><strong>Plugin Check Plugin<\/strong> (PCP)<\/a>. Es una herramienta gratuita que permite revisar autom\u00e1ticamente el c\u00f3digo de nuestros plugins para detectar vulnerabilidades y malas pr\u00e1cticas. Lo interesante es que pod\u00e9is integrarla f\u00e1cilmente en vuestro flujo de trabajo y usarla antes de enviar un plugin al repositorio oficial o lanzarlo de forma comercial.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este proyecto empez\u00f3 en el equipo de Performance de WordPress, pero ahora tambi\u00e9n estamos muy involucrados desde el Plugin Review Team y el equipo Meta. De hecho, desde septiembre pasado, todos los plugins que se suben al repositorio se revisan autom\u00e1ticamente usando esta herramienta, y en el futuro, tambi\u00e9n lo har\u00e1n las actualizaciones de plugins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El n\u00famero de plugins que recibimos ha aumentado mucho: de unos 120 a m\u00e1s de 250 por semana. Y aunque no fue una charla sobre IA, tambi\u00e9n usamos inteligencia artificial para comprobar, por ejemplo, si el nombre de un nuevo plugin entra en conflicto con los 60.000 ya existentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante la sesi\u00f3n hice una peque\u00f1a demo de c\u00f3mo funciona Plugin Check Plugin: simplemente instal\u00e1ndolo en nuestro entorno local de WordPress, seleccionamos el plugin que queremos revisar y el sistema nos muestra errores, advertencias y sugerencias, organizadas en categor\u00edas como seguridad, rendimiento o buenas pr\u00e1cticas de codificaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nos centramos en dos medidas b\u00e1sicas de seguridad que todo desarrollador deber\u00eda aplicar: <strong>sanitizar<\/strong> la informaci\u00f3n que recibimos y <strong>escapar<\/strong> cualquier dato antes de mostrarlo. Usando solo estas dos pr\u00e1cticas se puede evitar un gran porcentaje de las vulnerabilidades m\u00e1s comunes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finalmente, compart\u00ed ejemplos reales de plugins conocidos que sufrieron vulnerabilidades graves que se podr\u00edan haber evitado simplemente pasando el c\u00f3digo por esta herramienta. Tambi\u00e9n respond\u00ed preguntas sobre c\u00f3mo usar Plugin Check Plugin, c\u00f3mo mejora la seguridad y algunas recomendaciones para seguir desarrollando de forma segura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Much\u00edsimas gracias a todos los que asististeis. Espero que esta herramienta os sea tan \u00fatil como lo est\u00e1 siendo para nosotros en el equipo de revisi\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex frontblocks-gallery-grid\" data-layout=\"grid\" data-columns=\"3\" data-gutter=\"20\" data-lightbox=\"false\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1082\" height=\"722\" data-id=\"5104\" src=\"\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-1-1082x722-1.jpg\" alt=\"Wcmalaga 2025 1\" class=\"wp-image-5104\" title=\"\" srcset=\"https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-1-1082x722-1.jpg 1082w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-1-1082x722-1-300x200.jpg 300w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-1-1082x722-1-1024x683.jpg 1024w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-1-1082x722-1-768x512.jpg 768w\" sizes=\"auto, (max-width: 1082px) 100vw, 1082px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1082\" height=\"722\" data-id=\"5106\" src=\"\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-2-1082x722-1.jpg\" alt=\"Wcmalaga 2025 2\" class=\"wp-image-5106\" title=\"\" srcset=\"https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-2-1082x722-1.jpg 1082w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-2-1082x722-1-300x200.jpg 300w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-2-1082x722-1-1024x683.jpg 1024w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-2-1082x722-1-768x512.jpg 768w\" sizes=\"auto, (max-width: 1082px) 100vw, 1082px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1082\" height=\"721\" data-id=\"5108\" src=\"\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-3-1082x721-1.jpg\" alt=\"Wcmalaga 2025 3\" class=\"wp-image-5108\" title=\"\" srcset=\"https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-3-1082x721-1.jpg 1082w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-3-1082x721-1-300x200.jpg 300w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-3-1082x721-1-1024x682.jpg 1024w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-3-1082x721-1-768x512.jpg 768w\" sizes=\"auto, (max-width: 1082px) 100vw, 1082px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1082\" height=\"721\" data-id=\"5110\" src=\"\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-4-1082x721-1.jpg\" alt=\"Wcmalaga 2025 4\" class=\"wp-image-5110\" title=\"\" srcset=\"https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-4-1082x721-1.jpg 1082w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-4-1082x721-1-300x200.jpg 300w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-4-1082x721-1-1024x682.jpg 1024w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-4-1082x721-1-768x512.jpg 768w\" sizes=\"auto, (max-width: 1082px) 100vw, 1082px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1082\" height=\"722\" data-id=\"5112\" src=\"\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-5-1082x722-1.jpg\" alt=\"Wcmalaga 2025 5\" class=\"wp-image-5112\" title=\"\" srcset=\"https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-5-1082x722-1.jpg 1082w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-5-1082x722-1-300x200.jpg 300w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-5-1082x722-1-1024x683.jpg 1024w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-5-1082x722-1-768x512.jpg 768w\" sizes=\"auto, (max-width: 1082px) 100vw, 1082px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"722\" height=\"1082\" data-id=\"5114\" src=\"\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-6-722x1082-1.jpg\" alt=\"Wcmalaga 2025 6\" class=\"wp-image-5114\" title=\"\" srcset=\"https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-6-722x1082-1.jpg 722w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-6-722x1082-1-200x300.jpg 200w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/wcmalaga-2025-6-722x1082-1-683x1024.jpg 683w\" sizes=\"auto, (max-width: 722px) 100vw, 722px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Fotos Gracias a <a href=\"https:\/\/x.com\/pacomarchante\">Paco Marchante<\/a><\/p>\n\n\n\n\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\"><p lang=\"es\" dir=\"ltr\">\ud83d\udd0d\ud83d\udd27 En <a href=\"https:\/\/x.com\/hashtag\/WCMLG25?src=hash&amp;ref_src=twsrc%5Etfw\">#WCMLG25<\/a>, <a href=\"https:\/\/x.com\/davidperezmk?ref_src=twsrc%5Etfw\">@davidperezmk<\/a>  nos ha presentado Plugin Check Plugin, una herramienta clave para revisar la seguridad y la calidad de nuestros plugins de forma autom\u00e1tica.<br><br>Porque un buen c\u00f3digo\u2026 \u00a1tambi\u00e9n se entrena! \ud83d\ude80<a href=\"https:\/\/x.com\/hashtag\/WCMLG?src=hash&amp;ref_src=twsrc%5Etfw\">#WCMLG<\/a> <a href=\"https:\/\/x.com\/hashtag\/WordPress?src=hash&amp;ref_src=twsrc%5Etfw\">#WordPress<\/a> <a href=\"https:\/\/x.com\/hashtag\/WordCamp?src=hash&amp;ref_src=twsrc%5Etfw\">#WordCamp<\/a> <a href=\"https:\/\/x.com\/hashtag\/IA?src=hash&amp;ref_src=twsrc%5Etfw\">#IA<\/a> <a href=\"https:\/\/t.co\/hr5oiL1tO3\">pic.twitter.com\/hr5oiL1tO3<\/a><\/p>&mdash; WordPress M\u00e1laga (@wpmalaga) <a href=\"https:\/\/x.com\/wpmalaga\/status\/1916140674891513859?ref_src=twsrc%5Etfw\">April 26, 2025<\/a><\/blockquote><script async src=\"https:\/\/platform.x.com\/widgets.js\" charset=\"utf-8\"><\/script>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Transcripci\u00f3n<\/h2>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Toda la charla<\/summary>\n<p class=\"wp-block-paragraph\">Presentador<br>Ahora vamos con un ciclo de mini charlas. El primer turno es para David P\u00e9rez, que es desarrollador apasionado por WordPress desde 2010 y cofundador de la agencia Close, donde lidera el \u00e1rea t\u00e9cnica y desarrolla plugins, con especial foco en Gutenberg. Ha tenido un papel muy activo en la comunidad WordPress, participando en WordCamp, colaborando con WordPress TV Espa\u00f1a y desde 2023 forma parte del equipo de revisi\u00f3n de plugins, contribuyendo a mejorar su seguridad y calidad. Y adem\u00e1s, en el plano personal, organiza una carrera solidaria en Granada en honor a su padre. En su charla, que se titula Desarrolla en WordPress, plugins m\u00e1s seguros, David nos va a presentar el Plugin Check Plugin. \u00bfSe llama as\u00ed? S\u00ed, s\u00ed,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>plugin, check plugin. Una<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Presentador<br>herramienta gratuita que realiza revisiones autom\u00e1ticas del c\u00f3digo de tus plugins para detectar vulnerabilidades y sugerir buenas pr\u00e1cticas. Esta soluci\u00f3n permite mejorar la seguridad y calidad del c\u00f3digo mientras que se integra f\u00e1cilmente en tu flujo de trabajo, ahorrando tiempo y facilitando el cumplimiento de los est\u00e1ndares de desarrollo en WordPress. As\u00ed que, vamos all\u00e1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>Muchas gracias. Bueno, buenas tardes a todos. voy a contar un poquito sobre todo una herramienta que hemos desarrollado desde la comunidad que fue un proyecto que inici\u00f3 el equipo de Performance que como sab\u00e9is est\u00e1n haciendo muchas cosas tambi\u00e9n en el core de WordPress hace poco en las 6-8 he sacado muchas cosillas de rendimiento y lo iniciaron ellos y junto con nosotros el equipo de Plugin Review Team hemos metido una serie de checks que le llamamos nosotros para detectar incidencias en vuestro c\u00f3digo. Cuando vosotros hac\u00e9is un plugin, ya sea de manera comercial o sea para ponerlo en el repositorio oficial, si lo mand\u00e1is al repositorio oficial nosotros hacemos una revisi\u00f3n manual tambi\u00e9n con un T automatizado y sobre todo ese tipo de comprobaciones que hacemos en el c\u00f3digo lo pod\u00e9is vosotros hacer antes. Entonces, lo bueno de esta herramienta es que pod\u00e9is usarla en todo momento y vamos a ir viendo. Tambi\u00e9n voy a ense\u00f1aros c\u00f3mo vulnerabilidades graves en ciertos plugins se hubieran solucionado muy f\u00e1cilmente utilizando este plugin. Adem\u00e1s, d\u00e1ndote unos consejos que quiero que os llev\u00e9is, por lo menos, si sois desarrolladores. Este equipo tambi\u00e9n ha participado en este plugin. Si vos busc\u00e1is en el repertor oficial, se llama Plugin Chef Plugin o PCP. Y tambi\u00e9n ha participado el equipo de meta que si no lo conoc\u00e9is el equipo que hay detr\u00e1s de wordpress.org pues tambi\u00e9n ah\u00ed estamos entonces bueno actualmente tambi\u00e9n este plugin conseguimos en septiembre del a\u00f1o pasado de que si sube un plugin al repositorio de wordpress autom\u00e1ticamente sea verificado por este plugin entonces est\u00e1 cobrando mucha importancia y hay un proyecto que va a tardar un poquito de que todas las actualizaciones de wordpress porque ahora mismo son somos un equipo reactivo, es decir, que cuando nos piden o nos mandan plugin, nosotros lo revisamos. Pues la idea es que seamos mucho m\u00e1s proactivos, de manera que cuando haya cualquier actualizaci\u00f3n del plugin, sea revisado por este plugin. Con lo cual, tenemos una herramienta bastante consistente y bastante fiable para usarla y que va a ser usada por toda la comunidad antes o despu\u00e9s. Si no es voluntariamente como es ahora, ser\u00e1 forzosa porque no saldr\u00e1 en nuestro problema de actualizaci\u00f3n de plugins. Bueno, como veis no es una charla de IA, pero bueno, s\u00ed es verdad que nosotros cada vez estamos usando m\u00e1s la IA y simplemente queda un par de toquecillos de IA porque no estaba pensada totalmente, pero bueno, para que sep\u00e1is un poco que los plugins que nosotros revisamos a la hora de que se nos env\u00edan, estamos encontrando que del a\u00f1o pasado a este ha doblado la media de env\u00edo de plugin semanal. El a\u00f1o pasado estaba sobre unos 100, 120 y ahora est\u00e1n unos 250. De hecho, ayer fue de los r\u00e9cords de este a\u00f1o, unos 45 plugins enviados. Suele ser los jueves o los viernes, ayer o antes de ayer. Y nosotros lo que estamos usando mucho la gu\u00eda es tambi\u00e9n para cuando te mandas un plugin, tiene un nombre muy gen\u00e9rico, comprobar con todos los 60.000 plugins que tenemos publicados en nuestro repositorio que no entre en conflicto de nombre. Entonces lo estamos usando bastante. \u00bfC\u00f3mo funciona este plugin? Vamos a hacer una peque\u00f1a demo y va a ense\u00f1ar c\u00f3mo funciona. Si nos da tiempo, que tenemos que ir muy r\u00e1pido. Primero se instala en nuestro WordPress. Evidentemente esto para usarlo en nuestro entorno local. Cuando tenemos nuestro entorno local, instalamos el plugin plugin-check-plugin Y junto con nuestro desarrollo podemos analizar el c\u00f3digo. Tiene diferentes categor\u00edas. Tenemos un mont\u00f3n de checks o de comprobaciones. Y esas comprobaciones est\u00e1n ocupadas por categor\u00edas que no son excluyentes. Es decir, que puede haber\u2026 Vosotros pod\u00e9is comprobar la seguridad y a lo mejor en el repo del plugin, que es el que nosotros usamos y el que est\u00e1 activado por defecto, tambi\u00e9n tienen todos los checks de seguridad. No son excluyentes, pero s\u00ed est\u00e1n focalizados. Entonces, pues dicen, bueno, quiero meter la seguridad. Entonces, si ten\u00e9is alg\u00fan plugin comercial o ten\u00e9is plugin para clientes y os interesa tambi\u00e9n, por ejemplo, auditar el lado de rendimiento, la accesibilidad no lo recomiendo porque est\u00e1 muy verde. No hay muchas comprobaciones de accesibilidad. Pues le pod\u00e9is dar y os har\u00e1 una serie de incidencias en vuestro plugin. \u00bfVale? Vale, esas comprobaciones o checks que estamos avisando se realizan de forma din\u00e1mica o est\u00e1tica. o basada en los estilos de c\u00f3digo de coding est\u00e1ndar. Est\u00e1tica quiere decir que seg\u00fan el c\u00f3digo en el que est\u00e1 lee el PHP y autom\u00e1ticamente ya te va diciendo los problemas que encuentran en ese check y din\u00e1mico es que ejecuta c\u00f3digo. Se ejecuta c\u00f3digo y espera una variable y sobre eso te va diciendo si deber\u00edan ser correctas o no. Entonces, pues hay una cantidad. Nosotros actualmente y por aqu\u00ed tengo a Fran Torres que es el principal involucrado en nuestro comprobador que tenemos, Internet Scanner, que nosotros le llamamos que cuando nos llega un plugin y nosotros lo revisamos, tenemos una herramienta, aproximadamente habr\u00e1 unos 200, \u00bfno? M\u00e1s o menos. S\u00ed, tuvimos\u2026 \u00bfcu\u00e1ntos? 200 y pico ya, le perdemos el control, no est\u00e1 contado. Pues bueno, pues de esos 200 y pico y que aparte tiene un proceso manual que nosotros realizamos, nosotros hemos podido conseguir hasta ahora unos 83. Es decir, no tiene todos los que se realizan por parte del equipo, pero s\u00ed tiene una gran parte, 83 son bastantes. Y de ello, hay veces que no estamos muy seguros de lo que hace la m\u00e1quina. Es decir, nos dice los non sobre todo, la comprobaci\u00f3n de seguridad cuando son peticiones post, etc. Pues, como no estamos muy seguros, lo ponemos con un nivel un poquito menos exigente para que no, incluso, como estaba diciendo, puede bloquear la subida de un plugin para que no la bloquee. Entonces, hay unos 31 errores, 24 avistencias y reglas coding est\u00e1ndar. Quer\u00eda de manera r\u00e1pida repasarles, y si quiero entrar un poquito a c\u00f3mo se utiliza, para que os llev\u00e9is un poco esta herramienta que funciona estupendamente, las principales herramientas. Estos son los checks que tenemos actualmente. Hacemos comprobaciones de traducci\u00f3n. Actualmente los plugins, si queremos que sean traducibles, hay una serie de funciones en las que despu\u00e9s tenemos que poner el dominio de esa traducci\u00f3n. Todas esas comprobaciones. Luego tambi\u00e9n puede haber inyecciones de c\u00f3digo a trav\u00e9s de esas funciones, con lo cual tambi\u00e9n damos que se utilice la versi\u00f3n segura o escapada. Esto tambi\u00e9n, por lo que conozc\u00e1is, no se permite ofuscaci\u00f3n de c\u00f3digo en el repositorio de WordPress. Esto tambi\u00e9n ayuda mucho a la seguridad porque no tienes c\u00f3digo que no sabes que se est\u00e1 ejecutando. Eso es fundamental para nosotros y de hecho lo editamos y lo damos como error si se utiliza cualquier tipo de base encode o cualquier tipo de archivo. Por ejemplo, ejecutables.bat. Dir\u00e9is, bueno, \u00bfqui\u00e9n pone un.bat, un.exe o un.sh? Hay mucha gente que lo pone. Eso est\u00e1 bloqueado totalmente, adem\u00e1s de las librer\u00edas que se utilizan de desarrollo. Por ejemplo, nosotros podemos poner en nuestro Composer librer\u00edas que se utilizan para auditar nuestro c\u00f3digo, para hacer PHP unitario, etc. Pues todas esas librer\u00edas no deber\u00edan ir en un plugin ya final. Por eso damos estrategia y damos ayuda. Las cabeceras, la t\u00edpica, si hab\u00e9is publicado\u2026 \u00bfQui\u00e9n de aqu\u00ed tiene un plugin en repositorio de WordPress? \u00bfQuieres levantar la mano? Uno, dos. Bueno, animo a que publiqu\u00e9is porque se aprende much\u00edsimo. Y yo tambi\u00e9n tengo unos cuantos. Y sobre todo, el modelo que est\u00e1 funcionando muy bien es el freemium. Bueno, por un lado, gratuito entero o freemium. Y cuando subimos una versi\u00f3n nueva en la cabecera del Realme, hay que poner una versi\u00f3n y tiene que ser la misma que la cabecera del PHP. Es algo sencillo, pero esto ya te lo est\u00e1 avisando. Y aqu\u00ed voy a entrar un poquito m\u00e1s de detalle en medidas de seguridad, que son, al final, el 80% de las medidas de seguridad est\u00e1 en cuando recibe informaci\u00f3n que lo sanitice y cuando t\u00fa ejecutas c\u00f3digo hace un eco que se escape. Esa es de los principales principios de seguridad y en ese sentido vamos a ir viendo un poco. Esto aqu\u00ed hay, gracias a la herramienta Coding Standard, que si no la conoc\u00e9is, es un repositorio que analiza nuestro c\u00f3digo. Incluso lo podemos implementar en nuestro editor de c\u00f3digo y no hace como, por ejemplo, en el Word, que te pone una rayita roja si el c\u00f3digo est\u00e1 mal. Yo lo uso mucho tambi\u00e9n para el estilo de c\u00f3digo, cuando tenemos un equipo de trabajo, que no todos escriban de una forma u otra, el c\u00f3digo se vea de manera uniforme, incluso podemos tener reglas personalizadas para el equipo, porque a lo mejor los arrays, a m\u00ed me gusta los arrays cerrados con las llavecitas, pues el c\u00f3digo est\u00e1ndar te pone un error, entonces t\u00fa puedes personalizarlo. Son cositas as\u00ed que tienen, en estilo de c\u00f3digo y en muchas m\u00e1s comprobaciones. Por ejemplo, el tema de los SQL. Os voy a ense\u00f1ar c\u00f3mo informes de vulnerabilidades graves en plugins conocidos. Voy a juntar las preguntas con\u2026 Ah, vale, vale, perfecto. M\u00e1s comprobaciones y entramos un poco a peticiones directas a base de datos. Tienen que ir siempre con el Prepare. Y bueno, aqu\u00ed hay unas cuantas m\u00e1s de performance. Os las dejar\u00e9 en la diapositiva, en la web de la WordCamp. Sobre todo quiero entrar al detalle de dos comprobaciones que ten\u00e9is que hacer siempre cuando trabaj\u00e9is con vuestros plugins. Sobre todo el de Sanitize. Sanitize quiere decir que, por ejemplo, si tenemos un formulario, tenemos un input, cuando se ejecuta ese formulario, la informaci\u00f3n que te llegue tendr\u00eda que ir sanitizada. Tiene que ir sanitizada. Hay distintas funciones a la hora de sanitizar y lo que hacen es que descomponen si hay un c\u00f3digo que no sea ejecutable o que no se guarde un c\u00f3digo malicioso. Lo descomponen. un poco as\u00ed de forma resumida hay muchos tipos de funciones de sanitizado por ejemplo, si nos viene un email para sanitizar email, tienen ciertas reglas pero al final la principal es el SanityZtexField y si hay un Array, tendr\u00e1s que recorrer todo el Array y hacer SanityZtexField en cada valor del Array pues este y la siguiente bueno, estas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>tres,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>perd\u00f3n La siguiente es la de escapado, la de escapado, que es cuando nosotros hacemos un eco de un script, de un t\u00edtulo, deberemos pasarlo por una funci\u00f3n de WordPress que se llama HTML, esa es la b\u00e1sica y luego la podemos utilizar. Lo que hace es que no ejecuta c\u00f3digo malicioso. Con esas dos funciones y las conozc\u00e1is bien y las us\u00e9is de manera masiva, el c\u00f3digo va a ser mucho m\u00e1s seguro. Se puede utilizar con un WP-CLI, se puede utilizar como acci\u00f3n de Gijas. Esto lo recomiendo mucho porque podemos hacer T automatizado sobre nuestro plugin cuando hacemos una release o un pull request y que sea analizado por el plugin-check-plugin. Y para terminar, aqu\u00ed pone muchas gracias, pero todav\u00eda no. Para terminar, quer\u00eda ense\u00f1aros, porque muchas veces hablamos de seguridad y creemos que es algo complicado y debe ser algo muy sofisticado. y os quer\u00eda ense\u00f1ar primero c\u00f3mo funciona el plugin check plugin que si se ve m\u00e1s o menos bien cuando lo instalamos nos da una opci\u00f3n en tools plugin check y nos da un select de los plugins que nosotros tenemos instalado en nuestra instalaci\u00f3n como veis bueno pues es m\u00e1s o menos sencillo y yo elijo el plugin y le doy a check it el plugin repo es el que est\u00e1 se\u00f1alado por defecto con ese para m\u00ed es m\u00e1s que suficiente y fijaros este es un planning bastante conocido ten\u00eda la cantidad de resultados que da que hay que arreglar aqu\u00ed como veis tienen un error estos tienen que arreglarse te dice pero es que hay un burguer por abajo te dice el archivo la l\u00ednea y bueno con la l\u00ednea suficiente y te da el t\u00edpico error de comprobaci\u00f3n. Incluso lo pod\u00e9is ver en el editor si quer\u00e9is verlo y esto se hizo al tiempo. Os da una gu\u00eda de c\u00f3mo poder solucionarlo y tener m\u00e1s informaci\u00f3n de c\u00f3mo solucionarlo. Pues como veis, aqu\u00ed ten\u00e9is una cantidad. Y quer\u00eda entrar al detalle, y esto ya para terminar. Aqu\u00ed tenemos, hay varias empresas de seguridad, una de ellas es Patestack y hace unos informes sobre plugin. El equipo de plugin, que nosotros tenemos un peque\u00f1o subequipo que es de seguridad, que recibe esos informes y notifica a los autores. Esto es lo que hace Patestack, que nos notifica y con un tiempo prudencial le dice el autor, oye, arregla este parche. Lamentablemente no siempre lo arreglan, pero bueno, y no lo hacen p\u00fablico hasta que se ha arreglado. Aqu\u00ed, por ejemplo, vemos que la versi\u00f3n 2.26, la menor de 2.26 tiene una vulnerabilidad bastante grave, que es cross-site scripting, la ejecuci\u00f3n de c\u00f3digo. Incluso fijaros que nos da un poquito m\u00e1s el detalle de la vulnerabilidad. Este plugin se llama vpSocialWidget. \u00bfC\u00f3mo lo hubi\u00e9ramos solucionado? Si el autor hubiera utilizado esta herramienta, autom\u00e1ticamente le hubiera dicho que ten\u00eda que haber estado escapando. Ciertas funciones. Y fijaros que no se da una vez, se da muchas veces. Usando esta herramienta y dej\u00e1ndolo limpio, sobre todo los errores, los warning es para que vosotros dig\u00e1is, \u00bfesto est\u00e1 bien o est\u00e1 mal? Porque como no hay un proceso manual que nosotros podamos recomendar, pues s\u00ed es verdad un poco el criterio de c\u00f3mo podemos solucionarlo. Entonces, bueno, el informe es bastante grande, inquieta un poco esto. Tambi\u00e9n nos puede servir incluso para auditar la seguridad que tenemos de ciertas instalaciones. Oye, nos interesa a lo mejor, voy a pasarle el plugin y si es un plugin conocido se lo mando al autor. oye los autores normalmente suelen estar implicados en que esto funcione entonces ellos les interesa que sea lo m\u00e1s seguro posible entonces pues s\u00ed tambi\u00e9n de ah\u00ed a conocer aqu\u00ed por ejemplo el que dec\u00eda de croissants scripting que s\u00f3lo est\u00e1 asociado que no utiliza el escapado este por ejemplo es vulnerable con sql que es un plugin que se llama order splitter que aparentemente lo que hace es que seg\u00fan creo que los pedidos los divide. Y aqu\u00ed en orden de splitter le damos y efectivamente ver\u00e9is que si hubiera usado esta herramienta, aparte de tener escapado que aqu\u00ed por ejemplo tiene traducci\u00f3n, tambi\u00e9n se hubiera encontrado con que hubiera hecho bueno ahora no me va a salir porque hay un mont\u00f3n de incidencias pero si lo buscamos aqu\u00ed est\u00e1is viendo se ha usado una query y no se ha utilizado el pp que lo que hace es que las variables que nos traemos la sanitiza de alguna forma para que nos entre directamente en una consulta sql pues si hubiera utilizado nuestra herramienta no hubiera tenido este problema y finalmente de aposar widget he cogido tres m\u00e1s o menos que ve\u00eda algunas ponen los priority otra high priority pues igual aqu\u00ed si vemos que la de dashboard bueno la vez que es un ejemplo vaya tela yo es para no usarlo y salir corriendo vale aqu\u00ed como veis pues igual este era de cross-site request forgery este no lo conozco yo este pues igual aqu\u00ed escapado como veis casi toda la seguridad en un<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Presentador<br>porcentaje muy<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>alta es sanitizado y escapado y los nonsense que no ten\u00eda el detalle de contarlo pero tambi\u00e9n ayudan mucho pues si ten\u00e9is alguna pregunta<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 1<br>\u00bfEl plugin este que nos has mostrado para comprobar la seguridad solo sirve para comprobar la seguridad de un plugin o sirve para comprobar la seguridad de un c\u00f3digo que t\u00fa le<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>insertas? Solo para plugin<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 1<br>Primero conviertes tu c\u00f3digo a un plugin<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>privado Acuerdas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 1<br>de la conversaci\u00f3n de antes y luego lo compruebas me ha llamado la atenci\u00f3n que todos los que pones tienen much\u00edsimos agujeros de seguridad es as\u00ed con todos yo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>espero que no o sea esto est\u00e1 buscado bueno pero no lo tenemos bien no lo sabemos exactamente nosotros lo que tenemos es que yo digo que nuestro equipo trabaja de forma reactiva cuando tenemos notificaciones de usuarios o nosotros analizamos el c\u00f3digo y cerramos el plugin para digamos cortar la sangr\u00eda<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>le<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>decimos el autor que arregle y a partir de que haga una actualizaci\u00f3n se hace como a una comunidad normalmente suele ser<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 1<br>vale y por \u00faltimo si<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>detect\u00f3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Presentador<br>errores<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 1<br>importantes en un plugin se los report\u00f3 al autor y no le sale<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>de los huevos utilizar otro plugin<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 1<br>utiliza otro s\u00ed s\u00ed justo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>ti<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>Buenas, yo m\u00e1s que pregunta, recomendaci\u00f3n yo s\u00ed he utilizado el plugin desde que lo anunciasteis me hab\u00e9is tirado ya un plugin para atr\u00e1s<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>vamos a salir corriendo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>no, en realidad son tres tonter\u00edas pero no he tenido tiempo de corregirlos<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>publica<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>uno nuevo pero s\u00ed que os voy a dar una recomendaci\u00f3n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>Paco estaba por aqu\u00ed tambi\u00e9n, haciendo fotos cuando<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>te sale una alerta de un error<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>es<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>verdad que bajo mi punto de vista a veces las recomendaciones que dais para solucionarlo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>no son de todo no<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>son de todo claras y no va directamente al turr\u00f3n es decir<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>lo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>que estamos<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>hablando el<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>problema lo tiene el escaping co\u00f1o pues ll\u00e9vame el escaping d\u00edmelo claro<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>porque te manda<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>lo mejor una documentaci\u00f3n gigantesca<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>que<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>en realidad tampoco me termina de<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>resolverla<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 2<br>vamos<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>eso en el canal interno si lo tenemos hecho de hecho se hace con un ejemplo te ense\u00f1amos d\u00f3nde pod\u00e9is qu\u00e9 l\u00ednea que en planche no lo tenemos pero bueno te cojo la sugerencia y trabajaremos en ello de hecho animo en hija si lo busc\u00e1is y hag\u00e1is vuestro propio issue y bueno hay gente de google de hago esos motifs de empresas muy grandes que le interesa much\u00edsimo el tema<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 3<br>hola me gusta mucho la herramienta pero tambi\u00e9n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>pienso<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 3<br>en un hacker tambi\u00e9n est\u00e1is dando la informaci\u00f3n de c\u00f3mo hackear no<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>bueno no creas porque realmente ellos nos van a quiero decir que siempre vamos por delante en el sentido de buscar posibles agujeros es como hago un s\u00edmil r\u00e1pido es como en la oficina mi edificio oficina hubo un robo y d\u00f3nde fueron los que fueron a robar pues en la oficina que no ten\u00eda alarma quiero decir que los planes que se preocupan por hacer nuevos parches de seguridad pues normalmente van a tener menos ataque ellos van a donde va a lo que lo tienen m\u00e1s f\u00e1cil entonces<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 3<br>realmente no se puede<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>hacer si podr\u00eda ver oye y en estos planes alg\u00fan<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta 3<br>playa y no as\u00ed que vea lo busco y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">David<br>claro efectivamente bueno no s\u00e9 claro la audita dice mira este plan es un agujero s\u00ed s\u00ed ellos tambi\u00e9n tienen a su propia herramientas. Luego me cuentas. Listo, muchas gracias. Muchas gracias.<\/p>\n<\/details>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Plugin Check Plugin es la nueva herramienta disponible para todo el mundo y que permite hacer revisiones autom\u00e1ticas de tu plugin, darte indicaciones de tu c\u00f3digo que no es seguro, adem\u00e1s de indicar buenas pr\u00e1cticas. Mejora tu desarrollo con este plugin haci\u00e9ndolo parte de tu flujo de trabajo. \u00bfQu\u00e9 es Plugin Check Plugin? Es [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5748,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":3,"footnotes":""},"categories":[1,169],"tags":[],"class_list":["post-4151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-charlas"],"_links":{"self":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/comments?post=4151"}],"version-history":[{"count":1,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4151\/revisions"}],"predecessor-version":[{"id":5954,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4151\/revisions\/5954"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media\/5748"}],"wp:attachment":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media?parent=4151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/categories?post=4151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/tags?post=4151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}