我正在一个用户可以用HTML语言编辑页面的网站上工作。我想在每个页面添加一个菜单栏,它从数据库加载一些信息,所以它必须是一个PHP文件。为了实现这一点,我在.htaccess文件的HTML页面中启用了PHP代码。问题是用户现在可以在他们的HTML文件中编写一些PHP内容并运行它。我怎么能解决这个问题?是否有其他方法可以自动将菜单栏添加到所有用户的所有页面?
答案 0 :(得分:3)
您的困境有多种选择:
您可以使用HTMLPurifier
(您可能还想这样做)来清理用户提交的内容。这也将摆脱PHP。
将用户提交的页面保存到普通.html
页面时,可以正确注入菜单栏。 (你仍然会遇到有害的Javascript提交。)
和/或使用更严格的包装程序脚本,该脚本不执行用户数据。
类似的东西:
<?php
readfile("menubar.html");
readfile("userdata/" . basename($_GET["htmlpage"]));
readfile("footer.html");
然后设置RewriteRule来通过该脚本管道所有html文件请求:
# in userdata/
RewriteRule ^(\w+\.html)$ ../addmenubar.php?htmlpage=$1