我目前正在尝试使用PHP创建一个CMS,纯粹出于教育兴趣。我希望管理员能够创建内容,这些内容将被解析并以纯HTML形式保存在服务器存储上,以避免执行PHP脚本所产生的开销。不幸的是,我只想到了几种方法:
- 在CMS想要写入文件的每个目录上设置写入权限。这听起来像一个相当糟糕的主意。 - 在单个cached目录上设置写入权限。然后,PHP脚本可以在请求时从cached目录中的文件中包含或fopen/fread/echo内容。这可能可以以Mediawiki-esque的方式进行:类似于index.php?page=xyz的东西可以在运行时从cached/xyz.html读取和回显内容。但是,我需要确保$_GET['page']的健全性,以防止像index.php?page=http://www.bad-site.org/malicious-script.js这样的恶意变体。 - 我个人对第二个想法并不是太感兴趣,但第一个听起来非常不安全。请问有人能提出一个好的完成此任务的方法吗?
编辑:我不赞成从数据库中获取数据。我只有在缓存内容时才想从数据库中获取数据。其次,我没有访问memcached或任何PHP加速器的权限。
- 在CMS想要写入文件的每个目录上设置写入权限。这听起来像一个相当糟糕的主意。 - 在单个cached目录上设置写入权限。然后,PHP脚本可以在请求时从cached目录中的文件中包含或fopen/fread/echo内容。这可能可以以Mediawiki-esque的方式进行:类似于index.php?page=xyz的东西可以在运行时从cached/xyz.html读取和回显内容。但是,我需要确保$_GET['page']的健全性,以防止像index.php?page=http://www.bad-site.org/malicious-script.js这样的恶意变体。 - 我个人对第二个想法并不是太感兴趣,但第一个听起来非常不安全。请问有人能提出一个好的完成此任务的方法吗?
编辑:我不赞成从数据库中获取数据。我只有在缓存内容时才想从数据库中获取数据。其次,我没有访问memcached或任何PHP加速器的权限。