{"id":5615,"date":"2021-07-13T13:00:00","date_gmt":"2021-07-13T11:00:00","guid":{"rendered":"https:\/\/carontestudio.com\/blog\/?p=5615"},"modified":"2023-10-30T10:47:33","modified_gmt":"2023-10-30T09:47:33","slug":"programar-en-php-de-forma-segura","status":"publish","type":"post","link":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/","title":{"rendered":"Programar en PHP de forma segura"},"content":{"rendered":"\n<p id=\"block-c4f77844-6775-4e68-95c6-443860ba2e82\">Hoy en d\u00eda <a href=\"https:\/\/carontestudio.com\/blog\/el-futuro-de-php-aprenderlo-en-2021\/\">PHP<\/a> sigue siendo uno de los lenguajes<strong> m\u00e1s utilizados del mundo<\/strong> en cuanto a desarrollo web se refiere, es c\u00f3modo, intuitivo y f\u00e1cil de programar. Que sea uno de los lenguajes de programaci\u00f3n web m\u00e1s utilizados es tambi\u00e9n su punto d\u00e9bil, ya que una mala practica a la hora de programar, o una mala configuraci\u00f3n de seguridad, pueden hacer que tu sitio web acabe siendo <strong>hackeado<\/strong>, por eso es importante saber c\u00f3mo programar en PHP de forma segura.<\/p>\n\n\n\n<p id=\"block-dec8735b-1507-4c2b-9651-85c55ab51539\">Miles de sitios web son<strong> hackeados a diario<\/strong> y en muchos de estos casos se debe al uso de malas pr\u00e1cticas, configuraciones err\u00f3neas en el servidor o por no saber programar en PHP de forma segura.<\/p>\n\n\n\n<p id=\"block-ff4648ad-a6dc-4b6d-a29a-674c13c98b29\">Por ello en este art\u00edculo vamos a ver que buenas practicas podemos seguir para programar en PHP de forma segura y configurar correctamente nuestro servidor web.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ocultar versi\u00f3n de php<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"156\" src=\"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/Captura-1024x156.png\" alt=\"Programar en PHP de forma segura.\" class=\"wp-image-5619\" srcset=\"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/Captura-1024x156.png 1024w, https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/Captura-300x46.png 300w, https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/Captura-768x117.png 768w, https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/Captura.png 1111w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Mostrar la versi\u00f3n de una aplicaci\u00f3n, plugin, programa, o lenguaje de programaci\u00f3n, sea PHP o no, te<strong> expone gravemente<\/strong>, es un problema de seguridad importante. <\/p>\n\n\n\n<p>Siempre que se publican actualizaciones de versiones se publican tambi\u00e9n <strong>los errores y fallos corregidos<\/strong>. De modo que conociendo la versi\u00f3n de PHP que utilizas<strong> los atacantes podr\u00e1n aprovechar fallos de seguridad<\/strong> para hacerse con el control de tu sitio web.<\/p>\n\n\n\n<p>Para evitar mostrar la versi\u00f3n de PHP, hay que a\u00f1adir la siguiente linea de c\u00f3digo en el archivo <strong>php.ini<\/strong> del servidor.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>expose_php=Off<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"block-e1897055-cd59-4814-9fac-7ff65bd9bd82\">Desactivar errores en pantalla<\/h2>\n\n\n\n<p id=\"block-7eed08d9-07f3-4ffd-ba40-737bd7f90093\">Cuando estamos desarrollando es <strong>muy \u00fatil<\/strong> tener los errores en pantalla activados de modo que cuando algo falle podamos localizarlo r\u00e1pidamente, sin embargo, una vez hemos terminado de desarrollar <strong>es conveniente desactivar los errores en pantalla<\/strong>. Ya que si algo falla, PHP puede mostrar en pantalla <strong>informaci\u00f3n confidencial<\/strong>, por ejemplo, informaci\u00f3n de la base de datos (nombres de tablar), nombre de los ficheros PHP, rutas, etc.<\/p>\n\n\n\n<p id=\"block-1d9114b4-90f6-498f-94fe-e46cf63f011a\">Para evitar estos problemas debemos editar el fichero <strong>php.ini<\/strong> de nuestro servidor y a\u00f1adir la linea:<\/p>\n\n\n\n<pre id=\"block-53a2f60f-416e-4d95-a7a3-18ef054555ec\" class=\"wp-block-code\"><code>display_errors = Off<\/code><\/pre>\n\n\n\n<p>De este modo evitaremos mostrar informaci\u00f3n importante en pantalla.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Evitar incluir archivos remotos<\/h2>\n\n\n\n<p>La sentencias PHP &#8216;<strong>include&#8217;<\/strong> y &#8216;<strong>require&#8217; <\/strong>nos permiten incluir archivos para reutilizar c\u00f3digo, es algo imprescindible ya que nos permite organizar nuestro proyecto de forma mucho m\u00e1s eficiente. El problema reside, en que permite<strong> incluir archivos de otros servidores<\/strong>. <\/p>\n\n\n\n<p>Esto acarrea varios problemas:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>El sitio web queda <strong>expuesto a c\u00f3digo malicioso<\/strong>.<\/li><li>Si el servidor donde se encuentra el archivo incluido ha sido hackeado facilita que el nuestro lo acabe siendo tambi\u00e9n.<\/li><li>Nuestro sitio web, tendr\u00e1 una <strong>gran dependencia<\/strong> del sitio web o servidor original donde se encuentra el archivo incluido, ya que si este falla, es modificado o eliminado, nuestro sitio web fallar\u00e1 tambi\u00e9n.<\/li><\/ul>\n\n\n\n<p>La practica m\u00e1s adecuada a seguir es no utilizar las sentencias para incluir archivos remotos. Pero si deseas prevenir esto, puedes agregar dos lineas de c\u00f3digo en el archivo <strong>php.ini<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>allow_url_fopen = Off\nallow_url_include = Off<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Utilizar consultas precompiladas<\/h2>\n\n\n\n<p>Uno de los m\u00e9todos m\u00e1s utilizados por los atacantes, es la <strong>inyecci\u00f3n de c\u00f3digo<\/strong> <strong>SQL<\/strong>. Es un tipo de ciberataque en el cual el atacante inserta c\u00f3digo propio en un sitio web. Haciendo esto puede obtener acceso total a nuestra base de datos, entre muchas otras cosas.<\/p>\n\n\n\n<p>Por suerte hoy en d\u00eda existen diversas formas de protegernos de este tipo de ataques, y una de ellas, consiste en <strong>utilizar sentencias precompiladas<\/strong> (tambi\u00e9n conocidas como sentencias preparadas) cuando desarrollemos consultas a nuestra base de datos.<\/p>\n\n\n\n<p>Al desarrollar en PHP, la forma sencilla y c\u00f3moda de realizar una consulta SQL a nuestra base de datos seria algo similar a esto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if ($resultado = $mysqli-&gt;query(\"SELECT * FROM City\", MYSQLI_USE_RESULT)) {<\/code><\/pre>\n\n\n\n<p>Este tipo de consultas son las que acarrean problemas de seguridad, ya que la consulta se crea cada vez que se ejecuta el c\u00f3digo pertinente, y los par\u00e1metros y variables utilizados siempre ser\u00e1n los mismos, esto puede dejarnos expuestos a un ataque de inyecci\u00f3n de c\u00f3digo.<\/p>\n\n\n\n<p>Las sentencias preparadas ofrecen dos grandes beneficios respecto a las sentencias normales:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>La consulta solo necesita ser preparada una vez<\/strong>, pero puede ser ejecutada cuantas veces se quiera, y en cada ejecuci\u00f3n se pueden utilizar diferentes par\u00e1metros, o utilizar los mismos.<\/li><li><strong>Los par\u00e1metros para las sentencias preparadas no necesitan estar entrecomillados<\/strong>, el controlador autom\u00e1ticamente se encarga de esto, y es gracias a este beneficio que podemos evitar la inyecci\u00f3n de SQL.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3mo utilizar las consultas preparadas<\/h3>\n\n\n\n<p>Las consultas pre compiladas constan de dos fases; l<strong>a preparaci\u00f3n y la ejecuci\u00f3n<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Preparaci\u00f3n<\/h4>\n\n\n\n<p>Durante la etapa de preparaci\u00f3n, se crea la sintaxis de la consulta, haciendo que el servidor realice una comprobaci\u00f3n de sintaxis dej\u00e1ndola lista para utilizarla en cualquier momento, no se indican variables, simplemente se crea la consulta SQL, y donde queramos a\u00f1adir variables utilizaremos los caracteres &#8216;<strong>(?)<\/strong>&#8216;.<\/p>\n\n\n\n<p>El c\u00f3digo resultante seria parecido a esto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sentencia = $mysqli-&gt;prepare(\"INSERT INTO test(id) VALUES (?)\")<\/code><\/pre>\n\n\n\n<p>De este modo la <strong>sentencia quedar\u00eda preparada y lista<\/strong> para utilizarla cuantas veces necesitemos, adem\u00e1s es posible especificar distintos par\u00e1metros y variables cuando la consulta vaya a ser ejecutada.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ejecuci\u00f3n<\/h4>\n\n\n\n<p>Durante la ejecuci\u00f3n, el desarrollador vincula las variables con la sentencia preparada, indicando as\u00ed que valor se corresponde a cada par\u00e1metro, veamos un ejemplo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sentencia-&gt;bind_param(\"i\", $id)<\/code><\/pre>\n\n\n\n<p>De este modo, le estamos indicando a la sentencia preparada que donde hay un par\u00e1metro &#8216;(?)&#8217; debe especificar el valor de la variable $id como n\u00famero entero. El primer par\u00e1metro de la funci\u00f3n &#8216;<strong>bind_param()<\/strong>&#8216; indica el tipo de valor, el segundo el valor en si.<\/p>\n\n\n\n<p>Si la sentencia prepara necesita m\u00e1s de un par\u00e1metro, hay que utilizar el car\u00e1cter &#8216;?&#8217; por cada par\u00e1metro, y en la funci\u00f3n &#8216;bind_param()&#8217;, indicar de que tipo es cada uno de ellos, sin dejar espacios.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Veamos un ejemplo<\/h4>\n\n\n\n<p>Preparaci\u00f3n de la consulta.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $mysqli-&gt;prepare(\"INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)\");<\/code><\/pre>\n\n\n\n<p>Como podemos ver, la sentencia preparada espera 4 par\u00e1metros.<\/p>\n\n\n\n<p>Asignamos los valores, indicando en el primer par\u00e1metro el tipo de cada valor, cada car\u00e1cter hace referencia a un par\u00e1metro, el car\u00e1cter &#8216;s&#8217; significa que es de tipo <strong>&#8216;string&#8217;<\/strong> y el car\u00e1cter <strong>&#8216;d&#8217;<\/strong> indica que es de tipo <strong>&#8216;double&#8217;<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt-&gt;bind_param('sssd', $code, $language, $official, $percent);\n\n$code = 'DEU';\n$language = 'Bavarian';\n$official = \"F\";\n$percent = 11.2;<\/code><\/pre>\n\n\n\n<p>Finalmente ejecutamos la consulta.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt-&gt;execute();<\/code><\/pre>\n\n\n\n<p>Puedes consultar m\u00e1s informaci\u00f3n sobre las consultas preparadas en la <a href=\"https:\/\/www.php.net\/manual\/es\/mysqli.quickstart.prepared-statements.php\">documentaci\u00f3n oficial de PHP<\/a> o clicando<a href=\"https:\/\/www.php.net\/manual\/es\/mysqli-stmt.bind-param.php\"> aqu\u00ed<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Buenas pr\u00e1cticas<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"546\" src=\"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/programming-583923_1280-1024x546.jpg\" alt=\"\" class=\"wp-image-5625\" srcset=\"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/programming-583923_1280-1024x546.jpg 1024w, https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/programming-583923_1280-300x160.jpg 300w, https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/programming-583923_1280-768x409.jpg 768w, https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/programming-583923_1280.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>A continuaci\u00f3n veremos algunas buenas pr\u00e1cticas que podemos seguir para programar en PHP de forma m\u00e1s segura.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Inicializaci\u00f3n de variables<\/h3>\n\n\n\n<p>Cada vez que creemos una variable debemos inicializarla con un valor, aunque este sea 0, o vac\u00edo (\u00bb). De esta forma evitaremos que los atacantes utilicen una variable no inicializada para atacar nuestro sitio web.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Utilizar POST como m\u00e9todo de env\u00edo<\/h3>\n\n\n\n<p>Actualmente existen dos formas de enviar datos mediante un formulario web, <strong>el m\u00e9todo GET y el m\u00e9todo POST<\/strong>. Ambas formas son eficientes y el resultado final es el mismo, pero la manera en la que se transmite la informaci\u00f3n es distinta. <\/p>\n\n\n\n<p>Ambos m\u00e9todos tienen sus ventajas y sus desventajas, pero si tenemos la opci\u00f3n de elegir, es r<strong>ecomendable utilizar el m\u00e9todo POST<\/strong>, ya que de esta manera la informaci\u00f3n enviada no es visible para el usuario. Al utilizar el m\u00e9todo GET, la informaci\u00f3n enviada en el formulario ser\u00e1 visible en la URL y es posible que en ciertas ocasiones no sea conveniente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Vaciar inputs<\/h3>\n\n\n\n<p>Otra forma de evitar que los atacantes inyecten c\u00f3digo SQL en nuestro sitio web, es limpiando o vaciando las variables globales o inputs m\u00e1s habituales, las cuales son:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>$_POST<\/li><li>$_GET<\/li><li>$_SERVER<\/li><li>$_COOKIE<\/li><li>$_REQUEST<\/li><\/ul>\n\n\n\n<p>Dichas variables son accesibles desde cualquier fichero PHP, por lo que es importante limpiarlas una vez las hayamos utilizado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Funciones de validaci\u00f3n<\/h3>\n\n\n\n<p>En PHP existen numerosas funciones de validaci\u00f3n de variables, es muy recomendable usarlas para verificar que los datos almacenados en ellas son correctos, as\u00ed podremos evitar algunos ataques y errores de programaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>Aplicando estos consejos, configuraciones y buenas practicas podemos hacer que nuestro c\u00f3digo PHP y servidor web sea m\u00e1s seguro. Siempre es conveniente dedicar un poco de tiempo a la seguridad de nuestro servidor y c\u00f3digo para poder prevenir futuros problemas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy en d\u00eda PHP sigue siendo uno de los lenguajes m\u00e1s utilizados del mundo en cuanto a desarrollo web, en este art\u00edculo veremos c\u00f3mo podemos programar en PHP para hacer de nuestro sitio web m\u00e1s seguro.<\/p>\n","protected":false},"author":21,"featured_media":5631,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[50],"tags":[],"class_list":["post-5615","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion-web"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programar en PHP de forma segura - Blog SEO, Dise\u00f1o WEB &amp; Gr\u00e1fico<\/title>\n<meta name=\"description\" content=\"En este art\u00edculo comentaremos c\u00f3mo programar en PHP de forma segura y que configuraciones utilizar para fortalecer nuestro sitio web.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programar en PHP de forma segura - Blog SEO, Dise\u00f1o WEB &amp; Gr\u00e1fico\" \/>\n<meta property=\"og:description\" content=\"En este art\u00edculo comentaremos c\u00f3mo programar en PHP de forma segura y que configuraciones utilizar para fortalecer nuestro sitio web.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog de maketing | Caronte\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/carontewebstudio\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-13T11:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-30T09:47:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/photo_2021-07-13_11-28-27.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1250\" \/>\n\t<meta property=\"og:image:height\" content=\"737\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Caronte Studio\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Caronte Studio\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/\"},\"author\":{\"name\":\"Caronte Studio\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#\\\/schema\\\/person\\\/af53223b68efd2be07f600dfc0506979\"},\"headline\":\"Programar en PHP de forma segura\",\"datePublished\":\"2021-07-13T11:00:00+00:00\",\"dateModified\":\"2023-10-30T09:47:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/\"},\"wordCount\":1391,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/photo_2021-07-13_11-28-27.jpg\",\"articleSection\":[\"Programaci\u00f3n\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/\",\"url\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/\",\"name\":\"Programar en PHP de forma segura - Blog SEO, Dise\u00f1o WEB & Gr\u00e1fico\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/photo_2021-07-13_11-28-27.jpg\",\"datePublished\":\"2021-07-13T11:00:00+00:00\",\"dateModified\":\"2023-10-30T09:47:33+00:00\",\"description\":\"En este art\u00edculo comentaremos c\u00f3mo programar en PHP de forma segura y que configuraciones utilizar para fortalecer nuestro sitio web.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/#primaryimage\",\"url\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/photo_2021-07-13_11-28-27.jpg\",\"contentUrl\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/photo_2021-07-13_11-28-27.jpg\",\"width\":1250,\"height\":737},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/programar-en-php-de-forma-segura\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programar en PHP de forma segura\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/\",\"name\":\"Blog de marketing | Caronte\",\"description\":\"En nuestro blog encontrar\u00e1s art\u00edculos semanales sobre SEO, marketing online, programaci\u00f3n web y mucho m\u00e1s.\",\"publisher\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#organization\",\"name\":\"Caronte - Agencia de marketing\",\"url\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/caronte-agencia-de-marketing-logo.png\",\"contentUrl\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/caronte-agencia-de-marketing-logo.png\",\"width\":1090,\"height\":155,\"caption\":\"Caronte - Agencia de marketing\"},\"image\":{\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/carontewebstudio\\\/\",\"https:\\\/\\\/www.instagram.com\\\/caronte_studio\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@carontewebstudio\",\"https:\\\/\\\/www.youtube.com\\\/@carontewebstudio\",\"https:\\\/\\\/es.linkedin.com\\\/company\\\/carontewebstudio\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/#\\\/schema\\\/person\\\/af53223b68efd2be07f600dfc0506979\",\"name\":\"Caronte Studio\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4156e97024f8a40a8bcef2b24c0de8c6cfdd6857e2bc92e993c1a04b255e2e98?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4156e97024f8a40a8bcef2b24c0de8c6cfdd6857e2bc92e993c1a04b255e2e98?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4156e97024f8a40a8bcef2b24c0de8c6cfdd6857e2bc92e993c1a04b255e2e98?s=96&d=mm&r=g\",\"caption\":\"Caronte Studio\"},\"url\":\"https:\\\/\\\/carontestudio.com\\\/blog\\\/author\\\/caronte-studio\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programar en PHP de forma segura - Blog SEO, Dise\u00f1o WEB & Gr\u00e1fico","description":"En este art\u00edculo comentaremos c\u00f3mo programar en PHP de forma segura y que configuraciones utilizar para fortalecer nuestro sitio web.","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:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/","og_locale":"es_ES","og_type":"article","og_title":"Programar en PHP de forma segura - Blog SEO, Dise\u00f1o WEB & Gr\u00e1fico","og_description":"En este art\u00edculo comentaremos c\u00f3mo programar en PHP de forma segura y que configuraciones utilizar para fortalecer nuestro sitio web.","og_url":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/","og_site_name":"Blog de maketing | Caronte","article_publisher":"https:\/\/www.facebook.com\/carontewebstudio\/","article_published_time":"2021-07-13T11:00:00+00:00","article_modified_time":"2023-10-30T09:47:33+00:00","og_image":[{"width":1250,"height":737,"url":"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/photo_2021-07-13_11-28-27.jpg","type":"image\/jpeg"}],"author":"Caronte Studio","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Caronte Studio","Tiempo de lectura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/#article","isPartOf":{"@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/"},"author":{"name":"Caronte Studio","@id":"https:\/\/carontestudio.com\/blog\/#\/schema\/person\/af53223b68efd2be07f600dfc0506979"},"headline":"Programar en PHP de forma segura","datePublished":"2021-07-13T11:00:00+00:00","dateModified":"2023-10-30T09:47:33+00:00","mainEntityOfPage":{"@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/"},"wordCount":1391,"commentCount":0,"publisher":{"@id":"https:\/\/carontestudio.com\/blog\/#organization"},"image":{"@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/#primaryimage"},"thumbnailUrl":"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/photo_2021-07-13_11-28-27.jpg","articleSection":["Programaci\u00f3n"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/","url":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/","name":"Programar en PHP de forma segura - Blog SEO, Dise\u00f1o WEB & Gr\u00e1fico","isPartOf":{"@id":"https:\/\/carontestudio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/#primaryimage"},"image":{"@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/#primaryimage"},"thumbnailUrl":"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/photo_2021-07-13_11-28-27.jpg","datePublished":"2021-07-13T11:00:00+00:00","dateModified":"2023-10-30T09:47:33+00:00","description":"En este art\u00edculo comentaremos c\u00f3mo programar en PHP de forma segura y que configuraciones utilizar para fortalecer nuestro sitio web.","breadcrumb":{"@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/#primaryimage","url":"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/photo_2021-07-13_11-28-27.jpg","contentUrl":"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2021\/07\/photo_2021-07-13_11-28-27.jpg","width":1250,"height":737},{"@type":"BreadcrumbList","@id":"https:\/\/carontestudio.com\/blog\/programar-en-php-de-forma-segura\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/carontestudio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Programar en PHP de forma segura"}]},{"@type":"WebSite","@id":"https:\/\/carontestudio.com\/blog\/#website","url":"https:\/\/carontestudio.com\/blog\/","name":"Blog de marketing | Caronte","description":"En nuestro blog encontrar\u00e1s art\u00edculos semanales sobre SEO, marketing online, programaci\u00f3n web y mucho m\u00e1s.","publisher":{"@id":"https:\/\/carontestudio.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/carontestudio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/carontestudio.com\/blog\/#organization","name":"Caronte - Agencia de marketing","url":"https:\/\/carontestudio.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/carontestudio.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2025\/06\/caronte-agencia-de-marketing-logo.png","contentUrl":"https:\/\/carontestudio.com\/blog\/wp-content\/uploads\/2025\/06\/caronte-agencia-de-marketing-logo.png","width":1090,"height":155,"caption":"Caronte - Agencia de marketing"},"image":{"@id":"https:\/\/carontestudio.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/carontewebstudio\/","https:\/\/www.instagram.com\/caronte_studio\/","https:\/\/www.tiktok.com\/@carontewebstudio","https:\/\/www.youtube.com\/@carontewebstudio","https:\/\/es.linkedin.com\/company\/carontewebstudio"]},{"@type":"Person","@id":"https:\/\/carontestudio.com\/blog\/#\/schema\/person\/af53223b68efd2be07f600dfc0506979","name":"Caronte Studio","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/4156e97024f8a40a8bcef2b24c0de8c6cfdd6857e2bc92e993c1a04b255e2e98?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4156e97024f8a40a8bcef2b24c0de8c6cfdd6857e2bc92e993c1a04b255e2e98?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4156e97024f8a40a8bcef2b24c0de8c6cfdd6857e2bc92e993c1a04b255e2e98?s=96&d=mm&r=g","caption":"Caronte Studio"},"url":"https:\/\/carontestudio.com\/blog\/author\/caronte-studio\/"}]}},"_links":{"self":[{"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/posts\/5615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/comments?post=5615"}],"version-history":[{"count":14,"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/posts\/5615\/revisions"}],"predecessor-version":[{"id":5633,"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/posts\/5615\/revisions\/5633"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/media\/5631"}],"wp:attachment":[{"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/media?parent=5615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/categories?post=5615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/carontestudio.com\/blog\/wp-json\/wp\/v2\/tags?post=5615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}