{"id":7329,"date":"2017-01-27T12:06:38","date_gmt":"2017-01-27T06:36:38","guid":{"rendered":"https:\/\/www.carmatec.com\/?p=7329"},"modified":"2022-08-08T05:08:44","modified_gmt":"2022-08-08T05:08:44","slug":"tips-develop-secured-applications-php","status":"publish","type":"post","link":"https:\/\/www.carmatec.com\/it\/blog\/suggerimenti-per-sviluppare-applicazioni-protette-php\/","title":{"rendered":"Suggerimenti per sviluppare applicazioni protette in PHP"},"content":{"rendered":"
PHP \u00e8 uno dei linguaggi di programmazione pi\u00f9 popolari per il web. Aiuta gli sviluppatori a programmare le migliori applicazioni e a creare nuovi parametri di riferimento nello sviluppo mobile e web. Tuttavia, la preoccupazione pi\u00f9 grande nello sviluppo di un'applicazione PHP \u00e8 quella della sicurezza, rendendo lo sviluppo di applicazioni PHP sicure una sfida importante, soprattutto per i dilettanti. In questo articolo ti forniremo 3 suggerimenti importanti che ti aiuteranno a evitare alcune trappole comuni nella sicurezza e nello sviluppo di PHP.<\/p>\n
La segnalazione degli errori dell'applicazione \u00e8 molto utile durante il processo di sviluppo. I rapporti sugli errori non solo ti aiutano a trovare errori di ortografia nelle variabili, ma anche a individuare qualsiasi utilizzo errato delle funzioni.<\/p>\n
Tuttavia, una volta che il sito web \u00e8 attivo, gli stessi rapporti che ti hanno aiutato durante lo sviluppo possono ritorcersi contro la sicurezza della tua applicazione dicendo agli utenti molto di pi\u00f9 sul tuo sito web di quanto vorresti che sapessero (ad esempio le informazioni relative al software in esecuzione, la struttura delle cartelle, ecc.). Prima che il sito Web venga pubblicato, \u00e8 necessario assicurarsi di eliminare tutti questi errori per mantenere nascoste tali informazioni sensibili. Questo pu\u00f2 essere fatto scrivendo le seguenti righe sulle nostre applicazioni.<\/p>\n
Per eventuali errori ancora presenti, sentiamo comunque il bisogno di rimanere aggiornati al riguardo. Quindi, dobbiamo assicurarci che tutti i nostri errori vengano registrati in un file protetto, cosa che pu\u00f2 essere eseguita utilizzando una funzione PHP chiamata set_error_handler.<\/p>\n
Fin dagli albori di PHP, i progettisti di PHP hanno regolarmente incluso alcune funzionalit\u00e0 intese a semplificare lo sviluppo. O almeno hanno pensato di renderlo tale! Alcune di queste funzionalit\u00e0 apparentemente utili potrebbero anche rivelarsi avere conseguenze indesiderabili. Le chiamiamo "caratteristiche negative" perch\u00e9 consentono la convalida dei dati e creano un percorso affinch\u00e9 i bug possano trovare la loro strada negli script. Questo \u00e8 il motivo per cui ti suggeriamo di disabilitare alcune di queste funzionalit\u00e0 come una delle prime cose da fare al momento di iniziare il processo di sviluppo.<\/p>\n
Nota: queste funzionalit\u00e0 potrebbero essere disattivate o meno per il tuo sito web in base al tuo host. Se stai sviluppando sul tuo computer o su un altro ambiente locale simile, probabilmente questi non verranno disattivati. Alcune di queste funzionalit\u00e0 sono state eliminate in PHP6, ma sono ancora presenti nelle applicazioni PHP4 e alla fine saranno deprecate dalle applicazioni PHP5 in poi.<\/p>\n
Registra valori globali (register_globals)<\/code><\/pre>\n'register_globals'<\/strong> era fondamentalmente pensato per aiutare lo sviluppo rapido di applicazioni che coinvolgevano una stringa di query. IL 'register_globals'<\/strong> ci consente di accedere al valore con $var<\/strong> invece di $_GET['var']<\/strong> automaticamente. Questo potrebbe sembrarci utile, ma sfortunatamente tutte le variabili nel codice ora includono questa propriet\u00e0, quindi ora \u00e8 facile entrare in applicazioni PHP che non proteggono da tali conseguenze indesiderate. Lo snippet di codice seguente \u00e8 solo un esempio comune che vedremo negli script PHP:<\/p>\nif( !empty( $_POST['nome utente'] ) && $_POST['nome utente'] == 'test' && !empty( $_POST['password'] ) && $_POST['password'] == \u201ctest123\u201d )
\n{
\n$accesso = vero;
\n}<\/p>\n
Se l'applicazione \u00e8 in esecuzione con Register_globals ON, un utente potrebbe semplicemente inserire access=1 in una stringa di query e avere quindi accesso a qualunque cosa lo script sia in esecuzione. Anche se non \u00e8 possibile disabilitare Register_globals dal lato dello script (usando ini_set, come nel caso normale), ma a questo scopo \u00e8 possibile utilizzare un file .htaccess. Oltre a questo, alcuni host ci consentono di avere anche un file php.ini sul server per fare questo.<\/p>\n
Disabilitare con .htaccess<\/strong><\/p>\nphp_flag registro_globali 0<\/code><\/pre>\nDisabilitare con php.ini<\/strong><\/p>\nRegister_globals = Disattivato<\/code><\/pre>\nVa notato che se intendiamo utilizzare un file php.ini personalizzato che non \u00e8 applicabile all'intero server, dobbiamo assicurarci di includere queste dichiarazioni in ogni sottocartella che contiene PHP.<\/p>\n
Suggerimento 3: tieni d'occhio gli attacchi Cross Site Scripting (XSS) nell'input dell'utente<\/h3>\n
Un'applicazione Web generalmente accetta input dagli utenti per visualizzare eventualmente lo stesso in una forma o nell'altra che pu\u00f2 essere una qualsiasi dell'ampia variet\u00e0, inclusi commenti, post di blog o thread che sono tutti fondamentalmente sotto forma di codice HTML. Tuttavia, \u00e8 interessante notare che pu\u00f2 essere rischioso per la tua applicazione consentire l'HTML al momento di accettare input, poich\u00e9 ci\u00f2 lascia ampio spazio affinch\u00e9 JavaScript venga eseguito in uno dei tanti modi inaspettati. E questo permette anche che i cookie vengano facilmente dirottati se anche qualcosa di veramente piccolo rimane incustodito. I dirottatori possono quindi facilmente utilizzare i dati di questi cookie per falsificare un account reale e ottenere un accesso illegale ai dati del tuo sito web. Puoi proteggere il tuo sito web da tali attacchi disabilitando del tutto l'HTML e, alla fine, disabilitando anche l'esecuzione di JavaScript. Questa, tuttavia, potrebbe non essere sempre un'opzione fattibile poich\u00e9 disabilita del tutto anche la formattazione, di cui potrebbe non essere possibile fare a meno, soprattutto nel caso di un blog o di un forum.<\/p>\n
Per risolvere questo problema, puoi disabilitare gran parte del codice HTML, ad eccezione di alcune semplici formattazioni consentite. Ci\u00f2 pu\u00f2 essere ottenuto consentendo solo alcuni tag HTML selezionati (senza attributi), ad esempio il tag "strong" o il tag "em". Oppure semplicemente alcuni tag popolari come "BBCode" o "BB Tags" che vengono comunemente scritti sui forum nel formato [b]test[\/b]. Il BBCode pu\u00f2 anche essere implementato utilizzando pacchetti preesistenti come HTML_BBCodeParser o scrivendo la nostra implementazione del BBCode con espressioni regolari e una serie di istruzioni 'preg_replace'.<\/p>\n
Riferimento: http:\/\/www.sks.com.np\/basic-security-vulnerabilities-in-php-code\/<\/a><\/p>\nCome leader Societ\u00e0 di sviluppo PHP<\/a> , Carmatec<\/a> offerte dall'inizio alla fine Sviluppo PHP<\/a> soluzioni basate su tecnologie all'avanguardia, sia front-end che back-end. Oltre allo stile e al design contemporanei, lavoriamo per mantenere le interfacce semplici e facili da usare. La facilit\u00e0 d'uso \u00e8 il nostro obiettivo anche nelle funzionalit\u00e0 complesse del sito web.<\/p>","protected":false},"excerpt":{"rendered":"PHP is one of the most popular programming languages for the web. It helps the developers program the finest of applications and create new benchmarks in mobile and web development. However, the biggest concern with developing a PHP application is that of security, making the development of secured PHP applications a major challenge, specially, for […]<\/p>","protected":false},"author":1,"featured_media":29490,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,19],"tags":[],"class_list":["post-7329","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-php-development"],"_links":{"self":[{"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/posts\/7329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/comments?post=7329"}],"version-history":[{"count":1,"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/posts\/7329\/revisions"}],"predecessor-version":[{"id":29491,"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/posts\/7329\/revisions\/29491"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/media\/29490"}],"wp:attachment":[{"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/media?parent=7329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/categories?post=7329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.carmatec.com\/it\/wp-json\/wp\/v2\/tags?post=7329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}