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

    PHP , creare formule custom e comando eval

    Ciao a tutti,
    nella mia applicazione php+mysql pensavo di utilizzare il comando eval , in quanto avrei la necessità di creare una sezione chiamata FORMULE utilizzabile dall'utente per inserire piccoli script (esempio uno script di somma tra 2 componenti , controlli ecc).

    Secondo voi eval potrebbe portare problemi di sicurezza?

    Alternative?

    vorrei prendere spunto da questo post: h**p://bytes.com/topic/c-sharp/answers/249114-creating-algorithm-formula-parsing

    Inoltre ho sentito parlare dei token, ovvero la formula viene suddivisa in token ed eseguita a pezzi... come posso fare?

    Risorse online? Avete esperienze del tipo?


    grazie!

  2. #2
    Come faccio ad estrearre da un testo tutte le parole che hanno il carattere # posto prima e dopo?

    esempio:

    ciao a #tutti# !

    deve restituirmi solo #tutti#

  3. #3
    una domanda a 3D...cmq,

    per la seconda domanda, devi usare delle regular expression

    per la prima, usare eval è una ****** (gli * l'ho messi proprio io). In pratica, l'utente ti può inserire la formulina a manella in una textarea, ma poi tu quello che l'utente scrive lo devi parsare in maniera tale da essere sicuro di quello che vuoi eseguire. Nel senso:


    l'utente ti scrive:

    a * b

    il tuo parsing dovrà tirarti fuori che hai un'operazione di moltiplicazione tra due fattori. Che ne so, arrivi ad avere un oggetto di supertipo Operazione e specifico per Moltiplicazione, con come argomenti due fattori A e B che o sono numeri oppure sono, che so, nomi di campi di una tabella etc etc.... non è che prendi e fai "eval"...

    poi dovresti pure stare attento alla sintassi, perchè

    a * b / c

    ( a * b ) / c

    a *

    daranno (forse) risultati diversi o errori che tu dovresti prevedere, e con eval certo che non li prevedi.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Premesso 2 cose:

    - lo so che eval non è sicuro, però non ho 3 mesi per sviluppare un parser di funzioni
    - purtroppo l'applicazione è abbastanza complessa, e avrei necessità di definire formule custom lato client

    Secondo te come potrei mettere in sicurezza l'esecuzione di eval?

    Per prima cosa pensavo di filtrare il codice, sostituendo '$_' con '' . in questo modo l'accesso alle variabili di sessione (per esempio) non è garantito. Filtro anche le chiamate a tutte le funzioni di sistema inerenti le sessioni (es: session_start) . Inoltre ho notato che se eseguo eval in un file a parte php, praticamente non mi vede variabili locali , globali e di sessione aperte/dichiarate.

    Per fare ciò pensavo di utlizzare CURL lato server passando il codice dello script alla pagina (formula.php),esterna al sistema .

    Inoltre ho notato su questo sito h**p://writecodeonline.com/php/ è possibile testare codice php online.... ovviamente funziona con un eval. Durante i test ho inserito per esempio una funzione di sistema (realpath), e mi ha restituito il seguente messaggio:

    Warning: realpath() has been disabled for security reasons in /homepages/26/d94605010/htdocs/writecodeonline.com/php/index.php(92) : eval()'d code on line 1


    Come hanno fatto a filtrare queste funzioni di sistema?


    GRAZIE!

  5. #5
    hai 3 mesi? beh se ti ci metti di buzzo buono ce la fai abbondantemente.

    dal warning direi che l'abbiano disabilitate nel php.ini, ma non ci posso giurare sopra

    poi per il resto, se vuoi usare eval, usalo, fai i controlli del caso prima di eseguirlo
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    non ho 3 mesi ...

  7. #7
    Originariamente inviato da the_driver
    non ho 3 mesi ...
    ho letto male
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.