跳到主要内容
研究论文

JavaScript中安全嵌入的渐进式键入

出版:2014年1月8日出版历史
跳过抽象节

摘要

JavaScript灵活的语义使得编写正确的代码变得困难,编写安全的代码变得极其困难。为了解决前一个问题,人们提出了各种形式的渐进式键入,例如闭包和TypeScript。然而,支持所有常见的编程习惯用法并不容易;例如,TypeScript为了编程方便而故意放弃类型的稳健性。在本文中,我们提出了一个渐进式系统和实现技术,它们提供了重要的安全保障。

我们介绍了TS#,这是一个渐进式系统和JavaScript源到源编译器。与以前的渐变类型系统相比,TS#在三种类型上具有完整的运行时反射:(1)用于高阶函数的简单类型、递归数据类型和基于字典的可扩展记录;(2) 类型any,用于动态类型安全的TS#表达式;和(3)类型un,用于嵌入TS#的不可信、潜在恶意JavaScript上下文。在进行类型检查后,编译器会对程序进行各种检查,以确保TS#的类型安全,尽管它与任意JavaScript上下文进行了交互,这些JavaScript上下文可以自由使用eval、堆栈遍历、原型定制和其他攻击性功能。我们主要定理的证明采用了一种类型保护编译的形式,其中我们证明了TS#到JavaScript的转换的所有运行时不变量,证明了翻译后的程序在JS#中的类型良好,JS#是一种以前提出的用于证明JavaScript程序功能正确性的依赖类型语言。

我们描述了TS#的原型编译器、安全运行时和示例应用程序。我们的示例说明了开发人员当前使用JavaScript编程的web安全模式(困难重重,结果仍不确定)如何在TS#中自然编程,保留惯用JavaScript的味道,同时通过键入提供强大的安全保障。

跳过补充材料部分

补充材料

d2 _右_t8.mp4

英里4

337.2 MB

工具书类

  1. M.Abadi、L.Cardelli、B.Pierce和G.Plotkin。静态类型语言中的动态类型。ACM ToPLAS,13(2):237--2681991年。谷歌学者谷歌学者数字图书馆数字图书馆
  2. D.Akhawe、P.Saxena和D.Song。HTML5应用程序中的权限分离。《USENIX Security会议记录》,2012年。谷歌学者谷歌学者数字图书馆数字图书馆
  3. A.巴特。网络起源概念,2011年。IETF RFC6454。谷歌学者谷歌学者
  4. A.Barth、C.Jackson和J.C.Mitchell。针对跨站点请求伪造的强大防御。《CCS会议录》,2008年。谷歌学者谷歌学者数字图书馆数字图书馆
  5. R.Berjon、T.Leithead、E.Navara、E.D.和O'Conner以及S.Pfeiffer。HTML5。网址://www.w3.org/TR/html5/, 2013. W3C和。记录。谷歌学者谷歌学者
  6. K.Bhargavan、A.Delignat-Lavaud和S.Maffeis。针对不受信任的浏览器源的基于语言的防御。USENIX Security会议记录,2013年。谷歌学者谷歌学者数字图书馆数字图书馆
  7. G.Bierman、E.Meijer和M.Torgersen。向C添加动态类型#《经济合作与发展组织会议记录》,2010年。谷歌学者谷歌学者数字图书馆数字图书馆
  8. G.Bracha和D.Griswold。Strongtalk:在生产环境中检查Smalltalk的类型。《OOPSLA学报》,1993年。谷歌学者谷歌学者数字图书馆数字图书馆
  9. R.Chugh、D.Herman和R.Jhala。JavaScript的依赖类型。OOPSLA,2012年。谷歌学者谷歌学者数字图书馆数字图书馆
  10. Facebook API。联邦调查局。美国石油学会,2013年。http://developers.facebook.com/docs/reference/javascript/。谷歌学者谷歌学者
  11. R.B.Findler和M.Felleisen。高阶函数的合同。《ICFP会议记录》,2002年。谷歌学者谷歌学者数字图书馆数字图书馆
  12. C.弗拉纳根。混合型检查。《POPL学报》,2006年。谷歌学者谷歌学者数字图书馆数字图书馆
  13. C.Fournet、N.Swamy、J.Chen、P.-E.Dagand、P.-Y.Strub和B.Livshits。完全抽象编译为JavaScript。《POPL会议录》,2013年。谷歌学者谷歌学者数字图书馆数字图书馆
  14. A.D.戈登和A.杰弗里。通过键入安全协议实现真实性。在2001年的《加拿大社会福利协会议事录》中。谷歌学者谷歌学者数字图书馆数字图书馆
  15. S.Guarnieri和B.Livshits。守门人:主要是针对javascript代码的安全性和可靠性策略的静态实施。在2009年SSYM USENIX安全研讨会上。USENIX协会,2009年。谷歌学者谷歌学者数字图书馆数字图书馆
  16. A.Guha、C.Saftou和S.Krishnamurthi。JavaScript的本质。2010年《经合组织会议记录》。谷歌学者谷歌学者数字图书馆数字图书馆
  17. A.Guha、C.Saftou和S.Krishnamurthi。使用流分析键入本地控制和状态。2011年《员工持股计划程序》。谷歌学者谷歌学者数字图书馆数字图书馆
  18. D.Hedin和A.Sabelfeld。JavaScript核心的信息流安全。《CSF会议记录》,2012年。谷歌学者谷歌学者数字图书馆数字图书馆
  19. D.赫尔曼、A.托姆和C.弗拉纳根。节省空间的渐进式打字。高阶符号。计算。,2010谷歌学者谷歌学者数字图书馆数字图书馆
  20. L.Ina和A.Igarashi。泛型的渐变类型。2011年OOPSLA论文集。谷歌学者谷歌学者数字图书馆数字图书馆
  21. T.Jim、N.Swamy和M.Hicks。使用浏览器增强的嵌入式策略抵御脚本注入攻击。《WWW学报》,2007年。谷歌学者谷歌学者数字图书馆数字图书馆
  22. J.Magazinius、P.H.Phung和D.Sands。用于自我保护JavaScript的安全包装和合理策略。《NordSec会议记录》,2010年。谷歌学者谷歌学者数字图书馆数字图书馆
  23. OWASP CSRFGuard。CSRFGuard 3用户手册,2010年。网址://www.owasp.org/index.php/CSRFGuard_3_User_Manual。谷歌学者谷歌学者
  24. J.G.Politz、S.A.Eliopoulos、A.Guha和S.Krishnamurthi。Adsafety:基于类型的javascript沙箱验证。USENIX Security,2011年。谷歌学者谷歌学者数字图书馆数字图书馆
  25. J.G.Siek和W.Taha。函数式语言的渐进式键入。2006年,在方案和功能编程研讨会上。谷歌学者谷歌学者
  26. J.G.Siek、R.Garcia和W.Taha。探索高阶造型的设计空间。2009年《员工持股计划》会议记录。谷歌学者谷歌学者数字图书馆数字图书馆
  27. J.G.Siek、M.M.Vitousek和S.Bharadwaj。可变对象的渐进式键入。surlhttp://ecee.colorado.edu/siek/gtmo.pdf, 2013.谷歌学者谷歌学者
  28. N.Swamy、J.Chen、C.Fournet、P.-Y.Strub、K.Bhargavan和J.Yang。使用值相关类型保护分布式编程。在2011年ICFP会议记录中。谷歌学者谷歌学者数字图书馆数字图书馆
  29. N.Swamy、J.Weinberger、C.Schlesinger、J.Chen和B.Livshits。使用Dijkstra monad验证高阶程序。PLDI,2013年。谷歌学者谷歌学者数字图书馆数字图书馆
  30. A.Taly、U.Erlingsson、J.C.Mitchell、M.S.Miller和J.Nagra。安全关键JavaScript API的自动分析。《标准普尔学报》,2011年。谷歌学者谷歌学者数字图书馆数字图书馆
  31. P.Wadler和R.B.Findler。不能指责类型良好的程序。2009年《员工持股计划》会议记录。谷歌学者谷歌学者数字图书馆数字图书馆

索引术语

  1. JavaScript中安全嵌入的渐进式键入

          建议

          评论

          登录选项

          检查您是否可以通过登录凭据或您的机构访问本文。

          登录

          完全访问权限

          • 发布于

            封面图片ACM SIGPLAN注意事项
            ACM SIGPLAN通知 第49卷第1期
            2014年流行音乐
            2014年1月
            661页
            ISSN公司:0362-1340
            EISSN公司:1558-1160
            内政部:10.1145/2578855
            期刊目录
            • 封面图片ACM会议
              POPL’14:第41届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录
              2014年1月
              702页
              国际标准图书编号:9781450325448
              内政部:10.1145/2535838

            版权所有©2014 ACM

            如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人拥有的本作品组件的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

            出版商

            计算机协会

            美国纽约州纽约市

            出版历史

            • 出版:2014年1月8日

            检查更新

            限定符

            • 研究论文

          PDF格式

          以PDF文件查看或下载。

          PDF格式

          电子阅读器

          使用eReader联机查看。

          电子阅读器