giovedì 21 marzo 2019

Il prigioniero coreano

Il prigioniero coreano é un film del 2016 diretto da Kim Ki-duk, con Ryoo Seung-Bum, Lee Won-Geun, Choi Gwi-Hwa, Jo Jae-Ryong, Won-geun Lee.

Il prigioniero coreano

Trama

Nam Chul-woo è un povero pescatore Nordcoreano che ogni giorno lascia la sua famiglia per andare con la sua barca in cerca di pesce.
Nam vive in una zona molto particolare della Corea del Nord, in un luogo ai confini con la loro acerrima nemica Corea del Sud.
Uno sfortunato giorno, Nam Chul-woo ha un problema con il motore della barca e finisce per naufragare in Sudcorea, venendo subito catturato ed interrogato.
Qui nella Corea del Sud, a Nam verrà chiesto con tutti i mezzi di restare, ma l'unico scopo del pescatore sarà quello di voler tornare dalla sua famiglia al Nord.


Recensione

Il prigioniero coreano (The net - Geumul) è un film drammatico del 2016.
Questa pellicola, prodotta dalla Corea del sud, nonostante possa subito far pensare che sia propagandistica e di parte, stupisce con la sua imparzialità.
Il protagonista del film infatti, si viene mostrato come uno schiavo represso in un paese dettato da leggi dure e severe, ma allo stesso tempo, nel film viene mostrata anche l'altra faccia della medaglia, la Corea forse troppo consumistica, che sotto sotto, se si guardano i vari giochi politici, non è poi così tanto diversa da quella del Nord in quanto a severità e violazione dei diritti umani.
O almeno questo è quello che viene mostrato nel film, chi lo sa poi nella realtà quale sia la verità.
Comunque otttimo film questo "Il prigioniero coreano", complimenti al regista Kim Ki-duk.

mercoledì 20 marzo 2019

Leggi il post

Tre barzellette divertenti 2019

Tre simpatiche barzellette divertenti:

La bigliettaia di un cinema urla spaventata perché un cane al botteghino le ha chiesto di poter acquistare un biglietto: 
- "Caspiterina, un cane che parla!"
- "Non si preoccupi signora, in sala non dirò neanche una parola!"

Due fidanzati stanno litigando: 
- "Non mi sposerò mai con un uomo tirchio come te, rieccoti l'anello!
Ed il fidanzato risponde:
- "Si brava, ed il cofanetto che fine ha fatto?"


Siamo in tribunale, il cancelliere si rivolge al giudice:
- "Vostro onore qui fuori c'è una gallina!"

Così il giudice domanda:
- "E che cosa ci fa qui?"
Ed il cancelliere replica:
- "Credo che si venuta a deporre!"

martedì 19 marzo 2019

Il ragazzo che catturò il vento

Il ragazzo che catturò il vento è un film drammatico del 2019 diretto da Chiwetel Ejiofor, con  Chiwetel Ejiofor, Joseph Marcell, Aïssa Maïga, Noma Dumezweni, Lemogang Tsipa, Maxwell Simba, Kelvin Maxwell Ngoma.

Il ragazzo che catturò il vento
Trama

Siamo nel 2001 in Africa, a Malawi.
I villaggi di quella regione sono martoriati continuamente dal clima, che danneggia il raccolto prima con forti acquazzoni, poi con lunghi periodi di carestia.
In questo difficile contesto vive il giovanissimo William Kamkwamba con la sua famiglia.
Il padre di William è un agricoltore, mentre la sua sorella più grande è in cerca di un lavoro per poter andare all'università.
William inizia la scuola nonostante le difficoltà finanziare della propria famiglia, mostrando subito un'incredibile passione e capacità per quanto riguarda la scienza.

Recensione

Il ragazzo che catturò il vento è un film drammatico / biografico del 2019.
Questa pellicola parla della vera storia di William Kamkwamba, un ragazzino che grazie alla sua passione per la scienza, scoprirà un innovativo metodo per risolvere un grosso problema del suo villaggio.
Non vado più nel dettaglio per non spoilerare, ma ovviamente nel caso servano maggiori dettagli sulla storia di questo geniale ragazzino, è tutto documentato su internet.
Tornando invece al film vero e proprio, ci troviamo davanti ad una storia davvero toccante, ed anche purtroppo abbastanza attuale, ottimamente raccontata ed interpretata da attori molto azzeccati nel loro ruolo.
Se si è in cerca di un film drammatico e di una storia vera con morale, "Il ragazzo che catturò il vento" è il film adatto allo scopo.

Link alla scheda del film su wikipedia

lunedì 18 marzo 2019

Blu profondo 2

Deep Blue Sea 2 é un film del 2018 diretto da Darin Scott, con Danielle Savre, Rob Mayes, Michael Beach, Nathan Lynn, Kim Syster, Jeremy Boado, Adrian Collins, Cameron Robertson, Darron Meyer.

blu profondo 2

Trama

Carl Durant è brillante e ricco miliardario dell'industria farmaceutica che conduce degli esperimenti al limite del legale sugli squali toro.
Durant nella sua piattaforma marina utilizza dei particolari farmaci per manipolare l'intelligenza degli squali, rendendoli più aggressivi e svegli del normale.
Per farsi aiutare nella sua ricerca, Durant chiama diversi esperti sulla sua base, dietro un irresistibile compenso economico.
Quella che però era poco più che un esperimento scientifico, si tramuta presto in una trappola mortale, quando si squali intelligenti iniziano a pensare alla loro fuga.


Recensione

Blu profondo 2 (Deep Blue Sea 2) è un film d'azione / drammatico del 2018.
Questo film è il seguto del primo blu profondo, che tra l'altro mi era piaciuto davvero molto per la trama e per i protagonisti.
Inutile dire che purtroppo questo sequel è alquanto deludente.
Prima di tutto non c'è più l'effetto originalità della storia, dato che semplicemente si replica abbastanza fedelmente il format originale.
Poi i protagonisti di questo seguito sono davvero dei personaggi senza alcun feeling e con discutibili capacità recitative.
Aggiungiamoci infine che la trama fa abbastanza acqua in quanto a credibilità, che gli effetti speciali sono peggiorati, ed ecco che "blu profondo 2" va ad allungare la giù lunga lista di film trash sugli squali.

domenica 17 marzo 2019

Leggi il post

L'arresto del latitante (barzelletta)

Una simpatica barzelletta sui carabinieri:

Ci sono due carabinieri che stanno percorrendo un lungo tunnel in autostrada. 
Ad un certo punto riconoscono su una Panda un famosissimo latitante pluri ricercato.
I due carabinieri allora, fanno accostare subito l'auto e mettono in manette l'uomo, che non oppone la minima resistenza. 
Dopo chiamano il capitano per riferirgli della loro impresa, ma lo avvisano che non possono portare via l'uomono e che sono bloccati nel tunnel.
Il capitano, sorpreso, gli chiede:

- "Come mai non potete portare il criminale al comando?"
Ed i due carabinieri rispondono:
- "Perchè all'inizio della galleria c'era scritto: 'in caso di arresto spegnere il motore'!"

sabato 16 marzo 2019

Leggi il post

Due brevi barzellette

Due brevi barzellette.
Due freddure per ridere con dei semplici e forse un po' stupidi giochi di parola:

- Che cosa fa una mucca di legno?
- Il latte compensato!


- Come si chiama la più ricca ereditiera italiana?
- EMILIA ARDARIA!


lol

venerdì 15 marzo 2019

Come creare un sito PHP sicuro


Se si sviluppano siti internet utilizzando il php, uno degli aspetti che sicuramente bisogna prendere in considerazione è quello riguardante la sicurezza.
Molti siti web infatti, pur risultando gradevoli da vedere e comodi da utilizzare, potrebbero essere violabili da parte dei malintenzionati, i quali potrebbero addirittura entrare in possesso delle credenziali degli utenti del sito, o peggio ancora di quelle degli amministratori.

In questo tutorial, che aggiornerò man mano che scoprirò metodi più performanti per aumentare la sicurezza di un sito internet, andrò ad indicare tutte le best practice da applicare per poter avere siti php sicuri ed inviolabili... o quantomeno per aumentarne il grado di sicurezza, dato che si usa spesso dire che non esiste in natura niente che prima o poi non possa venir violato.

Iniziamo dunque con l'elenco delle attività da svolgere a livello di programmazione, ma anche di configurazione del php.ini o di apache / nginx, o di database mysql, per poter proteggere un sito web fatto in php ed aumentare il livello generale di sicurezza informatica.



1) Controllare le variabili prima di fare le query


Se il proprio sito internet deve poter dialogare con un database, che sia mysql, oracle, sql server, o qualsiasi altro db, occorre fare il parsing delle variabili che si passano nelle query.
La maggior parte dei siti internet infatti, utilizza query dinamiche, con una parte di condice sql scritto in maniera fissa, al quale vengono passate 1 o più variabili, magari ricevute da una form (metodo POST) o da una url (metodo GET).

Per prevenire quello che viene chiamato sql injection occorre dunque, prima di eseguire una query sul database, controllare le variabili che gli vengono passate.
Questo perchè se un malintenzionato modifica a mano una variabile inserendo un apice ('), questa variabile può generare un errore nella query, e da lì il malintenzionato può capire che è possibile scrivere e far eseguire (utilizzando la giusta sintassi) del codice sql, andando addirittura a leggere o peggio ancora a cancellare l'intero database.

Per proteggersi dall'sql injection quindi, bisogna controllare tutte le variabili che vengono passate ad una query.
Nel caso di numeri interi, basta convertirli con la funzione intval, altrimenti bisogna aggiungere uno slash agli apici presenti nella variabile, tramite la funzione php addslashes.

Ecco un esempio di query sicura:

$sql="SELECT var FROM tabella WHERE var1=".intval($var1)." AND var2='".addslashes($var2)."'";



2) Controllare le variabili prima di stamparle a video


La seconda regola fondamentale da rispettare per evitare problemi con il proprio sito web, è quella di controllare le varabili prima di stamparle a video, soprattutto quelle che ci vengono fornite tramite browser.
Per evitare infatti di incappare nella vulnerabilità nota come Cross-Site Scripting (XSS), che consiste nella possibilità da parte di malintenzionati di far eseguire involontariamente all'utente del codice (tipicamente javascript), occorre parsare le variabili prima di stamparle a video.

In questo caso specifico, quello che vogliamo evitare è che venga eseguito dell'html in variabili che di fatto non contemplano l'html, quindi basta utilizzare la funzione htmlentities per rendere ineseguibile qualsiasi script a livello di browser.

Se poi la variabile in questione contempla l'html, magari possiamo decidere di far sparire solo qualche tag specifico, come lo <script>, con una semplice str_replace.

Ecco un'esempio pratico di queste due funzioni all'opera:

<?php
    $var1="<script>alert('ciao');</script>";
    $var1=htmlentities($var1);
    $var2="<script>alert('ciao 2');</script>";
    $var2=str_replace("<script>","",$var2);
    $var2=str_replace("</script>","",$var2);
    echo "$var1 $var2";
?>



3) Criptare le password salvate nel database


Sia per via della terribile GDPR, ma anche in generale in meri termini di sicurezza informatica, non bisogna mai salvare le password in chiaro nel database.
A livello di php quindi, prima di salvare su mysql una password, occorre convertirla con qualche apposito algoritmo.
Così facendo, un malintenzionato che entrerà in qualche modo in possesso delle credenziali del nostro database, non potrà in alcun modo conoscere le password d'accesso memorizzate nel db.

Se poi vogliamo complicare ulteriormente la vita agli hacker (o forse crackers è meglio), prima di generare la nostra password criptata, possiamo aggiungere un valore random alla parola segreta scelta dall'utente, in modo che nessuno possa mai risalire alla password, anche se in possesso di un database di password criptate con cui fare bruteforce.

Questo secondo metodo si chiama salt, mentre la funzione per criptare le password in php è la crypt.
La funzione crypt può essere utilizzata scegliendo vari algoritmi di criptazione, come ad esempio: DES, MD5, SHA-256 e SHA-512.

Ecco un semplice esempio di generazione di password criptata con il php:

<?php
    $password="pippo";
    $salt=rand(10000,99999);
    $password=crypt($password,$salt);
    echo $password;
?>



4) Cambiare la chiave di sessione dopo la login


Un errore comune e forse meno noto, quindi potenzialmente sfruttabile da qualche malintenzionato, è quello di non far rigenerare un nuovo valore di chiave di sessione dopo la login ad un sito php.
Questa problematica, nota come Session Fixation, può essere sfruttata dai malintenzionati che hanno accesso allo stesso pc della persona che si logga con la nostra applicazione, oppure da chi ha accesso alla rete ed è in grado di utilizzare la tecnica nota come Man-in-the-Middle.

Praticamente funziona così.
Quando si prova ad accedere ad un sito web verificando il valore di una sessione, il php genera in maniera random il cosiddetto PHPSESSID.
Purtroppo però, quando si effettua la login, questo valore di default non viene rigenerato, quindi se qualche malintenzionato riesce ad ottenere questo valore semplicemente aprendo (dal pc della vittima) l'applicazione senza loggarsi, quando poi questa si logga, il malintenzionato può usare questo session id per risultare loggato con le credenziali della vittima.

Per evitare questa (abbastanza remota) problematica, basta rigenerare il sessionid dopo ogni login, in modo tale che nessuno possa sapere il valore della nostra sessione.
Per fare ciò in php basta utilizzare la funzione session_regenerate_id.

Ecco un esempio pratico di come rigenerare una sessione php:

<?php
    session_start();
    echo session_id();
    session_regenerate_id();
    echo "<br>".session_id();
?>



5) Abilitare l'https


Ormai è una cosa che si da per scontata la connessione sicura su un sito web.
Quello che bisogna fare per attivare l'https su un sito è innanzitutto acquistare un certificato ssl da installare sul server, oppure cercarne uno gratuito online.
Una volta entrati in possesso del certificato, bisogna copiare i file necessari sul server e configurare apache (o nginx, o iis) in modo tale che il sito in prima battuta faccia in automatico la redirect dall'http all'https.
Ecco un esempio di configurazione del file httpd-vhosts.conf:

<VirtualHost *:80>
    ServerName sito.it
    ServerAlias sito.it
    Redirect / https://sito.it/
    <Directory  "C:\wamp64\www\sito">
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Adesso bisogna andare a modificare il file httpd-ssl.conf (tipicamente nel percorso conf/extra), ad esempio in questo modo:

<VirtualHost *:443>
    ServerName sito.it
    ServerAlias sito.it
    SSLEngine On
    SSLCertificateFile C:\percorso\certificato.crt
    SSLCertificateKeyFile C:\percorso\chiave-certificato.key
    DocumentRoot C:\wamp64\www\sito

    <Directory  "C:\wamp64\www\sito">
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>


Abilitando l'https tra l'altro, si evita che il browser dica all'utente che il sito non è sicuro, messaggio non propriamente incoraggiante.


6) Proteggere i cookie e le sessioni


Per evitare / ridurre il rischio che qualche aggressore possa intercettare e manipolare cookie e sessioni, è bene abilitare due attributi del php, l'attributo Secure e l'attributo HttpOnly.
Il primo attributo implica che il cookie può essere trasmesso solo tramite un canale di comunicazione sicuro (es. l'https, che quindi va preventivamente abilitato sul sito), riducendo così il rischio che sia intercettato da parte di un malintenzionato in grado di monitorare il traffico di rete.
Il secondo attributo invece, impedisce al codice client-side, tipo il javascript, di accedere al contenuto del cookie, impedendo così che un eventuale codice malevolo possa rubare dati sensibili, riducendo così il rischio di furto della sessione tramite Cross-Site Scripting (XSS).

Entrambi questi attributi possono essere abilitati direttamente dal php.ini, andando a proteggere le sessioni ed in particolare il cookie legato al PHPSESSID, semplicemente settando queste righe:

session.cookie_secure = 1
session.cookie_httponly = 1

Se invece si vuole assegnare questi attributi anche ai cookie generici, basta farlo direttamente quando si crea il cookie con il php, con questa sintassi:

setcookie("nome-cookie","valore",strtotime("+1 year"),"","",true,true);

Gli attributi Secure e HttpOnly sono rispettivamente, il penultimo e l'ultimo valore settato nel cookie, che in questo caso sono semplicemente indicati a true.
Grazie a questa accortezza si riduce il rischio di session hijacking.


7) Utilizzare password sicure


Dando per scontato che lato amministrativo si utilizzino solo password complesse, bisognerebbe anche muoversi per sensibilizzare l'utente finale sull'importanza di avere delle password d'accesso robuste.
Questo potete farlo lato codice, obbligando gli utenti a scegliere password sicure, che rispettano i seguenti requisiti:
  1. Lunghezza di almeno 8 caratteri
  2. La password deve contenere sia numeri che lettere
  3. La password deve contenere almeno un carattere speciale
  4. La password deve avere almeno una maiuscola

Se tutti gli utenti utilizzassero questi criteri quando impostano la loro password personale, i malintenzionati di turno farebbero molta più fatica a rubare le credenziali alla gente, anche con il terribile bruteforce.

Volendo poi esagerare, lato codice si potrebbe far scadere la password d'accesso ogni 3/6 mesi, obbligando l'utente a cambiarla all'accesso.
Se poi avete rispettato la best practice di non salvare le password in chiaro nel database, ed avete usato un buon algoritmo di criptazione più il salt, allora potete stare ancora più tranquilli.


8) Abilitare i controlli con il CAPTCHA


Inserire la richiesta del CAPTCHA dopo enne volte che si sbaglia ad inserire la password è un qualcosa di ormai obbligatorio per combattere tentativi di forzatura della sicurezza tramite bruteforce.
Ci sono diversi siti che offrono il servizio di sicurezza CAPTCHA, il più famoso è sicuramente quello fornito da google, il famigerato recaptcha (https://www.google.com/recaptcha/).

Questo sistema può essere installato/configurato in modo che sia più o meno invasivo.
C'è infatti la versione che richiede solo la classica spunta alla voce "non sono un robot", oppure quella in cui ci viene chiesto di cliccare sulle strisce pedonali.
La modalità in cui viene chiesto di compiere delle azioni può essere più o meno invasiva a seconda dei casi, il mio consiglio è quello di posizionarsi in una via di mezzo, senza disturbare troppo l'utente finale con click eccessivi.

Il controllo tramite codice CAPTCHA tra l'altro, può essere inserito anche nelle form d'iscrizione, o in tutte quelle pagine in cui viene chiesto di compiere un'azione all'utente.
Se ad esempio si imbastisce un controllo che, dopo enne richieste nel giro di poco tempo da parte dello stesso indirizzo ip, richiede la verifica CAPTCHA, questo può aiutare a verificare se ci si trova davanti ad un attacco bot, e può ad esempio servire a mettere al riparo il nostro database da un inserimento massivo di dati indesiderati, o anche a non essere sommersi da email di spam provenienti dai nostri stessi form di contatto.


Il tema della sicurezza informatica, aka cyber security è sicuramente molto importante per chiunque sviluppi appicazioni web, che si utilizzi il php o anche qualsiasi altro linguaggio di sviluppo.
Occorre dunque non mostrare mai il fianco al cyber crime, anche perchè la GDPR ormai impone di rispettare alcuni requisiti minimi di sicurezza, altrimenti si rischia pure di non essere a norma di legge.

giovedì 14 marzo 2019

Leggi il post

Sempre sui carabinieri (barzellette)

Altre due barzellette sui carabinieri.
Freddure esilaranti sui cc:

- Sapete perché i carabinieri si portano sempre il pallone dietro?
- Perché se rimangono a piedi con l'auto, poi se ne tornano a passaggi.


- Perché mai un carabiniere rimane fisso per ore davanti ad uno scaffale del supermercato?
- Perché su alcuni prodotti c'è scritto "CONCENTRATI"!


lol 

mercoledì 13 marzo 2019

Leggi il post

Carabinieri e barzellette

Carabinieri e barzellette, ovvero, due barzellette divertenti sui Carabinieri (CC).
Risate vecchio stile:

- Come fa un carabiniere a rompersi una gamba rastrellando le foglie?
- Cadendo dall'albero!


- Perché quando ai carabinieri si ferma la macchina di servizio, questi scendono, estraggono la pistola e sparano al motore?
- Per non far soffrire i cavalli!

martedì 12 marzo 2019

Drugstore Cowboy

Drugstore Cowboy è un film drammatico del 1989 diretto da Gus Van Sant, con Matt Dillon, Kelly Lynch, James LeGros, Heather Graham, Max Perlich, William S. Burroughs, James Remar.

Drugstore Cowboy

Trama

Siamo nei primi anni '70 a Portland, Oregon.
Bob è un giovane tossicodipendente che vive in un quartiere disagiato e che ha una banda di amici con la sua stessa passione per la droga.
Per potersi permettere la droga, Bob ed i suoi amici commettono furti di varia natura, soprattutto nelle farmacie.
La banda di Bob solitamente usa dei metodi ingegnosi per rapinare le farmacie dei loro preziosi prodotti, in modo tale da non dover far ricorso alla violenza.
Il mondo della droga è però un ambiente pericoloso, e presto per il gruppo arriveranno dei seri problemi da risolvere.


Recensione

Drugstore Cowboy è un film drammatico del 1989 con protagonista Matt Dillon, che parla dello spinoso tema della droga e dei tossicidipendenti.
I drogati infatti, non riescono a smettere di assumere sostanze stupefacenti costose, e questo li obbliga a trovare soldi, anche adoperando i mezzi più meschini.
Inutile dire che in questo genere di film non c'è mai un lieto fine al cento per cento, e le vite dei vari personaggi sono sempre in bilico e pronte a cadere.
Se siete dunque appassionati di film sulla droga, Drugstore Cowboy è un'ottima pellicola sul tema.

Link alla scheda del film su wikipedia