{"id":4934,"date":"2014-10-30T12:31:34","date_gmt":"2014-10-30T10:31:34","guid":{"rendered":"https:\/\/www.hostingvirtuale.com\/blog\/?p=4934"},"modified":"2020-01-07T16:22:48","modified_gmt":"2020-01-07T15:22:48","slug":"php-sicurezza-accorgimenti-base","status":"publish","type":"post","link":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html","title":{"rendered":"PHP e sicurezza: accorgimenti di base"},"content":{"rendered":"<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-4942\" src=\"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg\" alt=\"PHP e sicurezza: accorgimenti di base\" width=\"540\" height=\"300\" srcset=\"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg 540w, https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza-300x166.jpg 300w\" sizes=\"(max-width: 540px) 100vw, 540px\" \/><\/p>\n<p>Un sistema completamente sicuro appare, fin dall\u2019inizio, virtualmente impossibile da realizzare: del resto abbiamo visto come falle tipo\u00a0<a href=\"https:\/\/www.hostingvirtuale.com\/blog\/shellshock-il-bug-della-shell-bash-nuovo-allarme-sicurezza-4755.html\">ShellShock<\/a> si sono propagate addirittura per 20 anni senza nessun tipo di segnalazione.<!--more--><\/p>\n<p>L\u2019accorgimento di sicurezza pi\u00f9 importante resta sempre quello legato al <strong>bilanciamento tra rischi ed usabilit\u00e0 del sistema<\/strong>: la regola base nella programmazione \u201c<i>keep it simple<\/i>\u201d, del resto, va a soddisfare un altro importante requisito.<\/p>\n<p>Tale requisito consente la manutenibilit\u00e0 del codice, a fronte di imporre l\u2019introduzione di dati sempre <b>corretti, completi e verificati<\/b>. Per esempio, di fronte ad un form di registrazione troppo complesso alcuni utenti tendono a <b>trovare scappatoie per aggirarlo o per inserire arbitrariamente comandi non ammessi<\/b>.<\/p>\n<p>Questi accorgimenti sono del tutto generici e si applicano indistintamente a <a href=\"https:\/\/www.hostingvirtuale.com\/joomla.php\">Joomla!<\/a>, <a href=\"https:\/\/www.hostingvirtuale.com\/wordpress.php\">WordPress<\/a> e qualsiasi altro CMS\/servizio web basato su PHP, sia che venga ospitato su <a title=\"Hosting condiviso\" href=\"https:\/\/www.hostingvirtuale.com\/webhosting.php\" target=\"_blank\" rel=\"noopener noreferrer\">hosting condiviso<\/a>,\u00a0<a href=\"https:\/\/www.hostingvirtuale.com\/vps-info.php\">VPS<\/a>,\u00a0<a href=\"https:\/\/www.hostingvirtuale.com\/server-dedicati.php\">server dedicato<\/a> o <a href=\"https:\/\/www.hostingvirtuale.com\/cloud-vps.php\">cloud<\/a>.<\/p>\n<h2><b>Code injection in PHP: la funzione eval()<\/b><\/h2>\n<p>La sicurezza di un sistema basato su PHP \u00e8 legata sempre all\u2019<strong>anello pi\u00f9 debole<\/strong> della catena che lo fa funzionare, ed \u00e8 per questo che resta fondamentale mantenere il codice semplice e manutenibile, in modo da limitare gli inevitabili <em>bug<\/em>, soprattutto in prospettiva.<\/p>\n<p>L\u2019uso della funziona <em>eval<\/em> \u00e8 uno dei rischi pi\u00f9 concreti per la sicurezza di qualsiasi webapp o sito PHP-based e questo perch\u00e8 <strong>permette l\u2019esecuzione di codice arbitrario<\/strong> mediante un qualsiasi <em>entry-point<\/em> non filtrato che l\u2019attaccante riesce a reperire.<\/p>\n<p>I due principali sono, di fatto, <strong>le caselle di testo dei form <\/strong>e a volte anche gli URL dell\u2019applicativo PHP, che possono essere veicolo di <em>code-injection<\/em> arbitraria, virtualmente molto pericolosa. Tra gli attacchi pi\u00f9 importanti e pericolosi da riconoscere ci sono quelli legati al <em>filesystem<\/em>, ovvero alla possibilit\u00e0 di manipolare file e directory riservate ed a volte addirittura di iniettare malware all\u2019interno del sistema aggirando i controlli.<\/p>\n<p>Una situazione che in genere provoca problemi \u00e8 dovuto al<strong> mancato controllo delle variabili in ingresso<\/strong>: poich\u00e8 PHP \u00e8 stato progettato per consentire l\u2019accesso a livello utente al <em>filesystem<\/em>, il linguaggio \u00e8 abiltato a leggere, scrivere e modificare qualsiasi file, modificare connessioni, inviare <a href=\"http:\/\/www.stophost.it\/blog\/come-creare-un-cron-job-e-a-cosa-serve-258.html\">cron-job<\/a> massivi e cos\u00ec via. Supponiamo di avere due variabili che prelevano il proprio valore da una POST:<\/p>\n<ul>\n<li>$username=$_POST[username];<\/li>\n<li>$userfile=$_POST[\u2018filename\u2019];<\/li>\n<li>$homedir=&#8221;\/home\/$username&#8221;;<\/li>\n<li>unlink(&#8220;$homedir\/$userfile&#8221;);<\/li>\n<\/ul>\n<p>ecco\u00a0un esempio di <strong>cattiva programmazione.<\/strong> Se un utente malintenzionato intuisce la struttura del codice sottostante, potrebbe cancellare file di sistema molto importanti, ad esempio quello delle password.<\/p>\n<p>Come spiegato nella <a href=\"https:\/\/www.php.net\/manual\/en\/security.php\">guida ufficiale<\/a>, il modo pi\u00f9 corretto e pi\u00f9 sicuro per permettere operazioni del genere \u00e8 quello di <strong>filtrare le variabili <\/strong>in ingresso con opportuni controlli (ad esempio con condizioni <em>if<\/em> ed espressioni regolari), in modo da <strong>assicurarsi che il path da cancellare sia lecito<\/strong>, oltre a loggare le operazioni perch\u00e9 ne possa restare traccia in seguito.<\/p>\n<p>Non ci sono dubbi che il codice si complicher\u00e0 leggermente, ma \u00e8 l\u2019unica reale condizione perch\u00e9 si possa parlare di codice PHP pi\u00f9 sicuro.<\/p>\n<h2><strong><b>SQL injection, un altro attacco molto diffuso<\/b><\/strong><\/h2>\n<p>Uno dei modi pi\u00f9 comuni per rubare password dei siti, inoltre, \u00e8 quello di sfruttare meccanismi di <em>SQL injection<\/em>\u00a0ed uno dei canali preferiti in questi casi sono i <em>form<\/em> di ricerca delle pagine.<\/p>\n<p>Basta anche qui che le variabili in ingresso non siano filtrate adeguatamente dal software perch\u00e9 si possa manipolare arbitrariamente il database o peggio eseguire un <em>dump<\/em> di <em>password<\/em> ed <em>username<\/em> (password che, in molti casi, non vengono neanche criptate e vengono erroneamente memorizzate in chiaro).<\/p>\n<p>Anche in questo caso \u00e8 necessario verificare che le variabili assumano la forma pi\u00f9 adatta all\u2019uso che se ne fa (ad esempio: limitare il numero di caratteri ricercabili, eliminare i tag ed i caratteri non alfabetici), restringendo cos\u00ec le opportunit\u00e0 per un attaccante di violare il sistema.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un sistema completamente sicuro appare, fin dall\u2019inizio, virtualmente impossibile da realizzare: del resto abbiamo visto come falle tipo\u00a0ShellShock si sono propagate addirittura per 20 anni senza nessun tipo di segnalazione.<\/p>\n","protected":false},"author":7,"featured_media":4942,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"twitter_97753652_97753652":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[517],"tags":[537,520],"class_list":{"0":"post-4934","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-web-hosting","8":"tag-sicurezza","9":"tag-tutorial","10":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP e sicurezza: accorgimenti di base<\/title>\n<meta name=\"description\" content=\"Un sistema completamente sicuro appare, fin dall\u2019inizio, virtualmente impossibile da realizzare. Vediamo alcuni suggerimenti per scrivere codice PHP sicuro.\" \/>\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.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP e sicurezza: accorgimenti di base\" \/>\n<meta property=\"og:description\" content=\"Un sistema completamente sicuro appare, fin dall\u2019inizio, virtualmente impossibile da realizzare. Vediamo alcuni suggerimenti per scrivere codice PHP sicuro.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html\" \/>\n<meta property=\"og:site_name\" content=\"Il blog di HostingVirtuale\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/HostingVirtuale\" \/>\n<meta property=\"article:published_time\" content=\"2014-10-30T10:31:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-01-07T15:22:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"540\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Salvatore Capolupo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@salcapolupo\" \/>\n<meta name=\"twitter:site\" content=\"@HostingVirtuale\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salvatore Capolupo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html\",\"url\":\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html\",\"name\":\"PHP e sicurezza: accorgimenti di base\",\"isPartOf\":{\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg\",\"datePublished\":\"2014-10-30T10:31:34+00:00\",\"dateModified\":\"2020-01-07T15:22:48+00:00\",\"author\":{\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/#\/schema\/person\/e8b92e4062407ad78e949a41161e6e47\"},\"description\":\"Un sistema completamente sicuro appare, fin dall\u2019inizio, virtualmente impossibile da realizzare. Vediamo alcuni suggerimenti per scrivere codice PHP sicuro.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#primaryimage\",\"url\":\"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg\",\"contentUrl\":\"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg\",\"width\":540,\"height\":300,\"caption\":\"PHP e sicurezza: accorgimenti di base\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hostingvirtuale.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP e sicurezza: accorgimenti di base\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/#website\",\"url\":\"https:\/\/www.hostingvirtuale.com\/blog\/\",\"name\":\"Il blog di HostingVirtuale\",\"description\":\"Hosting e Registrazione Domini\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hostingvirtuale.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hostingvirtuale.com\/blog\/#\/schema\/person\/e8b92e4062407ad78e949a41161e6e47\",\"name\":\"Salvatore Capolupo\",\"sameAs\":[\"http:\/\/www.salvatorecapolupo.it\",\"https:\/\/x.com\/salcapolupo\"],\"url\":\"https:\/\/www.hostingvirtuale.com\/blog\/author\/salvatore\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP e sicurezza: accorgimenti di base","description":"Un sistema completamente sicuro appare, fin dall\u2019inizio, virtualmente impossibile da realizzare. Vediamo alcuni suggerimenti per scrivere codice PHP sicuro.","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.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html","og_locale":"it_IT","og_type":"article","og_title":"PHP e sicurezza: accorgimenti di base","og_description":"Un sistema completamente sicuro appare, fin dall\u2019inizio, virtualmente impossibile da realizzare. Vediamo alcuni suggerimenti per scrivere codice PHP sicuro.","og_url":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html","og_site_name":"Il blog di HostingVirtuale","article_publisher":"https:\/\/www.facebook.com\/HostingVirtuale","article_published_time":"2014-10-30T10:31:34+00:00","article_modified_time":"2020-01-07T15:22:48+00:00","og_image":[{"width":540,"height":300,"url":"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg","type":"image\/jpeg"}],"author":"Salvatore Capolupo","twitter_card":"summary_large_image","twitter_creator":"@salcapolupo","twitter_site":"@HostingVirtuale","twitter_misc":{"Scritto da":"Salvatore Capolupo","Tempo di lettura stimato":"3 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html","url":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html","name":"PHP e sicurezza: accorgimenti di base","isPartOf":{"@id":"https:\/\/www.hostingvirtuale.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#primaryimage"},"image":{"@id":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#primaryimage"},"thumbnailUrl":"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg","datePublished":"2014-10-30T10:31:34+00:00","dateModified":"2020-01-07T15:22:48+00:00","author":{"@id":"https:\/\/www.hostingvirtuale.com\/blog\/#\/schema\/person\/e8b92e4062407ad78e949a41161e6e47"},"description":"Un sistema completamente sicuro appare, fin dall\u2019inizio, virtualmente impossibile da realizzare. Vediamo alcuni suggerimenti per scrivere codice PHP sicuro.","breadcrumb":{"@id":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#primaryimage","url":"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg","contentUrl":"https:\/\/www.hostingvirtuale.com\/blog\/wp-content\/uploads\/php-sicurezza.jpg","width":540,"height":300,"caption":"PHP e sicurezza: accorgimenti di base"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hostingvirtuale.com\/blog\/php-sicurezza-accorgimenti-base-4934.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hostingvirtuale.com\/blog"},{"@type":"ListItem","position":2,"name":"PHP e sicurezza: accorgimenti di base"}]},{"@type":"WebSite","@id":"https:\/\/www.hostingvirtuale.com\/blog\/#website","url":"https:\/\/www.hostingvirtuale.com\/blog\/","name":"Il blog di HostingVirtuale","description":"Hosting e Registrazione Domini","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hostingvirtuale.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.hostingvirtuale.com\/blog\/#\/schema\/person\/e8b92e4062407ad78e949a41161e6e47","name":"Salvatore Capolupo","sameAs":["http:\/\/www.salvatorecapolupo.it","https:\/\/x.com\/salcapolupo"],"url":"https:\/\/www.hostingvirtuale.com\/blog\/author\/salvatore"}]}},"_links":{"self":[{"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/posts\/4934","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/comments?post=4934"}],"version-history":[{"count":0,"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/posts\/4934\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/media\/4942"}],"wp:attachment":[{"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/media?parent=4934"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/categories?post=4934"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostingvirtuale.com\/blog\/wp-json\/wp\/v2\/tags?post=4934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}