Abbonati al feed o alla newsletter,
ovviamente è gratis.
Visualizzazione post con etichetta Opensource. Mostra tutti i post
Visualizzazione post con etichetta Opensource. Mostra tutti i post

PHP - Sicurezza: Captcha e le macchine ribelli!

Quasi sicuramente avete sentito parlare di captcha e di codici di sicurezza, questi possono essere richiesti durante il commento di un articolo o durante la registrazione, altri li ho visti applicare anche al login.

Di fatto, si rendono - ahimè - necessari tutte le volte che subiamo degli attacchi da pc ... sisi avete capito bene si potrebbe quasi dire "Captcha e le macchine ribelli"!!

Allora solitamente questo è una immagine con delle lettere sopra, solitamente con scritta distorta, con un angolatura o degli elementi sopra per disturbarne l'acquisizione e la "lettura" da un pc.

Visto che ultimamente ne ho scritto uno molto semplice in PHP che mi sembra funzioni bene ve lo propongo, naturalmente in rete ne trovate a centinaia.

Prima di tutto dobbiamo creare una classe, ad esempio captcha.php (evviva la fantasia) dove possiamo inserire il codice di creazione dlel'immagine:

<?php
while (@ob_end_clean());
ob_start();

session_start();

$secureimg['imagetype'] = "JPG";        // tipo di immagine, supporta JPG, PNG e GIF
$secureimg['image'] = "code_bg.jpg";    // nome del file immagine (compresa estensione)
$secureimg['size']    = "28";             // dimensione del font
$secureimg['length']= "5";              // numero caratteri del codice di sicurezza
$secureimg['angle']    = "4";              // angolo del testo
$secureimg['x']        = "15";             // punto X di partenza del testo
$secureimg['y']        = "40";             // punto Y di partenza del testo
$secureimg['width']    = "130";            // larghezza immagine (o porzione da considerare per scrivere il font)
$secureimg['height']= "45";             // altezza immagine (o porzione da considerare per scrivere il font)
$secureimg['font']     = "font.ttf";       // file font da usare
$secureimg['textcolor'] = "218,16,73";  // codice colore RGB del testo
$secureimg['linecolor'] = "128,128,73"; // codice colore RGB delle linee di disturbo
$secureimg['linecount'] = "0";          // numero di linee può valere 0, nel caso non ci sono linee di disturbo

if (!isset($secureimg['length']))
    $secureimg['length'] = 5;

// creazione codice unico, vista la possibilità di avere un codice predicibile
// cerchiamo di complicare leggermente le cose
$length = intval($secureimg['length']);
$tmp = md5(uniqid(rand(), true));
$offset = rand(0, strlen($tmp) - $length);
$privcode = substr($tmp, $offset, $length);

if(isset($secureimg['imagetype']))
{
    if ($secureimg['imagetype'] == 'JPG')
        $image =imagecreatefromjpeg($secureimg['image']);
    else if ($secureimg['imagetype'] == 'PNG')
        $image =imagecreatefrompng($secureimg['image']);
    else if ($secureimg['imagetype'] == 'GIF')
        $image =imagecreatefromgif($secureimg['image']);
    else
        $image =imagecreatefromjpeg($secureimg['image']);    
}
else 
{
    $secureimg['imagetype'] = 'JPG'; // serve per il content type
    $image =imagecreatefromjpeg($secureimg['image']); // cerca immagine formato jpg se formato non è specificato
}

if(isset($secureimg['textcolor']))
{
    $tmp = explode(",",$secureimg['textcolor']);
    $textcolor = imagecolorallocate($image,$tmp[0],$tmp[1],$tmp[2]);
}
else
{
    $textcolor = imagecolorallocate($image, 218, 16, 73);
}

if(isset($secureimg['linecolor']))
{
    $tmp = explode(",",$secureimg['linecolor']);
    $linecolor = imagecolorallocate($image,$tmp[0],$tmp[1],$tmp[2]); //line color  233,239,239
    
    for ($i = 1; $i <= $secureimg['linecount']; $i++) {
        
        imageline($image,rand(0,$secureimg['width']),rand(0,$secureimg['height']),rand(0,$secureimg['width']),rand(0,$secureimg['height']),$linecolor);
    }
}

if(isset($secureimg['font']) && is_readable($secureimg['font']))
{
    imagettftext($image, $secureimg['size'],$secureimg['angle'], $secureimg['x'], $secureimg['y'], $textcolor, $secureimg['font'], $privcode);
}
else
{
    imagestring($image, $secureimg['size'], $secureimg['x'], $secureimg['y'], $privcode, $textcolor);
}

// il codice deve essere disponibile nella sessione (al sicuro) per eventuali controlli
$_SESSION['key'] = $privcode;

// preparazione content type per invio
header("Content-type: image/".strtolower($secureimg['imagetype']));

// invio l'immagine al browser
if ($secureimg['imagetype'] == 'JPG')
    imagejpeg($image);
else if ($secureimg['imagetype'] == 'PNG')
    imagepng($image);
else if ($secureimg['imagetype'] == 'GIF')
    imagegif($image);
else
    imagejpeg($image);

//ok, non serve più
imagedestroy($image);

//ob_end_clean();
?>

Bene nel codice trovate tutti i commenti, per essere utilizzato al meglio è sufficiente impostare come si vuole generare il codice, questo va fatto una volta sola e precisamnetenelle prime file del codice php precedente trovate le seguenti righe:

$secureimg['imagetype'] = "JPG";        // tipo di immagine, supporta JPG, PNG e GIF
$secureimg['image'] = "code_bg.jpg";    // nome del file immagine (compresa estensione)
$secureimg['size']    = "28";             // dimensione del font
$secureimg['length']= "5";              // numero caratteri del codice di sicurezza
$secureimg['angle']    = "4";              // angolo del testo
$secureimg['x']        = "15";             // punto X di partenza del testo
$secureimg['y']        = "40";             // punto Y di partenza del testo
$secureimg['width']    = "130";            // larghezza immagine (o porzione da considerare per scrivere il font)
$secureimg['height']= "45";             // altezza immagine (o porzione da considerare per scrivere il font)
$secureimg['font']     = "font.ttf";       // file font da usare
$secureimg['textcolor'] = "218,16,73";  // codice colore RGB del testo
$secureimg['linecolor'] = "128,128,73"; // codice colore RGB delle linee di disturbo
$secureimg['linecount'] = "0";          // numero di linee può valere 0, nel caso non ci sono linee di disturbo


I commenti sono stati inseriti su ogni riga, ora non resta che decire l'immagine che io ho chiamato code_bg.jpg ovviamente modificabile e il font da usare, per la scelta di quest'ultimo io mi sono affidato all'ormai celebre e affidabile dafont.com, in questo sito potete trovare davvero tantissimi font.

Fate attenzione solo a un paio di cosette, primo il font deve essere di tipo TTF (ossia True Type Font) e secondo che non sia coperto da una licenza, giusto per evitarvi delle grane. Per la scelta poi consiglio dei font non troppo lineari o standard.

Ok, ora passiamo all'applicazione. Come usare lo script? In modo molto semplice quello che segue è un piccolo esempio di come verificare il codice captcha generato:

<?php 
session_start();

echo '<html><body>';
if (isset($_SESSION['key']) && !empty($_SESSION['key']) 
    && isset($_POST['code']) && !empty($_POST['code']))
    {
    if (strcmp($_SESSION['key'], $_POST['code']) == 0)
        {
        echo '<br/>Ok, umani alla riscossa!<br/><br/>';
        }
    else
        {
        echo '<br/>Mi spiace, non conosco nessun Connor :P<br/><br/>';
        }
    }
?>
<br/><br/>
<img style='margin-left:50px;margin-bottom:10px;' src="php_captcha.php">
<form action="prova.php" method="post">
Codice&nbsp;<input id='code' style='width:120px;' name='code' />
<input type="submit" value="Invia" />
</form>
</body>
</html>

Nell'esempio si vede che il form risulta essere davvero banale, cos' come il codice php di controllo. Attenzione, non salvate il codice reale in altri posti come variabili etc meglio evitare di portarsi in giro questa preziosa chiave.

Bene questo è tutto, ora abbiamo un semplice file captcha che possiamo usare o integrare facilmente dove vogliamo.

Continua a leggere..

Pubblicato da: nickel il sabato 11 luglio 2009 alle 17:32
Argomenti: Informatica, Opensource, PHP, Sicurezza, Tutorial
 

Opensource - Anche Microsoft inizia a crederci!

Mi sono sempre chiesto come mai Microsoft, un colosso con un monopolio mondiale non abbia pensato fin da subito di immischiarsi e approfittare dell'open-source? verrebbe da dire "ovviamente per continuare a fare soldi"!

In realtà non penso sia proprio così, non è da dimenticarsi che open-source non vuol dire gratis anzi se ben gestito vuol dire il contrario.

Aziende molto blasonate ormai spingono e favoriscono questo movimento (ad esempio IBM, Sun Microsystems, HP e Netscape per citarne alcuni di molto noti) per di più si crea un effetto di fidelizzazzione degli utenti che possono partecipare attivamente.

Dapprima ho pensato, ecco Microsoft cerca di bloccare l'opensource perché si vede portare via una fetta di mercato senza però considerare che forse la realtà è che non si sentiva (e non si senta ancora) pronta per competere su quel livello. In fin dei conti decentrare una parte di sviluppo soprattutto rendendolo pubblico non è semplice, anche senza tirare in ballo il core di un programma (ad esempio il kernel). Questo perché ti apre a dei rischi da valutare attentamente, è più facile trovare delle backdoor (ogni volta mi viene in mente il film Il tagliaerbe) e delle vulnerabilità quindi sarebbe molto semplice che Microsoft ne esca ridimensionata ma penso che pian piano dovrà (e credo che lo stia facendo dipende solo se fa in tempo ooops) spostare tutta una fetta di sviluppo e progetti investendo nell'open-source per avere uno sviluppo più veloce e centrato sugli effettivi bisogni degli utenti.

Guardando su internet e leggendo qua e là ho trovato diversi articoli dove evidenziano alcune attività del colosso di Redmond proprio sull'open-source e anzi sembrerebbe invogliare i progetti opensource per lo meno leggendo QUI, con tanto di host e community sull'Open Source Project Community che fa capo propio alla Microsoft. Fra i progetti opensource rilasciati da Microsoft c'è un CMS (Content Managment system) per la realizzazione di Blog. Pensato e realizzato proprio dagli sviluppatori Microsoft per dimostrare le capacità di ASP.NET MVC.

Sebbene sia un prodotto con alcune caratteristiche interessanti sembrerebbe che la stessa Microsoft invogli il suo utilizzo soprattutto agli vari sviluppatori che vogliono imparare ASP.NET MVC.

Se siete curiosi potete andare su MIX Online (realizzato proprio con Oxite, il nome di questo CMS) e rendervi conto di persona delle sue potenzialità.

Comunque, per dovere di cronaca Microsoft nel tempo ha già rilasciato altri progetti open-source fra questi spicca (almeno per me appassionato di giochi online :D) un gioco di combattimenti spaziali multiplayer: Microsoft Allegiance, anche se - purtroppo - la community non è riuscita a migliorare e accentrare gli sviluppi, il risultato è un abbandono totale (almeno dalle mie ricerche).

Se vi interessa, potete trovare maggiori informazioni e approfondimenti ai seguenti collegamenti:

Collegamenti esterni: Opensource & Microsoft | Open Source Project Management | Articolo su PCWorld | MIX Online | Microsoft Oxite | Microsoft Allegiance | Microsoft Allegiance (su Wikipedia)

Continua a leggere..

Pubblicato da: nickel il venerdì 19 dicembre 2008 alle 01:00
Argomenti: Informatica, Microsoft, Opensource
 

Post più vecchi Home page
Iscriviti a: Post (Atom)

ondare

là, quando ondando vanno le campane

Link List 2

  • AdSense
  • Android
  • Apple
  • Arte
  • Attualità
  • blockUI
  • blog
  • Email
  • Fax
  • Feste
  • Festività
  • Film
  • FloatingDialog
  • Free
  • Freeware
  • Giochi
  • Google
  • Graffiti
  • idTabs
  • Impresa
  • Informatica
  • Java
  • jNice
  • jQuery
  • jTruncate
  • Libri
  • Lightbox
  • Marketing
  • Masterizzare
  • Medicina
  • Microsoft
  • nofollow
  • Notizie
  • Olocausto
  • Opensource
  • PHP
  • progressBar
  • Recensioni
  • Running
  • Salute
  • SEO
  • Sicurezza
  • Skype
  • Sports
  • Storia
  • tags
  • Torino
  • Traduttore
  • Tutorial
  • Varie
  • Video
  • Voip
  • web2.0
  • Webdesign

Link List 1

  • AdSense
  • Android
  • Apple
  • Arte
  • Attualità
  • blockUI
  • blog
  • Email
  • Fax
  • Feste
  • Festività
  • Film
  • FloatingDialog
  • Free
  • Freeware
  • Giochi
  • Google
  • Graffiti
  • idTabs
  • Impresa
  • Informatica
  • Java
  • jNice
  • jQuery
  • jTruncate
  • Libri
  • Lightbox
  • Marketing
  • Masterizzare
  • Medicina
  • Microsoft
  • nofollow
  • Notizie
  • Olocausto
  • Opensource
  • PHP
  • progressBar
  • Recensioni
  • Running
  • Salute
  • SEO
  • Sicurezza
  • Skype
  • Sports
  • Storia
  • tags
  • Torino
  • Traduttore
  • Tutorial
  • Varie
  • Video
  • Voip
  • web2.0
  • Webdesign
  • Android AVD lento? Mettigli le ali col RAMDisk Android AVD lento? Mettigli le ali col RAMDisk
  • no image VoIP - Chiamare a basso costo, ma non solo!
  • no image Internet - Libertà e sicurezza nella rete? Amore e odio.
  • SEO - Le varie emozioni del Web(design) SEO - Le varie emozioni del Web(design)
  • no image Blog - essere o non essere nofollow questo è il dilemma!
  • no image jQuery - Il fai da te dei tags
  • no image jQuery - ProgressBar sempre pronta
  • no image jQuery - Abbelliamo i form con jNice
  • Disqus - il commento conviene Disqus - il commento conviene
  • no image Freeware - Traduzioni con Lingoes, sempre anche offline!
  • Home page

Link List 4

  • AdSense
  • Android
  • Apple
  • Arte
  • Attualità
  • blockUI
  • blog
  • Email
  • Fax
  • Feste
  • Festività
  • Film
  • FloatingDialog
  • Free
  • Freeware
  • Giochi
  • Google
  • Graffiti
  • idTabs
  • Impresa
  • Informatica
  • Java
  • jNice
  • jQuery
  • jTruncate
  • Libri
  • Lightbox
  • Marketing
  • Masterizzare
  • Medicina
  • Microsoft
  • nofollow
  • Notizie
  • Olocausto
  • Opensource
  • PHP
  • progressBar
  • Recensioni
  • Running
  • Salute
  • SEO
  • Sicurezza
  • Skype
  • Sports
  • Storia
  • tags
  • Torino
  • Traduttore
  • Tutorial
  • Varie
  • Video
  • Voip
  • web2.0
  • Webdesign

Link List 3

  • AdSense
  • Android
  • Apple
  • Arte
  • Attualità
  • blockUI
  • blog
  • Email
  • Fax
  • Feste
  • Festività
  • Film
  • FloatingDialog
  • Free
  • Freeware
  • Giochi
  • Google
  • Graffiti
  • idTabs
  • Impresa
  • Informatica
  • Java
  • jNice
  • jQuery
  • jTruncate
  • Libri
  • Lightbox
  • Marketing
  • Masterizzare
  • Medicina
  • Microsoft
  • nofollow
  • Notizie
  • Olocausto
  • Opensource
  • PHP
  • progressBar
  • Recensioni
  • Running
  • Salute
  • SEO
  • Sicurezza
  • Skype
  • Sports
  • Storia
  • tags
  • Torino
  • Traduttore
  • Tutorial
  • Varie
  • Video
  • Voip
  • web2.0
  • Webdesign


In evidenza

Ti è piaciuto qualcosa del mio blog?
Hai trovato degli articoli interessanti?

Allora perché non fai una donazione? ad esempio a una di queste organizzazioni:

Ultimi articoli e commenti

Ultimi commenti

Argomenti

  • Arte (1)
  • Attualità (10)
  • Film (2)
  • Free (9)
  • Informatica (24)
  • Notizie (7)
  • Recensioni (10)
  • Salute (4)
  • Storia (1)
  • Tutorial (10)
  • Varie (21)

Contattami

Se avete suggerimenti, consigli, segnalazioni di errori o semplicemente mi volete scrivere.. potete farlo a
QUESTO INDIRIZZO

Oppure se volete potete leggervi qualcosa in più su questo sito e in particolare
SU DI ME

Da non perdere


www.dizionariodellacorsa.it

2008-2012 / ondare.org, theme designed and pimped by nickel / Ondare Blog

Vuoi abbonarti tramite feed?
Vuoi pubblicare un tuo articolo?
Vuoi aggiornarti tramite email?
Vuoi inviare dei suggerimenti?

Vuoi tornare alla pagina principale?
Vuoi collaborare con ondare?
Vuoi scaricare l'antipixel?
Vuoi conoscermi meglio?