2013 · 86 citations · 18 references
ComputingComputer ScienceCompilersProgramming LanguagesSoftware EngineeringAbstract Syntax TreesCompiler ConstructionControl-flow AnalysisType CheckingType SystemsWeb Application SecurityAbstractionAbstraction MechanismsHigher-order FunctionsInvariantsJavascript Security
Many tools allow programmers to develop applications in high-level languages and deploy them in web browsers via compilation to JavaScript. While practical and widely used, these compilers are ad hoc: no guarantee is provided on their correctness for whole programs, nor their security for programs executed within arbitrary JavaScript contexts. This paper presents a compiler with such guarantees. We compile an ML-like language with higher-order functions and references to JavaScript, while preserving all source program properties. Relying on type-based invariants and applicative bisimilarity, we show full abstraction: two programs are equivalent in all source contexts if and only if their wrapped translations are equivalent in all JavaScript contexts. We evaluate our compiler on sample programs, including a series of secure libraries.
18
Towards a Mathematical Science of Computation.
John McCarthy · 1962 · 454 citations
Protection in programming languages
James H. Morris · Communications of the ACM · 1973 · 197 citations · Full text
Secure distributed programming with value-dependent types
Nikhil Swamy, Juan Chen, Cédric Fournet et al. · ACM SIGPLAN Notices · 2011 · 155 citations