Day2_J2EE安全开发_第1页
Day2_J2EE安全开发_第2页
Day2_J2EE安全开发_第3页
Day2_J2EE安全开发_第4页
Day2_J2EE安全开发_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WEB应用安全和数据库安全的领航者J2EE安全开发安全开发 杭州安恒信息技术杭州安恒信息技术有限公司有限公司WEB应用安全和数据库安全的领航者 Java 代码编码安全 代码框架安全2WEB应用安全和数据库安全的领航者一、开发中常见漏洞介绍及示例说明和可参考的解决方法:一、开发中常见漏洞介绍及示例说明和可参考的解决方法:Web通用:通用: XSS、CSRF、SQL注入、文件上传等注入、文件上传等J2EE特点所致特点所致: 组件信息泄露、安全目录绕过等组件信息泄露、安全目录绕过等WEB应用安全和数据库安全的领航者4Web通用通用 - XSS 描述:描述: 攻击者对应用的页面注入恶意脚本(通常是指攻

2、击者对应用的页面注入恶意脚本(通常是指html脚本),然后在页面执行脚本),然后在页面执行这个恶意脚本,到达攻击目的。这个恶意脚本,到达攻击目的。通常类型:反射型、存储型两大类(还有些如:所谓的通常类型:反射型、存储型两大类(还有些如:所谓的DOM型等)型等)WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者注入的注入的Javascript脚本被解析执行,形成一个反射型脚本被解析执行,形成一个反射型XSS:WEB应用安全和数据库安全的领航者危害:危害:对于一般应用,用户对于一般应用,用户cookie盗取(普通用户及管理员登录盗取(普通用户及管理员登录cookie )非)非法登

3、录应用。法登录应用。WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者例如:tomcat与浏览器身份验证的session id是已cookie的形式存储浏览器客户端WEB应用安全和数据库安全的领航者 对于大量用户交互的大型应用(如:对于大量用户交互的大型应用(如:SNS站点),可形成蠕虫,严站点),可形成蠕虫,严重影响业务,如重影响业务,如:1、历史第一个历史第一个XSS蠕虫是针对网站蠕虫是针对网站MySpace的的Samy(20小时内感染了小时内感染了100万个账户万个账户)2、Sina微博微博XSS蠕虫攻击事件的蠕虫攻击事件的HelloSamy(16分钟受影响用户就达到将

4、近分钟受影响用户就达到将近33000个个)WEB应用安全和数据库安全的领航者Java开发中,可参考的解决方法示例:开发中,可参考的解决方法示例:针对针对“输入输入”与与“输出输出” 方式,如方式,如输入:输入:String input=request.getParameter(“input”); 输出:输出:out.print(我的输入:我的输入:+input);对对Input参数的参数的Html标签进行转义标签进行转义一般的业务逻辑代码流程:输入一般的业务逻辑代码流程:输入 数据存储(如:存入数据存储(如:存入DB) 输出输出 存储型存储型XSS,如:存入,如:存入DB,同一应用一般情况,危

5、害性存储型大于反射型同一应用一般情况,危害性存储型大于反射型XSS.特点:隐蔽性强,数据的流向不确定(如:数据可能被其他应用调用)等特点:隐蔽性强,数据的流向不确定(如:数据可能被其他应用调用)等WEB应用安全和数据库安全的领航者一般选择一般选择“输入输入” 处理方式,伪代码:处理方式,伪代码:输入:输入:String input=request.getParameter(“input”); / 对对html标签转义的逻辑代码标签转义的逻辑代码 / 其他业务逻辑(如:数据存储)其他业务逻辑(如:数据存储)输出:输出:out.print(我的输入:我的输入:+input); WEB应用安全和数据

6、库安全的领航者参数值转义参数值转义html标签的伪代码示例:标签的伪代码示例:public static String filter(String str) if (str = null) return (null); char content = new charstr.length(); str.getChars(0, str.length(), content, 0); StringBuilder result = new StringBuilder(content.length + 50); for (int i = 0; i content.length; i+) switch (c

7、ontenti) case :result.append(>);break; case &:result.append(&);break; case :result.append(");break; default:result.append(contenti); return (result.toString(); WEB应用安全和数据库安全的领航者14WEB应用安全和数据库安全的领航者 但可能有些标签在实际开发需要显示输出(如:但可能有些标签在实际开发需要显示输出(如:标签),影响到正常业务。就可以标签),影响到正常业务。就可以使用使

8、用HTTPOnly方式防御,方式防御,jsp显示模版示例伪代码:显示模版示例伪代码:response.setHeader(“Set-Cookie”, “cookiename=value;Path=/;Domain=domainvalue;Max-、Age=seconds;HTTPOnly); 设置设置HTTPOnly后,后,js域就无法获取域就无法获取cookie了,缓解危害!了,缓解危害!WEB应用安全和数据库安全的领航者16WEB应用安全和数据库安全的领航者17WEB应用安全和数据库安全的领航者18建议:建议:对于对于java开发者,在开发者,在java代码层面防御基本够了。代码层面防御基

9、本够了。如果想要更深层次的防御,就要做应用整体的安全如果想要更深层次的防御,就要做应用整体的安全架构或者使用防护系统,那不是架构或者使用防护系统,那不是java开发者该考虑的问题!开发者该考虑的问题!WEB应用安全和数据库安全的领航者19Web通用通用 - CSRF 跨站请求伪造,意思就是迫使被攻者的浏览器向一个容易攻击的跨站请求伪造,意思就是迫使被攻者的浏览器向一个容易攻击的Web应用发送请求应用发送请求,最后达到攻击者所需要的操作行为(劫持用户操作)。最后达到攻击者所需要的操作行为(劫持用户操作)。 WEB应用安全和数据库安全的领航者20示例:某个添加管理员的功能示例:某个添加管理员的功能

10、WEB应用安全和数据库安全的领航者只要管理员访问下面的只要管理员访问下面的url,就可以创建一个管理员,就可以创建一个管理员:http:/localhost:8080/CSRF/user.ah?logo=create&user_name=csrf&passWord=csrf&age=12&birthday=1970-01-01&note=test 攻击者:想办法让管理员访问这个地址攻击者:想办法让管理员访问这个地址例如,使用例如,使用html img 标签在管理员经常访问的网站页面嵌入下面的攻击代码:标签在管理员经常访问的网站页面嵌入下面的攻击代码:WE

11、B应用安全和数据库安全的领航者22WEB应用安全和数据库安全的领航者23WEB应用安全和数据库安全的领航者24WEB应用安全和数据库安全的领航者25实现攻击有两个基本条件:实现攻击有两个基本条件:1、攻击者必须非常熟悉被攻击的应用、攻击者必须非常熟悉被攻击的应用2、被攻击应用的用户必须是登录状态(实际中,重要功能操作权限、被攻击应用的用户必须是登录状态(实际中,重要功能操作权限须有登录状态)须有登录状态) 危害:危害: 实际危害决定于实际危害决定于CSRF对应用中功能操作后对业务的影响。通对应用中功能操作后对业务的影响。通常情况常情况CSRF结合结合XSS同时使用,才会产生更大的危害(例如:同

12、时使用,才会产生更大的危害(例如:XSS蠕虫)。蠕虫)。WEB应用安全和数据库安全的领航者26Java开发中,可参考的解决方法示例:开发中,可参考的解决方法示例: 通常是使用通常是使用referer或或token验证访问来路的正确性。验证访问来路的正确性。 个人觉得个人觉得referer是是web服务服务器层面上的部署防御,应用代码层面应该使用器层面上的部署防御,应用代码层面应该使用token。token防御原理示例:防御原理示例: 访问到添加管理员用户的页前访问到添加管理员用户的页前(http:/localhost:8080/CSRF/user.ah?logo=add),添加一个),添加一个

13、session 值,值,(它是一个不可预测的字符串(例如:随机生成的(它是一个不可预测的字符串(例如:随机生成的hash值:值:9be5a474bec04c4db756db82c98af24a)伪代码示例:)伪代码示例:WEB应用安全和数据库安全的领航者在添加页面保存这个在添加页面保存这个token值(如:值(如:hidden类型的类型的input标签),伪代码:标签),伪代码:WEB应用安全和数据库安全的领航者验证失败,进入其他逻辑处理(例如:跳转验证失败,进入其他逻辑处理(例如:跳转CSRF攻击提示),伪代码:攻击提示),伪代码:WEB应用安全和数据库安全的领航者正常操作:正常操作:WEB

14、应用安全和数据库安全的领航者CSRF:WEB应用安全和数据库安全的领航者 如果想全局防御,我们也可以在如果想全局防御,我们也可以在Filter(过滤器)实现这个功能。一些(过滤器)实现这个功能。一些MVC模式的框模式的框架已经实现这种安全功能,例如架已经实现这种安全功能,例如Struts2 (其实是防止重复提交的一个机制)(其实是防止重复提交的一个机制) ,配置及,配置及伪代码示例伪代码示例 :struts.xml /csrf.jsp /success.jsp 管理员创建页面配置(添加管理员创建页面配置(添加strust2的的token标签):标签): WEB应用安全和数据库安全的领航者 页面

15、会生成页面会生成 一个一个token值,并保存到值,并保存到session中,伪代码:中,伪代码:. 提交后,配置的提交后,配置的token interceptor(拦截器),获取这个(拦截器),获取这个struts.token名,名,到到session中去找这个值并验证,实现与上文中原理是一样的!中去找这个值并验证,实现与上文中原理是一样的!WEB应用安全和数据库安全的领航者当然,当然,struts2有些低版本存在这个机制安全绕过的情况:有些低版本存在这个机制安全绕过的情况: /release/2.3.x/docs/s2-010.html str

16、的值会作为的值会作为key到到session中找这个中找这个key对应值,这在与页面提交对应值,这在与页面提交struts.token值进行对比。绕过的原因是因为值进行对比。绕过的原因是因为是可以在外部被控制,是可以在外部被控制,而实际开发中我们会大量使用而实际开发中我们会大量使用session存储数据,且存储数据,且key有时是可预的,伪代码例如:有时是可预的,伪代码例如: WEB应用安全和数据库安全的领航者建议:建议:如果不想全局防御所有功能请求。或者一般应用,对业务功能的如果不想全局防御所有功能请求。或者一般应用,对业务功能的

17、重要操作进行防御基本够了,如对数据的操作,我们只要考虑这重要操作进行防御基本够了,如对数据的操作,我们只要考虑这些操作:些操作:C(增加)(增加)U(修改)(修改)D(删除)(删除)WEB应用安全和数据库安全的领航者Web通用通用 SQL注射注射 从外部参数输入可以控制执行从外部参数输入可以控制执行sql语句的结构(开发人员语句的结构(开发人员sql语句参数使语句参数使用了拼接方式)。用了拼接方式)。 MySql JDBC 简单示例:简单示例:WEB应用安全和数据库安全的领航者http:/localhost:8080/demo/mysql.jsp?id=1使用使用单引号让程序报单引号让程序报s

18、ql异常,说明外部传入的参数可以直接控制异常,说明外部传入的参数可以直接控制sql语句的结构:语句的结构:WEB应用安全和数据库安全的领航者http:/localhost:8080/demo/mysql.jsp?id=-1%20%20union%20select%201,2, current_user%28%29构造构造sql语句获取数据库信息,如:读取数据库当前用户信息:语句获取数据库信息,如:读取数据库当前用户信息:WEB应用安全和数据库安全的领航者读取其他表的数据:读取其他表的数据:WEB应用安全和数据库安全的领航者http:/localhost:8080/demo/mysql.jsp?

19、id=-1%20%20union%20select%201,2,%20%28select%20load_file%28%22c:/BOOT.INI%22%29%29根据权限读取系统文件根据权限读取系统文件WEB应用安全和数据库安全的领航者http:/localhost:8080/demo/mysql.jsp?id=1 union select 1,2,webshell into outfile c:/1.jsp写入文件,例如:写入一个写入文件,例如:写入一个webshell危害:危害: 除了数据被窃取外。根据当前权限及不同的数据库类型,还可以除了数据被窃取外。根据当前权限及不同的数据库类型,还

20、可以读、写文件,执行系统命令或权限提升。在安全角度,特别是读、写文件,执行系统命令或权限提升。在安全角度,特别是web安全,安全是以数据为中心的,所以安全,安全是以数据为中心的,所以sql注入漏洞是最接近数据的一注入漏洞是最接近数据的一个典型漏洞。个典型漏洞。WEB应用安全和数据库安全的领航者Java开发中,可参考的解决方法示例:使用预编译占位符方式开发中,可参考的解决方法示例:使用预编译占位符方式WEB应用安全和数据库安全的领航者 多条件查询,可以使用占位符拼接方式,伪代码如:多条件查询,可以使用占位符拼接方式,伪代码如: String sql=“select * from news whe

21、re 1=1 ”; if (“关键字查询匹配关键字查询匹配key1”) sql.append( and key1= ?); else if (“关键字查询匹配关键字查询匹配key2”) sql.append( and key2= ?); .WEB应用安全和数据库安全的领航者J2EE持久层框架,处理示例:持久层框架,处理示例:Hibernate使用占位符参数绑定,伪代码如:使用占位符参数绑定,伪代码如:select * from news where key :key1或或select * from news where key = ?iBatis(MyiBatis),伪代码如:,伪代码如:se

22、lect * from news where key #key1#WEB应用安全和数据库安全的领航者Web通用通用 -文件上传文件上传服务器端验证,存在问题代码的伪代码示例:文件上传服务器端验证,存在问题代码的伪代码示例:我们知道容器能够解析的脚本文件的后缀名,是不能上传的!我们知道容器能够解析的脚本文件的后缀名,是不能上传的!WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者黑名单验证,绕过问题一:黑名单验证,绕过问题一: 如果如果String fileName=“1.rar.jsp“ , fileName.indexOf(”.”)截取的第一个点开始字截取的第一个点开始字符

23、串,截取后值为:符串,截取后值为:fileType=“rar.jsp” ,绕过黑名单列表:绕过黑名单列表:WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者正确应该使用正确应该使用fileName.lastIndexOf(.) WEB应用安全和数据库安全的领航者绕过问题二:绕过问题二: fileType.equals(suffixi),比如,有时候一些比如,有时候一些web容器解析文件名时,容器解析文件名时,可能忽略大小写后缀名。比如,多个容器类型映射一个应用目录时(同时能可能忽略大小写后缀名。比如,多个容器类型映射一个应用目录时(同时能够解析够解析php文件):文件):St

24、ring fileName=“1.PHP“(后缀名全部大写)(后缀名全部大写),从而绕过黑名单,因从而绕过黑名单,因为为equals严格严格大小写的。大小写的。WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者正确方式,使用正确方式,使用equalsIgnoreCase,忽略大小写校验:,忽略大小写校验:WEB应用安全和数据库安全的领航者Web通用通用 任意文件下载任意文件下载J2EE伪代码示例(伪代码示例( File类文件输出流实现方式):类文件输出流实现方式):filepath=request.getParameter(path);File file = new File

25、(filepath);/文件输出流逻辑代码文件输出流逻辑代码WEB应用安全和数据库安全的领航者 http:/ filepath=”/xxx/“;filepath=request.getParameter(path); http:/ 可参考处理方式:尽量不使用外部参数传入方式。可参考处理方式:尽量不使用外部参数传入方式。如果开发时,需要使用外部参数传入方式。逻辑代码增加一层,使用如果开发时,需要使用外部参数传入方式。逻辑代码增加一层,使用key去去找找value,示例如:示例如:http:/ 9be5a474bec04c4db756db82c98af24a 数据库设计时,增加一个字段,显示文件路

26、径的数据库设计时,增加一个字段,显示文件路径的path值,在根据值,在根据9be5a474bec04c4db756db82c98af24a这个这个path值到数据库里去找文件路值到数据库里去找文件路径径value,伪代码示例:,伪代码示例:Filepath = request.getParameter(path);Value = /根据根据path值查询数据库里对应的路径值查询数据库里对应的路径Value值值File file = new File(Value);.这样从外部就无法直接控制文件下载路径!这样从外部就无法直接控制文件下载路径!WEB应用安全和数据库安全的领航者J2EE特点所致特点

27、所致 - 组件信息泄露组件信息泄露WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者看到这段异常,从看到这段异常,从sql信息到使用的框架信息及信息到使用的框架信息及web服务器信息全部暴露了!服务器信息全部暴露了! 编码时,养成截取异常信息并存储到日志文件里的好习惯,不要在页面显示出编码时,养成截取异常信息并存储到日志文件里的好习惯,不要在页面显示出来!来!Java抛异常的特点,可能导致攻击者的攻击成本降低!抛异常的特点,可能导致攻击者的攻击成本降低!WEB应用安全和数据库安全的领航者J2EE特点所致特点所致 -安全目录绕安全目录绕META-INF及及WEB-INF是是Ja

28、va的的WEB应用的安全目录应用的安全目录 ,客户端无法访问,客户端无法访问,只有服务端可以访问的目录只有服务端可以访问的目录 。WEB应用安全和数据库安全的领航者比如,我们使用比如,我们使用servlet是可以访问到的是可以访问到的,在一个页面跳转功能在一个页面跳转功能servlet实现实现的伪代码示例:的伪代码示例:String path=request.getParameter(path); RequestDispatcher rd = request.getRequestDispatcher(path); rd.forward(request, response); WEB应用安全和数

29、据库安全的领航者比如,我们使用比如,我们使用servlet是可以访问到的,是可以访问到的,在一个页面跳转功能在一个页面跳转功能servlet实现的伪代码示例实现的伪代码示例.String path=request.getParameter(path); RequestDispatcher rd = request.getRequestDispatcher(path); rd.forward(request, response); .WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者 读取容器启动时加载的配置文件读取容器启动时加载的配置文件/W

30、EB-INF/web.xml,根据配置根据配置web.xml读取其他配置文件(包括读取其他配置文件(包括数据库配置文件)及数据库配置文件)及class文件,文件,class文件反编译就是业务逻辑的源代码了!文件反编译就是业务逻辑的源代码了!WEB应用安全和数据库安全的领航者 Java 代码编码安全 代码框架安全64WEB应用安全和数据库安全的领航者J2EE框架安全框架安全 这里主要介绍外层流行框架这里主要介绍外层流行框架Struts2 MVC framework,Spring framework.1、OGNL使用安全使用安全3、Struts2的动态方法调用的动态方法调用(Dynamic met

31、hod Invocation) 及及方法命名习惯方法命名习惯4、Struts2标签使用,与基础漏洞原理一样?标签使用,与基础漏洞原理一样?5、spring信息泄露及远程代码执行相关示例信息泄露及远程代码执行相关示例2、struts2远程代码执行相关示例远程代码执行相关示例WEB应用安全和数据库安全的领航者1、OGNL使用安全使用安全Struts2 核心代码核心代码webWork核心代码核心代码 核心核心Xwork OGNL(Object Graph Navigation Language对象图导航语言)对象图导航语言)WEB应用安全和数据库安全的领航者OGNL有这几个危险机制:有这几个危险机制

32、:WEB应用安全和数据库安全的领航者例如:例如:new一个对象执行系统命令(一个对象执行系统命令(OGNL存对象时)存对象时)WEB应用安全和数据库安全的领航者例如:调用静态方法执行系统命令(例如:调用静态方法执行系统命令(OGNL取对象时)取对象时)WEB应用安全和数据库安全的领航者 所以使用所以使用OGNL存储对象时,如:存储对象时,如: Ognl.setValue(“外部参数外部参数”),执行的参数是由外,执行的参数是由外部传入,那这样是危险的,造成远程代码执行漏洞。部传入,那这样是危险的,造成远程代码执行漏洞。Struts2一系列远程代码执行漏洞,都是在功能设计时,安全过滤不严格及一系

33、列远程代码执行漏洞,都是在功能设计时,安全过滤不严格及OGNL滥用滥用造成的!造成的!所以所以,你们在使用你们在使用OGNL设计功能的时候千万不能学习设计功能的时候千万不能学习Struts2官官方!方!WEB应用安全和数据库安全的领航者WEB应用安全和数据库安全的领航者2、struts2远程代码执行相关示例远程代码执行相关示例第一个是第一个是2010年年7月月14号,号,Struts2/XWork 2.2.0远程执行任意代码漏洞远程执行任意代码漏洞“,POC示例示例:?(u0023_memberAccessallowStaticMethodAccess)(meh)=true&(

34、aaa)(u0023contextxwork.MethodAccessor.denyMethodExecutionu003du0023foo)(u0023foou003dnew%20java.lang.Boolean(false)&(asdf)(u0023rt.exit(1)(u0023rtu003djava.lang.RuntimegetRuntime()=1 OgnlContextOgnlContext的属性的属性 xwork.MethodAccessor.denyMethodExecutionxwork.MethodAccessor.denyMethodExecution

35、(默认为真)(默认为真) SecurityMemberAccess私有字段私有字段allowStaticMethodAccess(默认为假)(默认为假) Struts2安全限制, allowStaticMethodAccess是否开启静态方法调用, xwork.MethodAccessor.denyMethodExecution是否禁用方法调用。是否禁用方法调用。需要使用#调用这些字段或属性,但外部输入是不允许使用#的!WEB应用安全和数据库安全的领航者 #的的16进制编码进制编码u0023(也包括(也包括8进制编码),绕过安全限制,最终调用静态方法进制编码),绕过安全限制,最终调用静态方法执

36、行命令!执行命令!java.lang.Runtime.getRuntime().exit(1) java.lang.Runtime.getRuntime().exit(1) (终止当前正在运行的(终止当前正在运行的 Java Java 虚拟机)虚拟机) 第二个,第二个,Apache Struts S2-016,S2-17.远程代码执行及远程代码执行及url跳转漏洞跳转漏洞xxx.action?action:xxx.action?redirect:xxx.action?redirectAction:action: 、redirect:、redirectAction:这三个关键字,是设计出来做短地

37、址导航的。这三个关键字,是设计出来做短地址导航的。但在设计功能时滥用但在设计功能时滥用OGNL,只要带这样的关键字只要带这样的关键字$OGNL表达式代码表达式代码,框架就会把,框架就会把中间的代码作为中间的代码作为OGNL表达式执行。表达式执行。WEB应用安全和数据库安全的领航者执行系统命令添加用户示例执行系统命令添加用户示例:WEB应用安全和数据库安全的领航者S2-17 url跳转漏洞(可其利用钓鱼):跳转漏洞(可其利用钓鱼):WEB应用安全和数据库安全的领航者3、Struts2的动态方法调用的动态方法调用(Dynamic method Invocation) 及方法命名习惯及方法命名习惯三

38、种方式三种方式: 第一种方式:设置第一种方式:设置method属性属性: 如如: LoginAction类类: public String login() . xml配置文件配置文件: success.jsp error.jsp 第二种方式:改变第二种方式:改变action的设置的设置 在使用在使用action后面使用后面使用!感叹号调用感叹号调用action中的中的login方法方法,如如:userLogin!login WEB应用安全和数据库安全的领航者第三种方式:使用通配符第三种方式:使用通配符: /success.jsp /error.jsp WEB应用安全和数据库安全的领航者 开发人

39、员习惯了使用开发人员习惯了使用struts2的感叹号方式的动态方法调用,进行业务逻辑编码,如:的感叹号方式的动态方法调用,进行业务逻辑编码,如:add!user 例如:注册功能的实现,在同一类中实现。!),一个数据表对象的例如:注册功能的实现,在同一类中实现。!),一个数据表对象的CRUD操作,操作,C(增加即注册),及(增加即注册),及U(修改)用户权限;而(修改)用户权限;而R(List查询)、查询)、D(删除)(删除) 管理管理员权限,为代码员权限,为代码WEB应用安全和数据库安全的领航者 根据特征,根据特征,http:/ 马上就能猜解,马上就能猜解,http:/ ),对每个要执行方法做权限验证!),对每个要执行方法做权限验证! WEB应用安全和数据库安全的领航者 如果开发人员觉得这样的要求太高,对于类似的如果开发人员觉得这样的要求太高,对于类似的CRUD有权限要求的业务有权限要求的业务逻辑,最好不要在同一类中实现代码,并且不要使用有规则的方法命令。逻辑,最好不要在同一类中实现代码,并且不要使用有规则的方法命令。WEB应用安全和数据库安全的领航者4、Struts2标签使用,与基础漏洞原理一样?标签使用,与基础漏洞原理一样?Include 标签实现外部参数包含文件的功能,导致安全目录绕过!标签

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论