Java安全开发规范

合集下载

阿里JAVA开发规范,助你写出更干净整洁的代码

阿里JAVA开发规范,助你写出更干净整洁的代码

阿⾥JAVA开发规范,助你写出更⼲净整洁的代码⼀、命名风格1.【强制】类名使⽤UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO2.正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal /TaPromotion3.反例:macroPolo / UserDo / XMLService / TCPUDPDeal /TAPromotion4.【强制】⽅法名、参数名、成员变量、局部变量都统⼀使⽤lowerCamelCase 风格,必须遵从驼峰形式。

5.正例:localValue / getHttpMessage() / inputUserId6.【强制】常量命名全部⼤写,单词间⽤下划线隔开,⼒求语义表达完整清楚,不要嫌名字长。

7.正例:MAX_STOCK_COUNT 反例:MAX_COUNT8.【强制】抽象类命名使⽤Abstract 或Base 开头;异常类命名使⽤Exception 结尾;测试类命名以它要测试的类的名称开始,以Test 结尾。

9.【强制】Model 类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。

10.反例:定义为基本数据类型Boolean isDeleted;的属性,它的⽅法也是isDeleted(),RPC框架在反向解析的时候,“以为”对应的属性名称是deleted,导致属性获取不到,进⽽抛出异常。

11.【强制】对于Service 和DAO 类,基于SOA 的理念,暴露出来的服务⼀定是接⼝,内部的实现类⽤Impl 的后缀与接⼝区别。

正例:CacheManagerImpl 实现CacheManager 接⼝。

12.【推荐】为了达到代码⾃解释的⽬标,任何⾃定义编程元素在命名时,使⽤尽量完整的单词组合来表达其意。

正例:从远程仓库拉取代码的类命名为PullCodeFromRemoteRepository 反例:变量int a;的随意命名⽅式。

JAVA开发规范文档

JAVA开发规范文档

Java 开发规范文档一:目的使本组织能以标准的,规范的方式设计和编码。

通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;并以此形成开发小组编码约定,提高程序的可靠性,可读性,可修改性,可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。

二:代码组织与风格1:长度:为便于阅读和理解,单个函数的有效代码长度当尽量在100行以内(不包括注释行),当功能模块过大时往往采用使用子函数将相应的功能抽取出来,这也有利于提高代码的重用度。

2:单个类不宜过大,当出现此类过大时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。

尽量避免使用大类和长方法。

3:间隔:类,方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。

操作符两端应当各空一个字符以增加可读性。

三:注释1:注释应该增加代码的清晰度。

代码注释的目的时要使代码更易于被其他开发人员等理解。

2:保持注释的简洁。

3:注释信息应该包括代码的功能。

4:除变量定义等较短语句的注释使用行尾注释外,其他注释当避免使用行尾注释。

5:JavaDoc规范对类,方法,变量等注释需要符合javadoc规范,对每个类,方法都应详细说明其功能条件,参数等。

类注释中应当包含版本和作者信息。

1)类,接口注释在类,接口定义之前当对其进行注释,包括类,接口的目的,作用,功能,继承于何种父类,实现的接口,实现的算法,使用方法,示例程序等。

2)方法注释以明确该方法功能,作者,各参数含义以及返回值等。

3)其他注释应对重要的变量及不易理解的分支条件表达式加以注释,以说明其含义等。

四命名规范1:对变量,类,接口及包的命名应该使用英文。

严禁使用汉语拼音及不相关单词命名。

更不可以使用汉字来进行命名。

采用大小写混合,提高名字的可读性。

一般应该采用小写字母,但时类和接口的名称的首字母,以及任何中间单词的首字母应该大写。

包名全部小写。

java 开发规范

java 开发规范

java开发规范(一)java命名规范1、变量、成员、方法名统一采用驼峰命名(lowerCamelCase),做到见语知其义例子:变量——用户数据(userList)、方法——getUserData(int type)等。

说明:正常变量定义使用驼峰命名,特殊的如DTO\VO\DO等除外。

2、类名的定义(1)普通类名采用大写字母开始;(2)抽象类采用Abstract或Base开头。

例子:普通类——class UserModel,抽象类——abstract class AbstractUserDefinition等。

3、常量、类型、接口、子类的定义(1)常量使用全大写且单词之间用"_“隔开; (2)boolean变量不能使用is开头;(3)接口尽量不要修饰符、子类紧跟接口追加Impl。

例子:常量——SORT_TYPE,布尔类型——flag,接口——UserService,实现类——UserServiceImpl等。

说明:常量不可组装,需要原子性定义,不能出现"KEY”+SORT_TYPE 这种内部出现。

4、包名、异常、枚举、方法名称的定义(1)包名一律采用小写; (2)异常都采用_Exception结尾; (3)枚举都是以Enum结尾;(4)方法名称——根据方法内容采用如插入insert-*。

例子:异常——UserException,包名——com.test,枚举——UserEnum,方法名称——insertUser等。

5、领域模型定义规范:主要是以VO\DTO\DO等结尾例子:用户数据——UserDTO等(1)数据对象:xxxDO,xxx 即为数据表名。

(2)数据传输对象:xxxDTO,xxx为业务领域相关的名称。

(3)展示对象:xxxVO,xxx一般为网页名称。

(4)POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。

(二)代码格式规范1、括号代码要求左大括号前不换行、左大括号后换行、右大括号前换行、右大括号后还有else等代码则不换行;表示终止的右大括号后必须换行。

Java开发规范

Java开发规范

Java开发规范信息技术中⼼IT应⽤开发技术规范Java开发规范版权说明本⽂件中包含的任何⽂字叙述、⽂档格式、插图、照⽚、⽅法、过程等内容,除另有特别注明,版权均属太平洋保险所有。

未经许可任何⼈不得将此⽂件中的任何部分以任何形式进⾏复制,储存和传播。

版本记录⽬录1.概述 (1)1.1.⽂档⽬的 (1)1.2.适⽤范围 (1)1.3.⽂档说明 (1)1.4.术语定义 (1)2.技术选型规范 (1)2.1.开发⼯具指南 (2)2.2.J AVA标准 (2)2.3.源代码管理⼯具 (2)2.4.依赖管理⼯具 (2)2.5.第三⽅组件选型 (2)3.总体技术规范 (2)3.1.原则 (2)3.1.1.程序对象重⽤原则 (2)3.1.2.依赖解除原则 (3)3.1.3.常量使⽤原则 (3)3.1.4.第三⽅代码使⽤原则 (3)3.1.5.⾃动代码检查原则 (4)3.1.6.⾃动单元测试原则 (4)3.1.7.⽇志处理原则 (4)3.2.规范 (6)3.2.1.应⽤分层规范 (6)3.2.2.编码字符集规范 (7)3.2.3.项⽬⼯程规范 (7)3.2.4.代码⽬录结构规范 (8)3.2.5.对象命名规范 (9)3.2.6.代码注释规范 (10)3.3.指南 (12)3.3.1.java代码指南 (12)3.3.2.HTML/JAVASCRIPT代码指南 (18)4.展现层技术规范 (19)4.1.原则 (19)4.1.1.事物⼀致性原则 (19)4.1.2.浏览器⽀持原则 (19)4.1.3.插件使⽤原则 (19)4.1.4.信息提⽰原则 (20)5.业务层技术规范 (20)5.1.原则 (20)5.1.1.数据访问分离原则 (20)5.1.2.配置信息分离原则 (20)5.2.规范 (21)5.2.1.业务逻辑层设计规范 (21)5.2.2.编码规范 (21)5.2.3.业务规则与⼯作流规范 (22)6.数据层开发规范 (23)6.1.原则 (23)6.1.1.ORM框架使⽤原则 (23)6.1.2.复杂SQL使⽤原则 (23)6.1.3.存储过程与触发器使⽤原则 (24)6.1.4.数据量控制原则 (24)6.1.5.绑定变量使⽤原则 (25)6.2.规范 (25)6.2.1.DAO层使⽤规范 (25)4.1.1.DAO类注⼊配置规范 (25)4.1.2.实体类代码实现规范 (26)1.概述1.1.⽂档⽬的《中国太平洋保险股份有限公司IT应⽤开发技术规范》(以下简称太保IT开发规范)定义了IT应⽤项⽬开发时应遵循的技术指南,作为各项⽬组的开发指导性指南和代码审查的依据。

使用Java编写线程安全的代码的准则

使用Java编写线程安全的代码的准则

使用Java编写线程安全的代码的准则Java语言提供了多种机制来实现线程安全的代码。

下面是一些编写线程安全代码的准则:1.使用不可变对象:不可变对象是指一旦创建就不能修改其状态的对象。

由于不可变对象是无法修改的,所以它们可以在多个线程之间共享而不需要进行额外的同步操作。

因此,使用不可变对象来编写线程安全的代码是一个很好的选择。

2.同步访问共享资源:如果有多个线程需要访问共享的可变资源,必须使用同步机制来保证同时只有一个线程访问该资源。

Java提供了synchronized关键字和锁机制来实现同步访问。

a.使用synchronized关键字:可以使用synchronized关键字来修饰方法或代码块,从而保证同一时间只有一个线程能够执行被修饰的方法或代码块。

b.使用锁机制:Java提供了内置的锁机制,可以使用synchronized关键字或ReentrantLock类来创建锁对象,并使用lock()和unlock()方法来加锁和释放锁。

3.使用volatile关键字保证可见性:如果一个变量被多个线程访问并且其中至少有一个线程修改了它的值,那么必须使用volatile关键字来确保所有线程都能看到最新的值。

使用volatile关键字修饰的变量将会在每次访问时从主内存中读取其最新的值。

4.避免共享数据的修改:尽量避免多个线程修改同一个共享的可变数据,因为同时对同一数据进行修改可能导致不一致或者竞态条件。

如果需要对共享数据进行修改,应该将其封装在一个对象中,并使用锁机制来确保同一时间只有一个线程修改该数据。

5.使用ThreadLocal类:ThreadLocal类可以用来创建线程本地变量,每个线程都会有自己的变量副本,从而避免了线程之间的竞争和同步。

ThreadLocal类在为每个线程创建独立的变量副本时使用了Map结构,每个线程都有自己的Map实例。

6.使用并发集合类:Java提供了许多线程安全的并发集合类(如ConcurrentHashMap、ConcurrentLinkedQueue),可以用来替代传统的非线程安全的集合类。

java 开发标准

java 开发标准

java 开发标准Java 开发标准。

Java是一种广泛使用的编程语言,它的应用范围涵盖了各个领域,从企业级应用到移动设备应用。

因此,制定并遵守Java开发标准对于保证代码质量、提高开发效率至关重要。

本文将介绍一些Java开发标准的基本原则和最佳实践,以帮助开发人员编写高质量的Java代码。

1. 命名规范。

在Java开发中,命名规范是非常重要的。

良好的命名规范可以使代码更易于理解和维护。

在命名变量、方法和类时,应遵循驼峰命名法,并且要求命名具有描述性,能够清晰地表达其用途。

2. 代码风格。

统一的代码风格可以增强团队合作,提高代码的可读性。

在Java开发中,应该遵循统一的代码风格规范,包括缩进、括号的使用、注释的规范等。

此外,应该避免出现过长的代码行,以保持代码的清晰度。

3. 异常处理。

在Java开发中,异常处理是至关重要的。

良好的异常处理可以提高系统的稳定性和可靠性。

在编写代码时,应该充分考虑各种可能出现的异常情况,并对其进行适当处理,避免出现未捕获的异常。

4. 性能优化。

在Java开发中,性能优化是一个重要的考虑因素。

开发人员应该注意避免出现性能瓶颈,并且要时刻关注代码的效率。

在编写代码时,应该尽量避免使用过多的循环嵌套和递归调用,以提高代码的执行效率。

5. 安全性。

在Java开发中,安全性是至关重要的。

开发人员应该时刻关注代码的安全性,避免出现安全漏洞。

在编写代码时,应该遵循安全编程的最佳实践,包括输入验证、防止SQL注入、防止跨站脚本攻击等。

6. 测试。

在Java开发中,测试是保证代码质量的重要手段。

开发人员应该编写充分的单元测试和集成测试,以保证代码的正确性和稳定性。

此外,应该注重测试覆盖率,并且及时修复测试中发现的问题。

7. 文档规范。

在Java开发中,文档规范是非常重要的。

良好的文档可以提高代码的可维护性和可读性。

在编写代码时,应该充分注释代码,并且编写清晰的文档,包括接口文档、设计文档等。

《JavaWeb安全开发指南》

《JavaWeb安全开发指南》

《JavaWeb安全开发指南》随着互联网的迅速发展,基于JavaWeb的应用也越来越多,但是随之而来的安全风险也在不断增多。

在JavaWeb开发中,安全性是至关重要的,因此我们需要对JavaWeb安全开发进行全面的了解和掌握,以便于更好地保障我们的JavaWeb应用程序的安全性。

1. 安全风险与威胁JavaWeb开发中的安全风险主要有以下几个方面:- SQL注入:黑客通过构造特殊的SQL语句,在无需登录的情况下就能够直接访问并控制数据库中的数据。

- XSS攻击:黑客通过在网站表单中注入JavaScript脚本,让其他用户在浏览网站时受到攻击。

- CSRF攻击:黑客通过伪造用户的登录信息,在用户不知情的情况下进行指定操作,如转账等。

- 文件上传漏洞:未对上传的文件进行严格的安全校验,导致黑客上传恶意文件进而实施攻击。

- 权限不足:未对各种操作的权限进行限制,导致恶意用户权限提升进而通过应用系统获取更多敏感数据。

以上这些安全威胁都是极其危险的,因此在JavaWeb开发中,必须要认真对待并进行严格的防范。

2. 如何进行JavaWeb的安全开发?JavaWeb安全开发需要从以下几个方面入手:- 输入校验:对用户输入的数据进行严格校验,防止数据篡改和攻击。

- 权限认证:对用户进行严格的身份验证和访问控制,以确保只有授权用户才能够访问敏感信息。

- 模板引擎安全:防范模板注入、命令注入等安全问题。

- 密码加密:对于数据库中的密码等敏感信息进行加密处理,防止其被黑客直接获得。

- 对拒绝服务攻击的防范:通过对流量控制、缓存控制等方式,防范拒绝服务攻击。

- 安全日志:记录各种异常操作,及时发现并修复问题。

3. 安全防范技术JavaWeb开发中安全防范技术主要包括以下几个方面:- SSL:创建安全的连接,防止信息被黑客拦截。

- 数据加密:采用对称加密与非对称加密方法对重要数据进行加密,既保证传输安全,又能够保障数据的完整性。

(AOS、JAVA)开发规范 -

(AOS、JAVA)开发规范 -

软件产品开发规范(Java)1 .AOS开发规范1.1包命名1、包结构规定包主要分为两类:第一类为系统公共包com.gxhtjs. tools 该包主要存放对数据库操作的增删查改的基本通用类。

第二类为系统功能模块业务处理包,每个包都为一个独立的功能模块第三类为数据库操作包。

2、包命名格式如:命名:以com.gxhtjs开头,最后个为英文单词不能用拼音缩写。

3、包结构说明tools 工具包,该包的类都是具有通用性的包(包括通用算法类,数据库操作同类)。

biz 业务处理包,将用来处理相关业务的类放入此包。

如果相关的类是提供给页面调用时类在命名如:UserBizPlugin 表示用户信息业务处理插件。

dao 数据库操作包,即对数据库表进行操作时,一般会以表名建立对应类用来操作对应的表。

dao包中的所有具体操作类都将集成数据通用类。

1.2表单命名规范1、表单目录机构如下图按系统大的功能模块,每个模块都是一个独立的包,包的命名必须符合英文帕斯卡命名规范。

2、AOS项目文件名命名规范:所有的文件命名必须以gxhtjs_项目名_大模块名_小模块名.xml进行命名。

例如: gxhx_gxncpsg_xxcj_yhdddjc_sbwsjy.xml 销售统计-银行对账单稽查-上报无实际有form的命名规则同文件名命名方式:<form id="gxhtjs_项目名_大模块名_小模块名">如:gxhx_gxncpsg_xxcj_yhdddjc_sbwsjy 企业无系统有3、SQL语句编写SQL可以通过建立对应表的SQL xml,也可以在form上直接编写SQL尽量使用预编译的形式编写SQL特别是查询SQL。

○1插件的开发规必须符合JA V A编程规范。

1.3页面控件命名2.JA V A编程规范2.1命名规则2.1.1包与类命名2.1.1.1包结构与类名前缀为了便于管理Java开发的应用,Java开发的应用包命名要求带有前缀com,采用“com.包名.子功能包名”的形式,如com.bcl表示基础工具包。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java安全开发规范第1章前言为提高应用安全水平,特制定本规范对代码编制进行规范。

规范中的安全要求按照严格程度分为三级:➢Policy必须遵循的策略,实现方法可以自定义,但不能外翻策略的规定。

➢Discipline必须遵守的纪律,必须按照规定中的描述实施,绝对不能违反。

➢Guideline建议性的指南和规范,将逐步要求遵循实施。

第2章Java安全性开发规范2.1跨站脚本XSS⏹风险及危害性:跨站脚本XSS指利用网站漏洞从用户那里恶意盗取信息。

用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。

攻击者通过在链接中插入恶意代码,就能够盗取用户信息。

攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。

网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。

许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。

假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。

如何导致XSS攻击,一般来说来自http的post,或者get方式取得参数值很可能为恶意代码,如果开发者直接用这些参数组合成http链接,用户点击该连接,就会造成XSS攻击风险。

⏹应对措施开发者要保证代码的安全性,使其免受XSS攻击,可采取以下措施:1.过滤或转换用户提交数据中的HTML代码。

2.限制用户提交数据的长度⏹非安全代码示例<%String mofWindowId =request.getParameter("mofWindowId");%><formname="importXml"action="mofXml.cmd?method=importMofXml&primaryKey=<%=mofWindowId%>" method="post">⏹安全代码示例<%String mofWindowId=XSSCheck.getParameter(request,”mofWindowId”);%><formname="importXml"action="mofXml.cmd?method=importMofXml&primaryKey=<%=mofWindowId%>" method="post">注:XSSCheck为公用工具类,用于XSS检查,其getParameter实现逻辑如下:1、通过参数名称,从请求中取得参数值。

2、将&,<,>,’,”转义: & -> &amp;< -> &it;> -> &gt;“ -> &quot;‘ -> &acute;3、返回安全的字符串。

2.2违反信任边界规则(Trust Boundary Violation)⏹风险及危害一个受信任的边界可以被认为是由系统划出的边境,例如session,attribute,aplication,数据库,文件等在服务端存储边界都认为是受信任的。

反之来来自http的post,或者get方式取得参数值是不受信任的。

凡是将非受信任边界的参数转入到受信任的边界内,需要对参数值进行检查,否则造成信任边界违例,当开发者直接操作受信边界内部的参数时会认为该参数是安全的,而造成安全隐患,例如脚本注入,XSS攻击等。

⏹应对措施开发者要保证代码的安全性,当参数信任边界切换的时候,对参数值进行检查,检查其内容里是否用非法脚本信息:1.过滤或转换用户提交数据中的HTML代码。

2.限制用户提交数据的长度⏹非安全代码示例String dsn = request.getParameter("DSN");String sql = request.getParameter("SQL");if (sql == null) {sql = "";}dsn = (String) session.getAttribute("SqlHelper.DSN");} else {session.setAttribute("SqlHelper.DSN", dsn);}⏹安全代码示例String dsn = XSSCheck.getParameter(request,"DSN");String sql = request.getParameter("SQL");if (sql == null) {sql = "";}dsn = (String) session.getAttribute("SqlHelper.DSN");} else {session.setAttribute("SqlHelper.DSN", dsn);}2.3不安全的反射(Unsafe Reflection)⏹风险及危害攻击者能够建立一个不可预测的、贯穿应用程序的控制流程,使得他们可以潜在地避开安全检测。

攻击者能够建立一个在开发者意料之外的、不可预测的控制流程,贯穿应用程序始终。

这种形式的攻击能够使得攻击者避开身份鉴定,或者访问控制检测,或者使得应用程序以一种意料之外的方式运行。

如果攻击者能够将文件上传到应用程序的classpath或者添加一个classpath的新入口,那么这将导致应用程序陷入完全的困境。

无论是上面哪种情况,攻击者都能使用反射将新的、多数情况下恶意的行为引入应用程序。

⏹应对措施开发者可以定制一份白名单,通过关键字关联需要实例化的类,http请求中传递是不是实际的类名,而是关键字,开发者得到关键字后在白名单中寻找需要的信息,进行实例化。

⏹非安全代码示例String className = request.getParameter("classname");if ((className != null)&& ((className = className.trim()).length() != 0)) {// Attempt to load class and get its location.try {ProtectionDomain pd = Class.forName(className).getProtectionDomain();if (pd != null) {CodeSource cs = pd.getCodeSource();⏹安全代码示例String classNameKey = request.getParameter("classname");String className=WhiteList.get(classNameKey);if ((className != null)&& ((className = className.trim()).length() != 0)) {// Attempt to load class and get its location.try {ProtectionDomain pd = Class.forName(className).getProtectionDomain();if (pd != null) {CodeSource cs = pd.getCodeSource();注1:WhiteList.get其具体实现如下:1、从描述白名单的文件中,读出白名单列表;2、根据传入的关键值寻找该白名单的真实值;3、返回该值,如果没有找到,抛出异常。

2.4SQL 注入(SQL Injection)⏹风险及危害:SQL注入是一种常见攻击方式,由于开发者采用sql拼凑的方式,用来自网络中不安全的参数形成sql语句访问数据库,攻击者常常采用该漏洞组合成非法的sql语句,使得信息泄露,访问到本来没有权限查看的内容或者直接破坏数据库信息等。

发生SQL Injection有以下几种方式:一、进入程序的数据来自不可信赖的资源。

二、数据用于动态构造一个SQL查询。

⏹应对措施:一、开发者可以采用带参方式访问sql语句访问数据库,在java中即采用PreparedStatement的方式访问数据库。

二、如果开发者一定要使用sql拼凑的方式访问数据,对字符串要检查并过滤单引号’,对于可能为整形或者浮点类型参数,要先转整形,或者浮点,再进行拼凑。

⏹非安全代码示例String userid= (String)session.getAttribute("classname");String param1= request.getParameter(“param1”);StringBuffer strbuf=new StringBuffer();strbuf.append(“select * from table1 where userid=”);strbuf.append(userid);strbuf.append(“ and param1=’”).append(param1).append(“’”);String sql=strbuf.toString();//当param1为 test’ or 1=1那么这条语句就为 select * from table1 where userid=$userid and param1=’test’ or 1=1这样查询出来的数据就超越了这个用户访问的范围。

⏹安全代码示例方法一:采用PreparedStatement访问数据库。

String userid= (String)session.getAttribute("classname");String param1= request.getParameter(“param1”);StringBuffer strbuf=new StringBuffer();String sql= “select * from table1 where userid=? and param1=?”;方法二:检查并过滤特殊字符String userid= (String)session.getAttribute("classname");String param1= request.getParameter(“param1”);StringBuffer strbuf=new StringBuffer();strbuf.append(“select * from table1 where userid=”);strbuf.append(userid);strbuf.append(“ and param1=’”).append(SqlInjectCheck.checkStringValue(param1)).append(“’”);String sql=strbuf.toString();注:SqlInjectCheck.checkStringValue是公用函数,其实现如下:1、将’转化成&acute;2、返回字符串。

相关文档
最新文档