Guida sicurezza PHP

Con questa guida si intende fornire un contributo su alcune questioni legate alla sicurezza nello scrivere codice PHP e tecnologie correlate, riferendosi sia a semplici siti Web sia a vere e proprie applicazioni "over-HTTP", di moda e sempre in aumento in quanto a numeri ed importanza.

Le problematiche di sicurezza devono essere tenute in considerazione sin dal principio, in sede di progetto: correggere nel seguito errori fatti precedentemente potrebbe rivelarsi costosissimo. Inoltre va detto che la sicurezza spesso si scontra con l'usabilità di un programma - ciò che nessuno ammette è che, in fin dei conti, per come viene usato un sistema informatico dagli utenti, la troppa sicurezza è nemica di se stessa.. In generale (ma molto in generale), più un programma è sicuro più è restrittivo e meno è usabile. Si deve sapere con esattezza a cosa un programma dovrà servire, sin dall'inizio. È bene tenerlo a mente.
Leggi la guida

Escaping php dei comandi di sistema

escapeshellarg

escapeshellarg() è stata concepita per effettuare l'escape (o "quoting" o più semplicemente "delimitazione tra apici") di una stringa da utilizzare come argomento per un istruzione da inviare tramite shell; in pratica questa funzione non fa altro che aggiungere dei singoli apici all'inizio e alla fine di una stringa e consente di effettuare l'escape di eventuali apici singoli preesistenti, in questo modo l'utilizzatore avrà la possibilità di passare una stringa resa sicura direttamente ad un'istruzione da inviare tramite terminale. Utilizzare escapeshellarg() è molto semplice:
// $_POST['cartella'] = '/var/www/website';
$cartella = $_POST['cartella'];
system('ls -t '.escapeshellarg($cartella)); 

Nell'esempio proposto, il contenuto della variabile $cartella verrà concatenato al comando ls -t all'interno dell'istruzione dopo l'escape operato dalla funzione escapeshellarg(), in modo che esso risulti sicuro nel momento in cui viene passato a system().

escapeshellcmd

escapeshellcmd() ha invece un compito diverso, essa infatti è stata concepita per effettuare l'escape dei metacaratteri (caratteri che in una stringa rappresentano insiemi di altri caratteri o anche delle sequenze di caratteri) da un parametro utilizzabile come argomento per un'istruzione da terminale. In pratica si tratta di una funzione che effettua l'escape di qualsiasi carattere presente in una stringa che possa essere utilizzato per alterare l'esecuzione di un'istruzione introducendo comandi arbitrari.
Anche l'utilizzo di questa funzione è estremamente semplice:
// $_POST['sorgente'] = '/home/immagini_2009';
// $_POST['destinazione'] = '/home/archivo/immagini';
$sorgente = $_POST['sorgente'];
$destinazione = $_POST['destinazione'];
$i= exec(escapeshellcmd('cp -r '. $sorgente . ' ' . $destinazione'));

Nell'esempio proposto, tutti i parametri inviati tramite input dell'utente subiscono il quoting dovuto alla funzione escapeshellcmd() prima di essere passati come argomenti a exec() ed entrare quindi a far parte dell'istruzione da terminale.

Sylights! - Create your lighting diagrams

Create
We provide you with a unique tool to design and annotate your diagrams online.

Share
Submit your diagrams to the community. Show your work, discuss it, improve it!

Discover
Explore others’ work, see how creative they are. You might find some inspiration here!

Help
We’ve all been beginners. Give advice to those who are just starting out.
http://www.sylights.com/

Amarino - Android meet Arduino

Normally smartphone events are tightly coupled to your phone device itself. When your cell phone is ringing, your phone speaker plays a ringtone. When you get a new text message, your phone displays it on its screen. Wouldn't it be thrilling to make thoses phone events visible somewhere else, on your wearable, in your living room, on your robot, in your office or where ever you want it to occur? Or would you like to use your smartphone sensors, like the accelerometer, light sensor, compass or your touchscreen to control other devices? 'android meets arduino' is a toolkit, basically consisting of an Android application and an Arduino library which will help you to interface with your phone in a new dimension. You can build your own interfaces almost without any programming experience.
http://www.amarino-toolkit.net/