LuaJit FFI e nascondere i dettagli di implementazione C

3

Vorrei estendere un'applicazione usando LuaJit FFI. Avere visto il collegamento è sorprendentemente facile quando si confronta questo con l'API Lua C. Fin qui tutto bene. Tuttavia, non desidero ovviamente includere le funzioni C, ma fornire un API di livello superiore agli utenti che scrivono script per l'applicazione. Soprattutto non voglio che gli utenti siano in grado di accedere ai "primitivi", ovvero lo spazio dei nomi ffi.* . È possibile o lo spazio dei nomi ffi sarà disponibile per gli script Lua dell'utente?

Sulla questione di Sandboxing Lua ho trovato link che però non sta parlando di FFI.

Inoltre, il piano che ho descritto sopra suppone che l'introduzione di livelli di astrazione avvenga sul lato lua del codice. È un approccio consigliabile o preferiresti funzionalità astratte sul codice compilato staticamente (sul lato C)?

    
posta wirrbel 20.07.2013 - 18:31
fonte

1 risposta

2

quando chiedi se "lo spazio dei nomi ffi sarà disponibile per gli script Lua dell'utente?", ti interessa per la facilità di programmazione, per rendere più difficile commettere un errore o per proteggersi da attacchi intenzionali dannosi?

se l'ultimo (sicurezza), allora sì, è necessario controllare su sandbox. non è difficile fare uno ragionevole, ma uno stretto è difficile.

se gli altri (facile da usare, difficile da interrompere), assicurati solo che il modulo esportato contenga solo le funzioni di alto livello che desideri vengano utilizzate da altri. Il modo più semplice è quello di rendere le tue funzioni interne in variabili locali e mettere solo le funzioni "esportate" nella tabella che diventerà il tuo modulo. (suggerimento: non usare la funzione module ())

    
risposta data 22.07.2013 - 18:50
fonte

Leggi altre domande sui tag