10-03
09
网站安全预警禁止.shtm.shtml等类型文件上传
作者:shmshz 日期:2010-03-09
也就是Server Side Include--SSI 服务器端包含指令一些Web Server有SSI功能的话。会对shtml文件运行SSL代码。 先扫一次shtml文件看没有特殊的SSI指令现在。 有就按Web Server设定规则解释SSI指令。 解释完后跟一般html一起传至去客户端。……
测试上传一个文件 ceshi.shtm至根目录,里面写入以下代码
复制内容到剪贴板
程序代码
程序代码<!--#include file="conn.asp"-->
这样的结果直接打开ceshi.shtm地址显示为空白,可以查看此页面的源代码却发现,里面竟然是conn.asp文件的全部内容,这样的问题可想而知会……
如果您的网站运行上传此类文件的话,那么可能您的网站的安全性!!给您带来的安全隐患也是不容忽视的!!
此类文件后缀(可使用SSI)的有shtm,shtml,stm,asp,cer,cdx,asa 等等这些后缀的文件,要知道这些隐患影响的不只是asp 、asp.net等这些win主机,还会影响到php 的linux主机。
什么是SSI?
SSI直译服务器端包含(Server Side Includes),由字面上看由WEB在服务器提供的一种功能,并且是在服务器端进行的。一般说来,要完成较复杂的任务(如:聊天室/留言本等),必须设计专门的CGI或ASP程序;但是如果只是想给网页加上简单的功能(如:显示一篇文档,web服务器环境变量,关于该文档的更新日期/大小等),则只要SSI就可以完成了。SSI则是直接由服务器解释执行的,须要WEB服务器软件支持SSI。
而且,由于直接在服务器端执行SSI,产生相应HTML代码;所以对客户端没有限制,不会产生因为不同浏览器而产生不同的观看效果。
SSI有什么用?
目前,主要有以下几种用用途:
1、 显示服务器端环境变量<#echo>
2、 将文本内容直接插入到文档中<#include>
3、 显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
4、 直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
5、 设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)
高级SSI<XSSI>可设置变量使用if条件语句。
使用SSI很容易吧?
SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:
<!--#include file="info.htm"-->
就是一条SSI指令,其作用是将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。
其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。
当然,如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。
目前,主要有以下几种用用途:
1、显示服务器端环境变量<#echo>
2、将文本内容直接插入到文档中<#include>
3、显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
4、直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
5、设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式) 高级SSI<XSSI>可设置变量使用if条件语句。
如何使你的Apache服务器支持SSI?
Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。我这里以windows平台的Apache 2.0.x为例:打开conf目录下的httpd.conf文件,搜索“AddType text/html .shtml”,搜索结果:
# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml
把这两行前面的#去掉。
然后搜索“Options Indexes FollowSymLinks”
在搜索到的那一行后面添加“ Includes”
即将该行改变为:
Options Indexes FollowSymLinks Includes
保存httpd.conf,重起apache即可。
开启shtml
打开文件 ./include/config.inc.php <?php
//数据库配置信息
define('DB_HOST', 'localhost'); //数据库服务器主机地址
define('DB_USER', 'root'); //数据库帐号
define('DB_PW', 'root'); //数据库密码
define('DB_NAME', 'phpcmsutf'); //数据库名
define('DB_PRE', 'phpcms_'); //数据库表前缀,同一数据库安装多套Phpcms时,请修改表前缀
define('DB_CHARSET', 'utf8'); //数据库字符集
define('DB_PCONNECT', 0); //0 或1,是否使用持久连接
define('DB_DATABASE', 'mysql'); //数据库类型
//网站路径配置
define('PHPCMS_PATH', '/cms/phpcms_utf/'); //Phpcms框架访问路径,相对于域名
//shtml 支持
define('SHTML', 0); //是否支持 shtml,需要服务器支持,并且生成文件扩展名为 shtml
将它:
define('SHTML', 0); //是否支持 shtml,需要服务器支持,并且生成文件扩展名为 shtml
改成:
define('SHTML', 1); //是否支持 shtml,需要服务器支持,并且生成文件扩展名为 shtml
如果您是独立主机建议禁止此类文件上传,并且关闭ssi功能,如果是虚拟主机或合租主机,那么也请禁止此类文件上传,为您的网站加固加固!!!
评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇:在网站上加上翻译当前页成...
下一篇:双木杉子图片天气预报v1...

文章来自:
Tags:
相关日志:
