使用PHP编写文件的安全隐患

sus*_*its 5 php security caching

我目前正在尝试使用PHP创建一个CMS,纯粹是出于教育的兴趣.我希望管理员能够创建内容,这些内容将以纯HTML格式解析并保存在服务器存储上,以避免执行PHP脚本所产生的开销.不幸的是,我只能想到几种方法:

  • 在CMS应该要写入文件的每个目录上设置写权限.这听起来是个糟糕的主意.
  • 在单个cached目录上设置写权限.一个PHP脚本可以再include或者fopen/fread/echo从一个文件中的内容cached目录的请求时.这可能是以Mediawiki式的方式进行的:类似于index.php?page=xyz可以cached/xyz.html在运行时读取和回显内容.但是,我需要确保理智,$_GET['page']以防止令人讨厌的变化,如index.php?page=http://www.bad-site.org/malicious-script.js.

我个人对第二个想法并不太兴奋,但第一个想法听起来很不安全.有人可以建议一个很好的方法来完成这项工作吗?

编辑:我不喜欢从数据库中获取数据.我想要从数据库中获取数据的唯一时间是内容被缓存.其次,我无权访问memcached或任何PHP加速器.

tim*_*dev 2

由于您正在构建 CMS,因此您必须接受这样的事实:如果用户想要对访问者做坏事,他们很可能会这么做。无论您将内容存储在何处,都是如此。

如果公共站点都是静态内容,那么让CMS直接写入文件并没有什么问题。但是,您需要将 Web 服务器配置为不执行 CMS 可写入的任何目录中的任何内容。

即使您不想每次都访问数据库,也可以设置缓存以最大程度地减少数据库读取。 Zend_Cache对此非常有效,并且可以作为独立组件非常有效地使用。