我正在为我的一个站点编写一个基本的 CMS,并且遇到了一些页面需要动态服务 PHP 和 JS 的问题,而其他页面则是普通的 HTMl。我希望有一个设置可以允许需要它的页面使用它,并将加载 ACE 编辑器而不是不同的所见即所得编辑器。我想拒绝在非代码启用页面上编码的任何输入。如何确保数据库中包含的所有 JS 和 PHP 都不会执行?
问问题
96 次
1 回答
0
你真的不想这样做。如果你做错了,除了安全问题之外,这将成为一个绝对的维护噩梦——没有很好的方法将 CMS 页面放入版本控制中。在开发环境和实时站点之间测试和迁移代码充其量会变得脆弱。 在我的另一篇文章中,我详细介绍了运行 Drupal 站点时遇到的问题,而您也开始走类似的道路。
话虽如此,如果您坚持执行此计划,那么要走的路是使用适当的模板引擎(我最近一直在使用h2o)并将内容转义的担忧留给它。我要做的另一件事是将 PHP 和代码的可显示部分分开,方法是将它们放在完全独立的字段中。这不仅为您提供更清晰的代码(记住,混合显示和逻辑是不好的),而且您始终可以将显示的内容视为“哑”文本,并且只允许它通过模板访问 PHP 的输出。
于 2012-10-04T18:56:12.803 回答