×

简单安全的SQL查询C类++模板。 (英语) Zbl 1211.68155号

摘要:大多数大型软件应用程序都依赖外部关系数据库来存储和管理持久数据。通常,此类应用程序通过首先构造表示SQL语句的字符串来与数据库交互,然后提交这些字符串以供数据库引擎执行。这些语句只在运行时进行正确性检查,这是许多潜在缺陷的来源,包括类型和语法错误以及易受注入攻击的漏洞。
这里介绍的AraRat系统提供了一种通过胁迫宿主来解决这些困难的方法C类++编译器对生成的字符串进行必要的检查。模板和预处理器指令库用于嵌入C类++一种表示增广关系代数形式的小语言。该嵌入式语言的类型检查由我们的模板库执行,在编译时确保生成的SQL语言串。全部SQL语言AraRat构造的语句保证语法正确,并且相对于数据库模式来说是类型安全的。此外,AraRat静态地确保生成的语句不受所有注入攻击。
我们的系统增强了符号结构编译时表示的“表达式模板”和“编译时符号派生”标准技术。我们演示了类型系统和符号结构的符号表查找的支持。这项工作的一个关键观察结果是,实例化的名义类型泛型在C类++(以及其他语言,例如。,Java语言)是结构性的而非名义性的。这使得可以将结构类型系统嵌入到C类++.
AraRat的一些高级功能依赖于对标准的两个小扩展C类++语言:伪运算符的类型和__COUNTER__预处理器宏。

MSC公司:

第68页,共15页 数据库理论
68甲15 编程语言理论
第68页第20页 编译与解释理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] 亚伯拉罕,D。;Gurtovoy,A.:C++模板元编程:boost及其后的概念、工具和技术,C++深度系列(2004)
[2] T.Andrews,C.Harris,《在面向对象的开发环境中结合语言和数据库进步》,收录于:Meyrowitz[47],第430–440页。
[3] 阿诺德,K。;Gosling,J.:Java编程语言(1996)·Zbl 0876.68015号
[4] 阿特金森,M.P。;Buneman,O.P.:数据库编程语言中的类型和持久性,ACM计算。Surv公司。19,第2期,第105-170页(1987年)
[5] 阿特金森,M.P。;Welland,R.:完全集成的数据环境:持久程序。语言、对象存储和程序。环境。,(2000)
[6] Austern,M.H.:通用编程和STL:使用和扩展C++标准模板库,(1998)
[7] ,Lncs 2487(2002)
[8] Bentley,J.:编程珍珠:小语言,Commun。ACM 29,第8期,711-721(1986)
[9] T.Bloom,S.B.Zdonik,面向对象数据库编程语言设计中的问题,见:Meyrowitz[47],第441-451页。
[10] 伯赫梅,M。;Manthey,B.:编译C++的计算能力,Bull。EATCS 81,264-270(2003)
[11] Christensen,A.S。;莫勒,A。;Schwartzbach,M.I.:字符串表达式的精确分析,Lncs 2694,1-18(2003)·Zbl 1067.68541号
[12] Codd,E.F.:大型共享数据库的数据关系模型,Commun。ACM 13,第6号,377-387(1970)·Zbl 0207.18003号 ·数字对象标识代码:10.1145/362384.362685
[13] W.R.Cook,S.Rai,《安全查询对象:作为远程可执行查询的静态类型对象》,见:Roman等人[53],第97–106页。
[14] 科普兰,G。;Maier,D.:使smalltalk成为数据库系统,SIGMOD rec.14,No.2,316-325(1984)
[15] Czarnecki,K。;生成性编程:方法、工具和应用,(2000)
[16] E.Denney,B.Fischer,可认证程序生成,收录于:Glück和Lowry[22],第17-28页。
[17] J.E.Donahue,《将编程语言与数据库系统集成》,载于:《数据类型和持久性》(Appin),《非正式会议记录》,1985年,第315-324页。
[18] 艾森伯格,A。;Melton,J.:SQLJ第1部分:使用Java编程语言的SQL例程,SIGMOD rec.28,No.4,58-63(1999)
[19] S.,R.M.:使用GCC:GCC 3.3.1的GNU编译器集合参考手册(2003)
[20] 吉尔·J。;Gutterman,Z.:用C++模板编译时间符号推导,249-264(1998)
[21] 吉尔·J。;Maman,I.:Java代码中的微模式,ACM SIGPLAN不是。,97-116 (2005)
[22] ,Lncs 3676(2005年)
[23] Goldberg,A.:Smalltalk-80:交互式编程环境(1984)·Zbl 0584.68009号
[24] 古尔德,C。;苏,Z。;Devanbu,P.T.:数据库应用程序中动态生成查询的静态检查,Proc。软质第26国际商会。工程,ICSE’04,2004年5月23日至28日,645-654(2004)
[25] D.Gregor、J.Järvi、J.Siek、B.Stroustrup、G.D.Reis、A.Lumsdaine,《概念:C++中泛型编程的第一类语言支持》,收录于:Tarr和Cook[62]。
[26] 格罗夫,J.R。;Weinberg,P.N.:SQL,完整参考文献,(1999)
[27] Z.Gutterman,数值应用的符号预计算。硕士论文,Technion,2004年。
[28] Halfond,W.G.J。;Orso,A.:《AMNESIA:中和SQL注入攻击的分析和监控》,174-183(2005)
[29] M.Harren,B.Raghavachari,O.Shmueli,M.Burke,V.Sarkar,R.Bordawekar,XJ:将XML处理集成到Java,2003年。
[30] Hejlsberg,A。;Wiltamuth,S。;Golde,P.:C#编程语言(2003)
[31] 霍华德,M。;Leblanc,D.:编写安全代码,(2001)
[32] Järvi,J。;鲍威尔,G。;Lumsdaine,A.:lambda库:C++中的未命名函数,Soft。实践。实验33,第3期,259-291(2003)·Zbl 1010.68973号 ·doi:10.1002/spe.504
[33] Järvi,J。;Willcock,J。;Hinnant,H。;Lumsdaine,A.:基于类型任意属性的函数重载,C/C++用户J.21,No.6,25-32(2003)
[34] ,Lncs 3676(2006)
[35] Jones,S.P.:Haskell 98语言和图书馆:重访报告(2003)·Zbl 1067.68041号
[36] ,Lncs 3286(2004)
[37] 科尔尼根,B.W。;里奇·D·M:C编程语言,软件系列(1988)·Zbl 0701.68014号
[38] 科赫,G。;Loney,K.:甲骨文:完整参考,(1997)·Zbl 0838.68019号
[39] Leijen,D。;Meijer,E.:领域特定嵌入式编译器,Proc。第二届USENIX领域特定语言会议’99 35,109-122(1999)
[40] Malayeri,D。;Aldrich,J.:结合结构子类型和外部调度,789-790(2007)
[41] R.A.McClure,I.H.Krüger,《SQL DOM:动态SQL语句的编译时检查》,见:Roman等人[53],第88–96页。
[42] B.McGehee,使用Microsoft SQL Server 7.0。Que,1999年。
[43] B.McNamara,Y.Smaragdakis,《C++中的静态接口》,摘自:《C++模板编程第一次研讨会》,德国埃尔福特,2000年10月。
[44] E.Meijer、B.Beckman、G.Bierman,《LINQ:协调NET框架中的对象、关系和XML》,摘自:Proc。ACM SIGMOD国际数据管理会议,ICMD’2006年,伊利诺伊州芝加哥,2006年。
[45] E.Meijer,W.Schulte,G.Bierman,《用圆、三角形和矩形编程》,载于:in XML Conference and Exposition,2003。
[46] Melnyk,R.B。;Zikopoulos,P.C.:DB2:完整参考,(2001)
[47] ,ACM SIGPLAN不是。22,第12号(1987)
[48] 北卡罗来纳州迈尔斯:一种新的有用的模板技术:特征,C++代表7,第5期,32-35(1995)
[49] 帕帕斯,C。;Murray,W.H.:Visual C++网络:完整参考,(2002)
[50] ,Lncs 2830(2003)
[51] Pierce,B.C.:类型与编程语言,(2002)·Zbl 0995.68018号
[52] Plauger,P.J.:标准模板库,C/C++用户J.13,No.12,10-20(1995)
[53] ,程序。软件上第27个国际标准。工程师,ICSE’05,2005年5月15日至21日,15-21(2005)
[54] Schmidt,J.W.:一些高级语言构造用于类型关系数据,ACM trans。数据库系统。2,第3期,247-261(1977年)
[55] J.Siek,A.Lumsdaine,《概念检查:C++中的绑定参数多态性》,in:Proc。《C++模板编程第一次研讨会》,德国埃尔福特,2000年。
[56] Smith,P.:C++应用数据结构,(2004)
[57] Y.Solodkyy,J.Järvi,E.Mlaih,《扩展库中的类型系统——C++中的类型安全XML处理》,收录于:OOPSLA’06图书馆中心软件设计研讨会,俄勒冈州波特兰,2006年10月。
[58] 史蒂文斯,A。;Walnum,C.:标准C++圣经,(2000)
[59] Stroustrup,B.:C++的设计和发展,(1994)
[60] Stroustrup,B.:C++编程语言(1997)·Zbl 0825.68056号
[61] 苏拉赫斯基,V。;Gil,J.Y.:C++中的类型安全协方差,Proc。ACM症状。在应用的组件上。SAC’04,1496-1502(2004)
[62] ,ACM SIGPLAN不是。(2006)
[63] Tatsuboi,M。;千叶,S。;伊塔诺,K。;Killijian,M.-O.:Openjava:一个基于类的Java宏系统,Lncs 1826117-133(1999)
[64] I.L.Taylor,私人通信,2007年3月。
[65] Umrigar,Z.D.:用C++进行全静态量纲分析,SIGPLAN没有。29,第9期,135-139(1994)
[66] 范德沃德,D。;Josuttis,N.M.:C++模板:完整指南(2002)
[67] Veldhuizen,T.L.:表达式模板,C++代表7,编号5,26-31(1995)
[68] N.Welsh,F.Solsona,I.Glover,SchemeUnit和SchemeQL:两种小语言,收录于:Scheme和Functional Programming研讨会,英国伦敦,2002年10月。
[69] Widenius,M。;Axmark,D.:Mysql参考手册,(2004)
[70] J.Willcock,J.G.Siek,A.Lumsdaine,《焦糖:通用编程的概念表示系统》,收录于:《C++模板编程第二次研讨会》,佛罗里达州坦帕,2001年10月。
[71] Wirth,N.:编程语言Pascal,Acta inf.1,35-63(1971)·Zbl 0205.18603号 ·doi:10.1007/BF00264291
[72] S.N.Woodfield,《概念模型和实现环境之间的阻抗失配》,载于《1997年ER’97行为模型和设计转换研讨会论文集》,1997年。
[73] E.V.Wyk,L.Krishnan,D.Bodin,E.Johnson,使用Java语言扩展程序为Java添加特定领域和通用语言功能,见:Tarr和Cook[62],第728–729页。
[74] 姚总,郑庆龙,陈国良,AOP++:C++中的通用面向方面编程框架,收录于:Glück和Lowry[22],第94-108页。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。