实际上,让包含 PHP 脚本的文件带有 .html 扩展名可以提供更多的安全性,而不是更少。这种被称为“默默无闻的安全”的安全性提供了少量的保护。当恶意黑客遇到 HTML 页面时,他/她可能会假设该页面是由 HTML 生成的,而不是包含 PHP 脚本的页面的输出。但是,如果黑客很老练,他/她可以通过检查 Web 服务器返回的标头信息来验证您是否在服务器上运行 PHP。最好设置 php.ini 设置expose_php = Off 以避免在标头信息中暴露 PHP;见Manual。
如果您使用 .htaccess 文件或能够修改您的 Web 服务器配置设置,它将通过 PHP 解释器解析所有 HTML 文件(包括那些包含纯 HTML 的页面)来影响性能。发送不需要 PHP 解析的页面无疑是一种浪费的努力,但是所涉及的时间量据说是微不足道的。如果您可以修改 Web 服务器的配置文件中的设置,那会更好,因为使用 .htaccess 文件可能会导致您的网站运行缓慢。
这种安全性本身不足以提供最佳安全性。您仍然必须将所有表单数据视为可能受到污染并对其进行验证。了解您的表单值应该是什么并测试这些值。最好的安全性涉及多层保护。
请参阅Manual,了解有关“默默无闻的安全性”的更多想法。请注意,该页面不建议将 URL 重写作为安全措施,尽管它是一个选项。人们应该对 URL 重写有一个很好的理解,因为这个主题远非微不足道。
"...配置mod_rewrite很容易出错
变成安全问题。”(见Apache Week, mod_rewrite)
但是,如果您忽略在 php.ini 文件中设置 expose_php = Off,则 URL 重写可能不会像您想象的那样真正隐藏 PHP。如果您运行包含此行的 php 脚本:
print_r(get_headers($url,1));
当我将 $url 设置为我最喜欢的网站之一的页面时,您可以获得一些非常有启发性的信息,如下部分结果所示:
Array
(
[0] => HTTP/1.1 200 OK
[Server] => nginx/1.6.2
[Date] => Thu, 18 Dec 2014 09:59:06 GMT
[Content-Type] => text/html; charset=utf-8
[Connection] => close
[X-Powered-By] => PHP/5.5.11-2