admin 管理员组文章数量: 887021
2024年1月14日发(作者:class变成java)
1 Tomcat安全
1.1 背景介绍
Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。
尽管Tomcat的Web服务器功能较少,但是,Tomcat容易架设、容易移植、与其他服务器兼容性极好,相对于其它以C、C++所编写的Web服务器,Tomcat比较能忍受远程缓冲区溢出的攻击。因为Tomcat的Java虚拟机是位于网络及操作系统之间,它可以防止几乎所有类型的缓冲区溢出攻击。此外,Tomcat的运行速度也比较快,足以运行今日大多数的企业网站。因此,Tomcat服务器的应用也是极为广泛的。
在使用Tomcat服务器时,我们要避免错误的配置引起的安全问题,同时,也使用更合理的配置或插件来加强Tomcat的安全防护。
eCity平台定制化的Tomcat是基于apache-tomcat-6.0.18进行修改,在”..工具05 Tomcat安全”中提供,修改内容都有批注,其它产品可以借鉴。
1.2 Tomcat安全配置规范
Tomcat安全配置规范包括以下几部分
1.2.1 版本部署运行的策略
1.2.1.1 及时更新补丁或升级系统,使用最新最稳定的安全版本
说明:系统的最原始攻击来自其本身的漏洞,因此一定要做好其漏洞的防护。搜索Tomcat最新最稳定的安全版本和安全补丁,下载并安装。
该规则主要针对发布版本,至于现网正在运行的版本,需要评估更新Tomcat版本对产品产生的影响,并酌情把握。
实施指导:
下载最新最稳定的版本(以下提供的均为官方网址)
1. 在/上,查看Servlet和JSP规范对应的Tomcat版本,以及各版本的详细说明,以方便选择最合适的版本。
2. 在/download-**.cgi上下载最新最稳定的安全版本。目前仅推荐60和55系列的版本,即将网址中的**符号替换成60或者55。其他系列的版本已经归档,并且不再能得到支持。
安装步骤(以下皆以Tomcat6.0.20为例)
1. Window安装:
# 在/上下载程序
# 执行./
# 配置安装目录
# 进入Configuration配置界面
# 修改默认端口8080为其他不宜猜测的端口
# 修改默认管理员用户名admin
# 配置管理员密码为强口令
# 配置Java虚拟机路径为可用jre路径(建议版本在1.5以上)
# 进入安装等待状态
2. Unix安装
# 在/上,下载“Binary Distributions→Core”路径下的
# gzip -d
# tar -xvf
# cd ./apache-tomcat-6.0.20/bin
# ./
如需配置管理员,可以在./conf/文件中修改默认密码为强口令:
补丁
在安全报告/上,查找产品当前使用的版本所存在的安全漏洞,并根据安全报告中漏洞的威胁级别,以及产品本身的应用场景,选择下载补丁还是升级系统。
备注:一般不建议直接打补丁,建议升级到当前系列已被评估过的最新最稳定的安全版本。
1.2.1.2 用于运行Tomcat的用户必须是一个没有特权的用户:既无权访问非必须的文件,又不能执行非必须的程序
说明:缺省情况下,Java运行时根据运行它的用户授予安全权限。当Tomcat以系统管理员身份或作为系统服务运行时,Java运行时取得了系统用户或系统管理员所具有的全部权限。这样一来,Java运行时就取得了所有文件夹中所有文件的全部权限。并且Servlets(JSP在运行过程中要转换成Servlets)取得了同样的权限。所以Java代码可以调用Java SDK中的文件API列出文件夹中的全部文件,删除任何文件,最大的危险在于以系统权限运行一个程序。
该安全配置项需要每个产品都要严格执行。
实施指导:
Window环境:
1. 新建普通用户tomcatuser,确定新用户tomcatuser不属于管理员组。
2. 设置权限:为tomcatuser用户添加Tomcat安装目录的读、写、执行的权限;为tomcatuser用户添加应用程序(例如webapps)目录的只读权限;如果某些应用程序需要写权限,请单独为其配置tomcatuser的写权限。
3. 打开“控制面板→管理工具→服务”,在本地服务中找到“Apache Tomcat”,打开其属性,在“登录”页签中配置帐户为tomcatuser。
4. 以tomcatuser用户重新登录后启动Tomcat服务器,或者在DOS窗口以RUNAS命令启用tomcatuser帐号,打开Tomcat服务。
Linux环境:
1. 专门为Tomcat建立一个单独的用户和用户组。
# groupadd tomcatgroup
# useradd –g tomcatgroup tomcatuser –p tomcatuser
2. 设置权限:为tomcatuser用户添加Tomcat安装目录的读、写、执行的权限;为tomcatuser用户添加应用程序(例如webapps)目录的只读权限;如果某些应用程序需要写权限,请单独为其配置tomcatuser的写权限。
3. 以tomcatuser用户登录后启动Tomcat服务器。
1.2.1.3 删除Tomcat默认管理控制台或管理员帐户
说明:默认情况下,Tomcat存在管理控制台,其地址一般为[IP]:[Port]/admin。管理台的应用文件,在$tomcatserverwebapps下,有admin和manager两个应用。其用户密码,在$tomcatconf/中定义。在$tomcatwebapps下的和文件,定义了可以通过访问/admin和/manager进入控制台的通道。默认情况下,可以轻易的登录tomcat管理台,造成严重安全问题。
该安全配置项需要每个产品都要严格执行。
实施指导:
方法一:本方法适用于完全不需要使用默认控制台及相关功能的应用场景。
1. 删除$tomcatwebapps下和文件;
2. 删掉$tomcatconf/中的用户密码;
3. 删除$tomcatserverwebapps下的admin和manager两个应用;
4. 删除$tomcatwebapps下的admin和manager两个应用。
方法二:本方法适用于需要保留默认控制台和相关程序的应用场景。
1. 在$tomcat目录下新建一个myapps;
2. 在myapps下新建一个ROOT目录;
3. 修改配置文件$,将appBase的值修改为myapps:
1.2.1.4 删除安装过程文件、缺省安装的管理帮助文件及用户测试类的非必需文件 说明:默认的示例或测试应用容易被远程访问或执行,给系统带来相当的危害。该安全配置项需要每个产品都要严格执行。 实施指导: 1. 删除安装过程文件: //安装后删除 apache-tomcat-6.0.20.* //以6.0.20版本为例 2. 删除非必需的管理应用和帮助应用: $tomcatwebapss* Tomcat6之前的版本的版本还需要删除以下目录: $tomcatserverwebapps* 3. 删除系统示例程序和网页: $tomcatexamples //安装时可以选择不安装这部分 4. 删除用户测试类的非必需文件。 1.2.1.5 禁用应用程序自动部署功能 说明:默认情况下,tomcat启动时,会自动部署$appBase下面的所有应用。例如,当$appBase的值为webapps时,那么任意一个应用,只要被放进webapps目录下,在tomcat启动时,都会被发布。这有可能导致恶意或者未经测试的应用程序被自动部署在服务器上。因此,这里必须禁用掉Tomcat的自动部署功能。 实施指导: 修改配置文件$tomcat/conf/如下: autoDeploy="false" //自动部署 deployOnStartup="false" //在启动时自动部署 备注: 1. 如果文件中不存在deployOnStartup参数,则必须手工添加,因为该参数的默认值是true。格式位置如下: 2. 关闭自动部署功能后,Tomcat不会自动发布$appBase目录下的web应用。对需要发布的Web应用,需要手工部署。手工部署的推荐方法,是在文件的Host标签内新建一个context,格式如下: reloadable="false" //只在启动时加载该Web应用WEB-INF的lib和classes docBase="D:myapp" //应用程序的路径 workDir="D:myappwork" //该web应用的工作目录 /> 1.2.2 基本配置的安全策略 1.2.2.1 禁用不必要的http方法:DELETE、PUT、TRACE等 说明:Tomcat服务器提供默认http方法包括GET、HEAD、POST、PUT、DELETE、OPTIONS。在这些方法中,PUT、DELETE方法很少被使用到,并且极易被利用来进行攻击。 在配置前,需要了解产品是否会使用到这些HTTP方法,如果用不到这些方法,则必须禁用。开放这些方法会被APPSCAN等工具扫描出来,并被评为中级安全风险。 实施指导: 1. 禁用DELETE和PUT的方法: 在$tomcat/conf/检查readonly参数的值是否为true: 备注:如果不存在readonly参数,则不用配置,因为该参数的默认值为true;如果配置了该参数,则需要确保参数值为true。 2. 禁用Trace的方法: 在$tomcat/conf/禁用trace方法,即配置allowTrace为false: redirectPort="8443" allowTrace="false"/> 备注:如果不存在aloowTrace参数,则不用配置,因为该参数的默认值为false;如果配置了该参数,需要确保参数值为false。 3.在$tomcat/conf/文件的 1.2.2.2 禁用webdav 说明:WebDAV(Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的 一个通信协议。它为 HTTP 1.1 添加了一些扩展(就是在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。这存在一定的安全问题。Tomcat本身是支持WebDAV的,虽然需要进行配置才可以启用。 该安全配置项需要每个产品都要严格执行。 实施指导: 在配置文件$tomcat/conf/中,确保下面的配置节点不存在或者处于注释状态: ... 1.2.2.3 禁用Symbolic links 说明:Symbolic links是用来解决不同的web应用程序之间共享文件的一种方式。这会造成应用之间的相互影响,一个应用的安全漏洞,有可能影响到所有关联的应用,因此,这种方式在安全方面存在极大隐患。 该安全配置项需要每个产品都要严格执行。 实施指导: 1.在配置文件$tomcat/conf/中,确保每个context节点都没有allowLinking属性 2. 在配置文件$tomcat/conf/中,确保每个context节点都没有allowLinking属性 3. 在每个web应用的WEB-INF下检查是否存在文件,如果存在,请检查并确保每个context节点都没有allowLinking属性 1.2.2.4 定制Tomcat出错信息 说明:Tomcat在找不到网页时,会报404错误,错误页面上会附带当前服务器版本号。黑客可以通过版本号,查询当前Tomcat服务器的默认配置信息,以及该版本的安全漏洞。 定制化的错误文件可以参考”..工具05 Tomcat安全”目录中的文件。 实施指导: 在配置文件$tomcat/conf/的倒数第二行(即之前的那一行)添加如下内容: 备注:可以在文件中自定义出错提示信息,的大小必须大于512个字节,否则IE会自动调用自己的友好提示界面。特别提醒,禁止给响应吗302配置错误页面,否则所有重定向都将指向该错误页面。 1.2.2.5 关闭Tomcat的目录列表功能 说明:缺省情况下,访问tomcat下的一个web应用,如果输入是一个目录名,而且该目录下没有一个可用的welcome文件,那么tomcat会将该目录下的所有文件列出来,这种敏感信息泄露是严格禁止的。Tomcat5.0以后的版本出于安全考虑,默认的是关闭目录列表,但是为了程序调试方便,部分程序员也有可能开启这一功能。因此,要确认该项配置是否正确。 实施指导: 在配置文件$tomcat/conf/中修改listing参数的值为false: 1.2.2.6 更改Tomcat服务器默认端口 说明:Tomcat服务器提供一些默认端口,这些公开的端口很容易被黑客捕获利用,进而威胁到服务器和应用等。 需要注意产品的安装规划,安装规划中的端口规划不能为这些默认端口。 实施指导: 修改$home/conf/文件,更改默认端口为其他,例如: 1. 2. connectionTimeout="20000" redirectPort="6743" /> //默认端口8443 3. 1.2.2.7 限制http请求的消息主体的大小 说明:此指令给了服务器管理员更大的可控性,以控制客户端不正常的请求行为。在配置该属性前,需要了解业务是否有大数据量传输的可能性,如果有传输大数据的功能点,需要酌情提高消息主体的大小或者去掉该限制。 实施指导: 在配置文件$tomcat/conf/中的每个Connector的“maxPostSize”属性为10240: connectionTimeout="20000" maxPostSize="10240" redirectPort="8443" /> 备注:推荐请求体大小限制为10240Byte,如果产品有特殊需求,可以进行相应调整。 1.2.2.8 禁止配置Tomcat的网络连接超时时间为0或-1 说明:connectionTimeout为网络连接超时时间毫秒数,当配置为0或-1时,表示永不超时,在受到DOS攻击时,很快就会导致最大连接数被完全占用,进而导致Tomcat服务器 无法访问。因此这里禁止配置connectionTimeout为0和-1,通常推荐的超时时间为20s和30s。特殊情况下,请根据具体性能需求进行调优。 实施指导: 在配置文件$tomcat/conf/中的每个Connector的“connectionTimeout”属性为20000: connectionTimeout="20000" maxPostSize="10240" redirectPort="8443" /> 备注:如果产品有特殊性能需求,可以进行相应调整。 1.2.2.9 配置Tomcat的会话超时时间为10分钟 说明:Tomcat服务器提供的默认超时时间为30分钟,这个时间过长,除了导致空闲连接消耗的处理资源损失外,受攻击的时间窗也相应变长。 在配置会话超时是时间时,也是充分考虑用户的易用性,当模块较多但超时时间较短的产品,会给用户造成频繁退出的现象,使用起来感受较差,如eCity平台各个模块的默认会话超时时间就不能设置过短。 实施指导: 修改$tomcat下所有的配置文件如下: 1.2.2.10 关闭会话回收功能 说明:如果每个请求都建立一个自己的façade,那么该功能可以进行详细的列表录入,但是,该功能也有可能将这些请求的信息泄露给没有创建façade的其他请求。 实施指导: 在启动脚本$TOMCAT/bin/文件的启动分支语句中添加如下命令: -E_FACADES=false 备注:该参数仅出现在Tomcat6.0及其之后的版本中,且默认值为false。如果在启动脚本中未发现RECYCLE_FACADES参数,可以不用添加。 1.2.2.11 关闭crossContext功能 说明:当crossContext设置为true时,系统允许text调度另一个应用程序,这使得crossContext有创造恶意应用的可能,因此必须限制该功能。 实施指导: 在启动脚本中添加如下命令: -E_FACADES=false 备注:该参数仅出现在Tomcat6.0及其之后的版本中,且默认值为false。如果在启动脚本中未发现RECYCLE_FACADES参数,可以不用添加。 1.2.3 文件目录的控制权限 1.2.3.1 Tomcat根目录及其所有父目录只能由Tomcat属主用户修改(755) 说明:不仅文件本身,tomcat根目录及其父目录都必须只能由属主来改写 实施指导: 如果要配置Tomcat根目录为/home/tomcat,首先要确认/、/home、/home/tomcat目录都只有Tomcat属主用户才可以修改,其次要使用Tomcat属主用户执行下列命令: # chown 0 . bin conf # chgrp 0 . bin conf # chmod 755 . bin conf 备注:这里默认的属主是root用户。 1.2.3.2 可执行文件只能由Tomcat属主用户修改(511) 说明:如果允许非属主用户对由属主执行或读写的文件有写权限,则会危及系统。比如,别人有可能会覆盖可执行文件或脚本,那么下一次启动时,就会执行恶意代码。 实施指导: 设置可执行文件的权限,例如bin目录下的执行文件,使用Tomcat属主用户执行下列命令: # cd $tomcat/bin # chmod 511 * 1.2.3.3 配置文件只能由Tomcat属主用户修改(700) 说明:别人有可能会覆盖配置文件,从而获取更高的权限或者更多的信息。 实施指导: 设置可执行文件的权限,例如bin目录下的执行文件,使用Tomcat属主用户执行下列命令: # cd $tomcat/conf # chmod 700 * 1.2.3.4 日志文件只能由Tomcat属主用户修改和执行(700) 说明:如果日志目录对非属主用户是可写的,别人就有可能用一个指向其他敏感文件的连接来覆盖日志文件,使那个文件被改写为杂乱的数据。如果日志文件本身对非属主用户是可写的,别人就可能伪造日志。 实施指导: 使用Tomcat属主用户执行下列命令: # cd $tomcat # chmod 700 $tomcat/logs 1.2.3.5 只对管理员等少数用户开放的web服务,建议采用IP或IP段控制访问 说明:减少对外暴露的风险。 实施指导: 修改$tomcat/conf/配置文件如下: allow="*.," /> allow=”192.168.5.*" deny="192.168.1.*"/> 备注:其中,RemoteHostValve过滤的是主机名,RemoteAddrValve过滤的是IP地址,多个ip或多个域名之间,可以使用“,”分隔。 1.2.3.6 配置虚拟目录,用以隐藏后台路径 说明:隐藏后台路径,减少暴露给攻击者的威胁。 实施指导: 修改$tomcat/conf/配置文件如下: 备注:其中path的值是虚拟目录,docbase若是以盘符开始,则是硬盘目录的绝对路径,否则便是相对于$tomcat的相对路径。 1.2.4 SSI和CGI配置策略 1.2.4.1 禁用SSI和CGI功能 说明: SSI指令可以用于执行Tomcat JVM外部的程序,CGI脚本可以用于执行Tomcat的java虚拟机外部的程序,所以这是极度危险的。 实施指导: Tomcat默认不支持SSI和CGI,请确认配置文件$tomcat/conf/中,< servlet>标签下的SSI和CGI配置均处于xml注释状态。 1.2.4.2 不允许使用SetUID程序,尤其是root身份的SetUID程序 说明:setuid是一个非常危险的命令,它使任意用户在运行指定程序时,拥有该程序属主的权限。因此会带来极大的系统漏洞问题。所以如非必要,不要使用SetUID程序,尤其是root身份的SetUID程序。 实施指导: 1.找出使用SetUID的程序: find / -perm -2000 -exec ls -l {} ; 2.确认这些程序是否必须使用SetUID,并且只能通过SetUID来实现该功能,如果不是,请取消其SetUID: chmod –s programfile 1.2.5 日志访问控制策略 1.2.5.1 开启Tomcat的日志功能:正常的访问日志和错误请求日志。日志文件的记录中包含访问时间、内容、结果及请求用户的ip等关键信息 说明:这些日志可以提供异常访问的线索。Tomcat可以记录所有的访问请求,同样,异常的请求也会记录。日志文件可以记录系统发生的重要事件,可以帮助我们找到安全事件的原因等等,因此,日志文件必须包含访问的关键信息,例如请求用户的ip、访问的网址等。 注意,需要评估产品的功能是否会导致该类日志文件过大,如果过大,需要定期清理该日志,否则会造成服务器空间的急剧减小。 实施指导: 在配置文件$tomcat/conf/中,在 directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> 备注:该段信息默认存在 在上文配置信息中的pattern参数,是用来配置日志基本格式的。 一般情况下,pattern可以直接设置成两种方式:common和combined,他们的真实值如下: common :%h %l %u %t %r %s %b //基本已经符合规则要求 combined:%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i //增加了代理信息 参数值的具体含义如下: %a %A %b %B %h %H %l 记录访问者的IP 记录本地服务器的IP 发送信息的字节数,不包括http头,如果字节数为0的话,显示为“-” 发送信息的字节数,不包括http头 设置resolveHosts为false时,这里就是IP地址,否则就是服务器名称 访问者使用的协议,例如HTTP/1.1 登录标识中的逻辑用户名,通常返回值为“-” %m %p %q %r %s %S %t %u %U %v %D %T %I 请求的HTTP方法(GET,POST等) 访问的端口 查询字符串(即请求中?后面的部分) 请求头,即请求的第一行(例如 POST / HTTP/1.1) 响应请求的HTTP状态代码(例如 200,404等) 用户的会话ID 日期和时间 得到了验证的访问者,否则就是"-" 请求的URL地址 服务器名称 请求响应时间,单位是毫秒 请求响应时间,单位是秒 当前请求的线程名称(可以在后期用来堆栈比较) 1.2.6 已知安全漏洞防护 1.2.6.1 防护UTF-8导致的目录跨越漏洞 说明:该问题属于Tomcat5.5.27和Tomcat6.0.17之前的版本。漏洞的起因,在于Tomcat处理UTF-8编码时,没有正确转换,从而导致在处理包含%c0%ae%c0%ae的url时转换为类似../的形式,使得可以遍历系统任意文件,包括/etc/passwd等。 实施指导: 方法一:为适应国际通用性,必须使用UTF-8的产品,建议通过升级修正该漏洞: 1. Tomcat5.5系列的版本,必须升级到5.5.27之后的稳定版本 2. Tomcat6.0系列的版本,必须升级到6.0.17之后的稳定版本 方法二:非必须应用UTF-8的产品,可以通过禁用UTF-8的方式规避该漏洞: 1. 打开配置文件$tomcat/conf/和$tomcat/conf/ 2. 禁用allowLinking 3. 禁用URIencoding,或者设置URIencoding不等于UTF8 1.2.7 安全模块及工具 1.2.7.1 让Tomcat服务器在"监牢"中运行 说明: Linux内核的chroot机制。chroot是内核中的一个系统调用,软件可以通过调用库函数chroot,来更改某个进程所能见到的根目录。比如,一旦目录权限设定失误,被攻击的Tomcat进程可能会访问到Tomcat安装目录的父目录,甚至整个文件系统,因为Tomcat进程所处的根目录仍是整个文件系统的根。如果能够利用chroot将Tomcat限制在$tomcat内部,那么,Tomcat所能存取的文件都是$tomcat下的文件或其子目录下的文件。创建chroot"监牢"的作用就是将进程权限限制在文件系统目录树中的某一子树中。 实施指导: 使用linux内核的chroot机制 这种方法的优点是无需进行另外的安装,直接使用root用户进行配置,缺点则是要将大量的、最终要用的各类库及相关配置文件等copy到虚拟根目录中。 1.以Tomcat用户登录, # mkdir $chroot ///$chroot为希望建立的根目录 # cd $chroot # mkdir etc lib bin sbin usr home //建立chroot环境必须具备的目录 # cd usr # mkdir bin sbin lib local # cd .. # cp /bin/bash bin //将必须的程序、文件等拷贝到虚拟根目录中 # ldd /bin/bash //检查一下上面的bash程序用到哪些库 .1 => (0xffffe000) .4 => /lib/.4 (0x40036000) .4 => /lib/.4 (0x40062000) .5 => /lib/.5 (0x40069000) .2 => /lib/.2 (0x400ae000) .6 => /lib/tls/.6 (0x400b2000) /lib/.2 (0x40000000) # cp /lib/{.4, .4, .5, .2,.2} lib # cp /lib/tls/.6 lib //将这些库文件拷贝到虚根对应的目录中 如果需要用到其他的程序,可以像bash一样操作,将它们和它们的库文件拷贝到虚拟根目录的对应位置。 2.以root权限的用户登录, # cd $chroot # chroot . /bin/bash //启动监牢,在监牢中运行tomcat 但是具有root权限的用户,能够突破监牢,所以我们要采用降权之后的身份运行程序。 1. 使用降权用户 # cd $chroot # cp /usr/bin/sudo ./usr/bin //采用步骤1中的方式,将sudo和它的库文件 ...... //复制到虚拟根目录 # cp /etc/passwd ./etc # vi ./etc/passwd //修改虚根下的passwd文件,只保存用户tomcat …… //或者修改伪造其他多余用户的信息 # sudo chroot . /bin/bash //如果不想使用sudo,也可以自己编写程序 1.2.8 其它设置 其它的Tomcat设置可能无助于安全防护,但是有助于WEB应用性能的提升。 设置一:修改采用非阻塞IO接收请求,提高Tomcat并发处理效率。 1. 打开配置文件$tomcat/conf/,将启用端口的连接器协议按红字方式修改: redirectPort="8443" URIEncoding="utf-8" maxThreads="100" maxKeepAliveRequests="1"/> 设置二: 打开Tomcat响应压缩功能,降低网络开销提高效率。 1. 打开配置文件$tomcat/conf/,将启用端口的连接器协议按红字方式修改: connectionTimeout="20000" maxThreads="100" compression="on" compressionableMimeType="text/html,text/xml,text/javascript,text/plain,applicatioin/json" redirectPort="7443" URIEncoding="UTF-8" allowTrace="false" />
版权声明:本文标题:Tomcat安全 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705204333h476837.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论