马丁·布拉文波尔;多尔斯特拉,埃尔科;伊尔科Visser 使用语法嵌入防止注入攻击。 (英语) Zbl 1211.68046号 科学。计算。程序。 75,第7期,473-495(2010). 摘要:用一种语言编写的软件通常需要用另一种语言构造句子,例如SQL查询、XML输出或shell命令调用。这几乎总是使用不卫生的字符串操作、常量和客户端提供的字符串的串联来完成。然后,客户端可以提供巧尽心思构建的输入,从而使构造的句子以意外的方式进行解释,从而导致注入攻击。我们描述了一种更自然的编程风格,它生成的代码不受构造注入的影响。我们的方法将来宾语言(如SQL)的语法嵌入到宿主语言(如Java)的语法中,并自动生成代码,将嵌入式语言映射到宿主语言中重构嵌入式句子的构造,在适当的地方添加转义函数。这种方法是通用的,这意味着它可以相对容易地应用于无上下文的主机语言和来宾语言的任何组合。 MSC公司: 68甲15 编程语言理论 关键词:注入式攻击;安全;语法嵌入;程序生成;程序转换;具体对象语法 软件:dk.brics.自动机;失忆症;Polyglot公司;哈斯克尔;西洋陆军棋;贾斯特阿德 PDF格式BibTeX公司 XML格式引用 \textit{M.Bravenboer}等人,科学。计算。程序。75,第7号,473--495(2010;Zbl 1211.68046) 全文: DOI程序 参考文献: [1] C.Anley,高级SQL注入,2002年。http://www.ngssoftware.com/papers/advanced_sql_injection.pdf [2] C.Anley,(更多)高级SQL注入,2002年。http://www.ngssoftware.com/papers/more_advanced_sql_injection.pdf [3] Batory,D。;Lofaso,B。;Smaragdakis,Y.:JTS:实现特定领域语言的工具,143-153(1998) [4] 比尔曼,G。;Meijer,E。;Schulte,W.:(C{\omega})中数据访问的本质,计算机科学讲义(LNCS)3586,287-311(2005) [5] Bouwers,E。;Bravenboer,M。;Visser,E.:优先规则恢复和兼容性检查的语法工程支持,理论计算机科学电子笔记(ENTCS)203,85-101(2008) [6] Bracha,G。;库克,W.:基于Mixin的继承,303-311(1990) [7] M.Bravenboer,自由语法练习。《语法定义、句法分析和语言集团的同化》,荷兰乌得勒支乌得勒支大学博士论文,2008年1月 [8] Bravenboer,M。;卡尔伯格,K.T。;维尔马斯,R。;Visser,E.:Stratego/XT 0.17。《程序转换的语言和工具集》,《计算机编程科学》72,第1-2期,第52-70页(2008年) [9] Bravenboer,M。;Tanter,E。;Visser,E.:aspectj的声明性、形式性和可扩展语法定义——无扫描广义LR解析案例,(2006) [10] Bravenboer,M。;弗吉尼亚州。;文朱,J.J。;Visser,E.:具有具体对象语法的元程序的广义基于类型的消歧,计算机科学(LNCS)讲义3676157-172(2005) [11] Bravenboer,M。;Visser,E.:对象的具体语法。无限制的领域特定语言嵌入和同化,第19届ACM SIGPLAN面向对象编程、系统、语言和应用会议论文集,365-383(2004) [12] Buehrer,G.T。;魏德,B.W。;Sivilotti,P.A.:使用解析树验证防止SQL注入攻击,(2005) [13] P.Charles,构建高效LALR(k)解析器的实用方法,自动错误恢复,博士论文,纽约大学,1991年5月 [14] Christensen,A.S。;莫勒,A。;Schwartzbach,M.I.:《字符串表达式的精确分析》,计算机科学(LNCS)2694,1-18(2003)·Zbl 1067.68541号 [15] W.R.Cook,S.Rai,《安全查询对象:作为远程可执行查询的静态类型对象》,见:Roman等人[34],第97–106页 [16] 埃克曼,T。;Hedin,G.:jastadd可扩展Java编译器,1-18(2007)·Zbl 1147.68437号 [17] ,《第26届软件工程国际会议论文集》(2004) [18] C.Gould,Z.Su,P.Devanbu,《JDBC检查程序:SQL/JDBC应用程序的静态分析工具》,收录于:Estublier和Rosenblum[17],第697–698页 [19] C.Gould,Z.Su,P.Devanbu,数据库应用程序中动态生成查询的静态检查,收录于:Estublier和Rosenblum[17],第645–654页 [20] W.G.Halfond,A.Orso,AMNESIA:分析和监控以中和SQL注入攻击,摘自:第20届IEEE/ACM自动化软件工程国际会议,ASE 2005,美国加利福尼亚州长滩,2005,第174-183页 [21] W.G.Halfond,A.Orso,P.Manolios,《使用正向污染和语法软件评估来对抗SQL注入攻击》,收录于:软件工程基础,FSE 142006 [22] W.G.Halfond,J.Viegas,A.Orso,SQL注入攻击和对策的分类,摘自:安全软件工程国际研讨会论文集,ISSSE 20062006 [23] 霍普克罗夫特,J.E。;Motwani,R。;Ullman,J.D.:自动机理论、语言和计算导论(2006)·兹伯利0980.68066 [24] 黄,Y.-W。;Yu,F。;Hang,C。;蔡,C.-H。;李·D·T。;Kuo,S.-Y.:通过静态分析和运行时保护保护web应用程序代码,40-52(2004) [25] ISO,ISO/IEC 9075:1992:数据库语言SQL,1992 [26] Jeffery,C.L.:从示例生成LR语法错误消息,编程语言和系统上的ACM事务(TOPLAS)25,No.5,631-640(2003) [27] Leijen博士。;Meijer,E.:领域特定嵌入式编译器,109-122(1999) [28] Livshits,V.B。;Lam,M.S.:使用静态分析查找Java应用程序中的安全漏洞,271-286(2005) [29] O.Maor,A.Shulman,SQL注入签名规避,白皮书,2004年4月。http://www.imperva.com/resources/adc/sql_injection_signatures_evasion.html [30] R.A.McClure,I.H.Krüger,《SQL DOM:动态SQL语句的编译时检查》,摘自:Roman等人[34],第88–96页 [31] Meijer,E。;Van Velzen,D.:《Haskell服务器页面:函数编程和中间层之战》,《理论计算机科学电子笔记》41/1(2001) [32] A.Möller,dk.brics.automaton–Java有限状态自动机,2005年。http://www.brics.dk/automon/ [33] Nystrom,N。;克拉克森,M.R。;Myers,A.C.:Polyglot:Java的可扩展编译器框架,计算机科学(LNCS)课堂讲稿2622138-152(2003)·Zbl 1032.68925号 [34] ,第27届国际软件工程会议记录(2005年) [35] 苏,Z。;Wassermann,G.:web应用程序中命令注入攻击的本质,372-382(2006)·Zbl 1369.68158号 [36] R.Valkering,无扫描仪广义LR解析器中的语法错误处理,硕士论文,编程研究小组,阿姆斯特丹大学,荷兰阿姆斯特丹,2007年8月 [37] E.Visser,语言原型的语法定义,博士论文,阿姆斯特丹大学,1997年9月·Zbl 0900.68290号 [38] Visser,E.:使用具体对象语法的元程序设计,计算机科学(LNCS)课堂讲稿2487,299-315(2002)·Zbl 1028.68921号 [39] Van Wyk,E。;Krishnan,L。;Schwerdfeger,A。;Bodin,D.:基于属性语法的Java语言扩展,计算机科学(LNCS)课堂讲稿(2007) [40] 谢毅。;Aiken,A.:脚本语言中安全漏洞的静态检测,179-192(2006) [41] Zook,D。;黄S.S。;Smaragdakis,Y.:用meta-aspectj生成aspectj程序,计算机科学(LNCS)课堂讲稿3286,1-19(2004) 此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。