Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Ridimensionamento immagini - cosa non va, dovete saperlo!

    Ok, visto che in tanti ne hanno parlato, e visto che qualcuno ha finalmente detto ciò che andava detto:
    rainghio
    a volte la semplicità o l'acqua calda diventa pericolosa quando gente che non la sa usare si trova davanti spesso a condizioni abbastanza pericolose, come un codice che presenta diverse "falle" e la usa senza sapere cosa fa ..
    Ecco i miei 5 cents per il nuovo, rivoluzionario, sistema di ridimensionamento immagini!!! (cose del 1999 e gd1 ... insomma)

    codice:
    63. $memoryToAllocate	= '100M';
    auguri per i dos


    codice:
    68. $image = preg_replace('/^(s?f|ht)tps?:\/\/[^\/]+/i', '', (string) $_GET['image']);
    ehr ... qualcuno mi spiega che razzo significa questa regexp?
    '/^(s?f|ht)tps?:\/\/[^\/]+/i'

    sono io a non capirla, o secondo l'autore esiste un url con protocollo tipo
    sftps://-/

    ???

    ... se si, me lo spiegate? ... grazie!

    Ammesso esista ... mi sorge in altro dubbio ... esiste un caso nel mondo dove un parametro GET o POST non sia una stringa?

    Cosa diavolo significa (string) $_GET['image'] ?

    Ve lo dico io, significa che l'autore dello script di PHP non sa una cippa
    Prima perchè GET è sempre stringa, secondo perchè se passi una variabile ad una funzione che lavora con le stringhe, l'eventuale casting è fatto dalla funzione stessa.

    Andiamo avanti ... da linea 70 a linea 93, abbiamo dei fantastici controlli che ci permettono di usare una banale /index.php, nella root del sito, come file di prova

    Di li in poi chissà cosa succede ... succede che al limite, nella migliore delle ipotesi, ci sarà un errore ... grazie al fantastico controllo fatto poi ...

    Ed ecco che comincia il magico resizing!

    La width, come la height, possono essere negative, permettendoci di giocare con i risultati, massacrando di request in request, il server che ospita lo script.
    Ma perchè sprecare energie quando di default i valori sono assurdi per conto loro?

    Se non settiamo width ed height i valori saranno 99999999999999, una larghezza in pixel che supera addirittura il limite massimo di un integer 32 signed, sia questo il limite int di php, sia questo quello di Java o JS.
    Un numero assurdo, per renderci conto, insupportabile da qualunque schermo ... ma l'autore sa qualcosa dei linguaggi di programmazione, o ha sparato grandi numeri a caso?

    A no, ha pensato bene di cntrollare, con un altro assurdo cast in stirng ed una regexp, la presenza del parametro GET, color.

    Bene, se lo settate, senza impostare width ed height ... lo script va avanti ...

    Possiamo impostare un cropratio come ulteriore parametro ... ma anche no, ergo andiamo avanti.

    La certezza assoluta che l'immagine sarà in qualche modo ridimensionata, l'abbiamo tramite le fantastiche $xRation ed $yRatio.

    Queste si basano su una divisione, peccato la divisione sia in base a width ed height trovate grazie all'immagine tramite size[0] ed [1].

    Cosa significa? ... significa che se per sbaglio avete un'immagine usata come delimitatore o altro, da 1 pixel di altezza, e la usate come immagine che verrà riconosciuta come valida,
    il ridimensionamento finale sarà di 99999999999999 X 99999999999999

    Qualunque cosa accada poi, è assolutamente ininfluente poichè abbiamo già tutti gli strumenti per far esplodere il server, e sono a meno di metà script

    Ragazzi, non basta avere un blog per essere programmatori, bisogna avere esperienza, e parecchia skill (che richiede studi, e testing).

    Ma soprattutto, vi prego, prima di pubblicare qualcunque cosa abbia a che fare con opzioni passate dal client, e vale anche per Ajax (vacca boia), pensateci mille mila volte, ne vale la vostra reputazione, poi è difficile da recuperare quando scrivete orrori esagerati.

    A voi commenti, insulti, altro ... al solito


    [edit] ... poi magari sono solo invidioso di aver prodotto ben più notevole codice, questi ultimi mesi, passato completamente in sordina ... scavalcato da paginelle piaccapì di questo calibro ... e va beh, lo ammetto, rosico quando leggo notizie inerenti progetti così mal concepiti ... non me ne vogliate

    [edit2 la vendetta] ... anche io ho scritto orrori, e probabilmente ne scrivo tuttora, ma non sono mai stato pubblicizzato troppo per questi orrori, anzi ... questo post non è una critica verso una notizia che comunque sarebbe girata in rete comunque, è una critica al modo di sviluppare php che grazie all'insieme di questi progetti non è considerato un linguagio enterprise, nonostante gli sforzi della comunità. Dare accesso al server tramite valori client, è sempre un rischio, e ci sono dozzine di articoli inerenti la sicurezza server. daniele ha osservato anche altro, io non mi sono voluto spingere oltre (volevo fermarmi alla terza riga di codice ...). La programmazione è un mestiere ... come ci sono idraulici e meccanici di discutibilissima bravura / serietà, ci sono programmatori che non sono programmatori ... e in italia, purtroppo, ce ne sono tanti. Consiglio di documentarvi sempre sulle best practices e la sicurezza, nello stesso HTML.it ci sono ottimi e numerosi articoli per svariati linguaggio che parlano di problemi inerenti variabili ricevute dall'esterno, il client, o il malintenzionato di turno. Buon approfondimento a tutti, e scusate l'eccessiva passione in questo post.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #2
    mettiamo un link va ..

    http://blog.html.it/archivi/2008/03/...ni-con-php.php

    Appoggio in pieno .. come ho già detto nel commento del blog e come hai quotato già te
    Soluzioni di Web marketing, CMS, Temi wordpress, grafica e molto altro

    -----
    Ogni topic aperto con un titolo errato fa perdere un capello al moderatore che lo dovrà sistemare.. se non vuoi contribuire alla calvizia dei moderatori apri 3D a norma di regolamento, e prima fai una ricerca! No pvt tecnici!

  3. #3
    ho editato grazie a piero che me l'aveva fatto notare, ero talmente preso dall'entusiasmo che ho scordato il link principale

    per concludere col mio delirio, mi auto quoto altra frase scritta questa stessa sera:
    Originariamente inviato da andr3a
    Se sviluppi infatti con error_reporting attivo, noterai quanto le variabili vadano giustamente controllate ... non farlo, significa avere la curva di apprendimento più alta e la più alta percentuale di non programmatori ad utilizzare questo bel linguaggio di programmazione (colmo o paradosso?)
    non è direttamente riferita a questo script, ma è lostesso pertinente
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Non avevo guardato il codice, ma chissà com'è ma mi sembrava di saperlo...

    Come ho scritto sul blog, non è che un tentativo di reinventare l'acqua calda... e un programmatore serio non lo fa :P

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.