mitt perlscript kan hämta en godtycklig kod från en textruta i ett formulär. jag vill nu kunna köra den här koden, men utan att den kommer åt mina variabler eller dylikt som jag har.
helst skulle jag vilja köra med hjälp av use, require eller eval... fast de kör ju koden som om det vore en funktion eller nått inuti det egna programmet, dvs alla variabler (tex databashandlers) och annat syns.
helst skulle jag vilja slippa att skapa en ny process mha system eller open eftersom det tar tid. (ska göra detta några gånger ;) )
hur får jag koden att köra som om den vore ensam i hela universum? åtkomsten till datorn bör vara begränsad, dvs inte skapa filer, kommunicera mm.. vill bara ha ut en resulterande sträng från koden...
Detta är farliga grejer... :) Jag skulle säga att du bör inte under några som hellst omständigheter använda data som användaren anger direkt i en eval eller systemanrop. Även om du "sollar" bort sådannt som du inte vill ha med så är risken stor att du missar något som skapar ett säkerhetshål. Säkrare i så fall är att titta på det data du får in och efter det göra de beräkningar som behövs. Beroende på vad det är för kod som du förväntas få in kan det vara mer eller mindre svårt. Vill du använda hela perls funktionalitet blir det svårt...
Begränsa åtkomsten av variabler gör du nog enklast genom att skapa ett nytt namespace.
Ett alternativet kanske kan vara någon form av wrapper som du kan köra och se till att scriptet körs som en användare utan några som hellst rättigheter till annat än scriptet. Bara en teoretisk möjlighet, har inte provat det.