php的函数伪静态也是这样做出来的。
以下是函数伪静态所用的函数:
function MakeUrl($arr){
foreach($arr as $key=>$value){
$url[]=$key."_".$value;
}
$tmpurl=implode("_",$url);
return $tmpurl.".htm";
}
function ParseUrl(){
if($_SERVER['PATH_INFO']!=""){
$pathinfo=substr($_SERVER['PATH_INFO'],1);
$pathinfo=str_replace(".htm","",$pathinfo);
$path=explode("_",$pathinfo);
$count=count($path);
for($i=0;$i<$count;$i+=2){
$_GET[$path[$i]]=$path[$i+1];
}
}
}
//使用实例,链接页面
$path="http://www.tiaotiaola.com/blog.php/";
$path.=MakeUrl(array('BlogID'=>2,'page'=>1));
以上两行代码生成页面中的URL。
//浏览页面,调用函数ParseUrl();直接可以使用变量$_GET
当然,很多MVC框架中,均支持这样的功能,但在MVC框架中,并不一定是用上面两个函数实现的了。
其实,它不仅是伪静态所需。同时也是MVC所必须要的功能。这是因为,MVC中的所谓的单一入口,也是凭此功能实现的。
我们可以见到很多网站,链接象 http://www.tiaotiaola.com/s/2/3/4/5.html
实际是经过.htaccess,或者是UrlRewrite处理过的。未处理之前是:http://www.tiaotiaola.com/s.php/2/3/4/5.html
s.php一定是MVC的入口文件。
这就是说,s.php/2/3/4/5.html这样的文件,均会当成PHP文件被执行。
关于文件上传漏洞问题。本文首发时,讲到的 some.php.png 会被当成PHP执行,实际是因某一类设置错误造成的。
而对于 some.php%3Fpng,即便存在这样的文件,相对于APACHE服务器的安全性,此文件也是禁止访问的。
当然:some.png.php肯定是不能上传到服务器上的。
但这也并不是说,上传就是完全安全。仍然存在通过上传文件名实现的URL的嵌入攻击。解决 URL的嵌入攻击的办法则是:
对所有的上传文件均进行改名。即不保存原始文件名。如果要保存,则必须去掉文件名中的"."以及其它可能有攻击性的语法。
我们推荐的做法是不保存原始文件名,即对原始文件名用md5或sha进行hash,如果要区分上传时间,可以加上时间戳,即生成的是纯a-z0-9文字的文件名。最后加上原始扩展名即可。
另一个方面:假如黑客能够攻击到操纵你的SHELL,那么,some.php.png则是可以被执行的。从这一点来说,关键不是在上传这一边控制,而是如何禁止服务器的远程脚本运行的安全配置问题了。
————————————————————————————————————————
后记:感谢1 楼 aweber 指出文中的错误。 此文发布时,有些问题,未经完全测试确认。
分享到:
相关推荐
本文将详细讲解PHP实现伪静态的相关知识点,并结合提供的文件列表进行解析。 首先,我们来理解什么是PHP伪静态。在PHP中,伪静态是通过特定的规则(通常是重写URL)将动态页面的请求转换为静态页面的路径,而实际上...
ASP.NET伪静态技术是Web开发中的一个重要概念,它主要用于优化网站的搜索引擎友好度(SEO)以及提高用户体验。在传统的ASP.NET应用程序中,URL通常会显示实际的文件路径和扩展名,例如“Default.aspx”或...
在PHP开发中,性能优化和实现伪静态是两个重要的议题,它们对于提升网站的加载速度、用户体验以及搜索引擎优化(SEO)都有显著作用。下面将详细阐述这两个知识点。 **PHP优化全通** PHP优化通常涉及以下几个方面: ...
在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...
本话题涉及的是将基于PHP的ThinkPHP3.1.3框架的项目升级到兼容PHP7,并且配置Nginx服务器来支持伪静态。下面将详细阐述这两个主要知识点。 **一、ThinkPHP3.1.3升级至PHP7** ThinkPHP3.1.3是一款在中国广泛应用的...
#### 二、真静态与伪静态的优缺点分析 ##### 2.1 真静态(html)的优缺点 **优点**: 1. **减轻服务器负担**:由于真静态页面不需要实时从数据库中获取数据,因此可以显著降低服务器的数据响应负荷。 2. **加载速度较...
【标题】"基于PHP的SK动漫伪静态缓存开源php版源码.zip" 提供的是一种使用PHP语言实现的动漫网站伪静态缓存系统。在Web开发中,伪静态技术通常用于将动态网页以静态HTML的形式展示给用户,提高网站的访问速度和搜索...
在【标签】"php"中,我们再次确认了这个项目与PHP编程语言密切相关,这可能包括PHP的语法、函数库、MVC框架(如Laravel、CodeIgniter等)的使用,以及PHP与数据库交互(如MySQL)等技术。 然而,由于提供的【压缩...
- 对于云函数中的ThinkPHP6.0应用,确保遵循最佳安全实践,例如限制API访问权限,加密敏感数据,以及定期更新依赖库以防止潜在的安全漏洞。 - 腾讯云提供丰富的监控和报警功能,可以帮助开发者实时了解函数的运行...
【标题】"基于PHP的Flash小游戏伪静态版源码.zip" 涉及的主要知识点是PHP编程语言在创建Web应用程序,特别是与Flash小游戏相关的伪静态技术。PHP是一种广泛使用的开源服务器端脚本语言,尤其适合Web开发,可以嵌入到...
本篇文章将深入探讨如何使用DLL函数查看器来查看C语言编写的DLL文件的入口函数。 首先,我们要理解DLL文件的结构。在C语言中,DLL的入口点通常是`DllMain`函数,这是DLL加载和卸载时被系统调用的地方。`DllMain`...
【39健康问答伪静态PHP源码解析】 39健康问答是一个在线健康咨询平台,而“伪静态”技术则是为了优化网站的搜索引擎友好性及用户体验而设计的一种技术手段。在这个基于PHP的39健康问答系统中,源码实现了将动态URL...
【PHP实例开发源码-问问程序php伪静态不完整版.zip】这个压缩包文件主要包含了一个基于PHP语言的问答程序的源代码,但请注意,它并非完整的版本,可能缺失某些功能或模块。在这个实例中,我们可以深入探讨PHP编程...
需要注意的是,由于我们在静态函数中发送信号,所以必须使用`QObject::connect`的C++11语法,这样可以连接到静态信号和静态槽。 然而,由于静态函数无法直接访问非静态成员,如果想要在静态信号发射时传递数据,...
在IT行业中,MVC(Model-View-Controller)是一种广泛使用的软件设计模式,特别是在Web应用程序开发中。在本文中,我们将深入探讨...确保对用户上传的文件进行安全检查,防止恶意文件上传,以保护服务器和用户的安全。
【描述】中的信息简洁明了,与标题一致,表明这是一个基于PHP的项目,主要服务于电影资源的抓取、伪静态处理和高速缓存,可能是一个网站后台系统或者爬虫程序。 【标签】"PHP"提示我们这个项目的核心技术是PHP,这...
【标题】:“基于PHP的最新的搜搜问问php商业版(伪静态)源码.zip”指出这是一个使用PHP编程语言开发的搜索引擎或问答系统。"搜搜问问"可能是一个类似百度知道或者腾讯问问的在线问答平台,它允许用户提出问题、回答...
【标题】"基于PHP的SK电影伪静态缓存极速版v1.1源码"指出,这是一款使用PHP编程语言开发的电影网站源代码,它实现了伪静态和缓存技术,旨在提高网站的访问速度和用户体验。在互联网行业中,伪静态技术是将动态URL...
一般地,线程要读写类的私有成员变量,只有两种方法:将全局函数声明为类友元friend,或者使用静态的成员函数static。那非静态的成员函数呢?一般地方都说的是,不行,做不了。。。为什么不行?都是代码区的代码,...
在本文中,我们将深入探讨...在实际项目中,可能还需要考虑安全性问题,例如防止恶意文件上传、确保文件存储的安全性,以及优化文件上传性能等。因此,理解并掌握这些基本知识对于构建一个健壮的文件上传系统至关重要。