Se også: Bilder på Flickr - Last.fm-profil - Om meg - Personlig side - Planet Snuskete -

Sandkasse

Så nå (eller riktigere, i går) har man levert “term paper” i faget “information security and security architechture” (eller noe borti der). Satser på at foreleseren er fornøyd nok til at det drar meg opp på et brukbart nivå i faget. Man må jo være ærlig: skolen er ikke det som går best for tiden. Uansett: jeg skrev et stykke om hvordan man kan “sandboxe” kode i språkene Ruby, Python og Perl. For de uinvidde handler dette om å ta et stykke kode man ikke stoler på, lage en sandkasse den kan leke i uten å forstyrre omverdenen, og kanskje til og med legge inn noen leker i denne sandkassen (gjerne ved å fjerne de farlige delene fra disse lekene først). Tror ikke det er noe superbra akkurat, men jeg har lagt det ut på nettstedet mitt.

Litt kode må man jo poste …

def try_insecure level=1, &blk
    Thread.new {
        $SAFE = level
        begin yield blk
        rescue SecurityError => e
            puts "Caught SecurityError: #{e}"
        end
    }.join
end

try_insecure(5) { File.open('snusk') } #Blammo!

Trikset her er “safe levels” i Ruby. Disse legger en del restriksjoner på hva som kan gjøres med koden din. Trikset er også at safe-nivået er “thread local”, altså at om man oppretter en tråd for å kjøre et stykke kode i, kan man sette et annet safe-nivå for denne kodesnutten enn for resten av koden. Med andre ord: en supersimpel sandkasse. Ikke så veldig bra kanskje, men nyttig nok i enkelte tilfeller.

Update: Fikk karakter av foreleseren. En “sterk” B (vel … bokstavkarakterer er jo i grunnen endelige, men han mente visst at om jeg hadde skrevet litt mer om teori, og ikke fokusert så mye på praksis, hadde den hatt sjanse på en A). Ganske bra med andre ord. Må si meg godt nøgd med det.

Comments are closed.